项目简介
Data Product MCP Server 是一个实现了 Model Context Protocol (MCP) 的应用后端,专注于管理数据产品和数据契约。它为大型语言模型 (LLM) 或其他AI助手提供一个标准化的接口,使其能够以受治理的方式发现、理解和查询企业内的数据资产。
主要功能点
- 数据资产管理: 能够加载和组织来自不同来源(如本地文件、Data Mesh Manager)的数据产品和数据契约。
- 契约合规性: 帮助LLM理解和遵守数据使用的数据契约规范。
- 智能数据查询: 允许通过自然语言或SQL查询各种存储系统中的数据。
- 联邦查询: 支持跨多个数据产品进行数据连接和查询(处于Alpha阶段)。
- 灵活识别: 支持多种数据资产标识符格式(如 'local:product/orders.dataproduct.yaml', 'datameshmanager:contract/123')。
- 插件架构: 提供可扩展的插件系统,方便集成新的数据资产来源和数据查询引擎。
安装步骤
-
前提条件:
- Python 3.11 或更高版本。
- 推荐安装 'uv' (一个快速的 Python 包安装和解析工具) 或使用 'pip'。
-
快速安装:
- 推荐使用 uv: 在项目根目录下运行命令 'uv pip install -e .'
- 使用 pip: 在项目根目录下运行命令 'pip install -e .'
服务器配置
作为MCP服务器,该项目需要由MCP客户端(如兼容MCP的LLM应用或桌面工具)启动和管理。MCP客户端通过配置服务器信息来连接和使用本服务器。典型的MCP客户端配置通常是JSON格式,包含服务器的名称、启动命令、参数和环境变量。
以下是配置本Data Product MCP服务器所需的关键信息描述,您可以根据您的MCP客户端的要求填写到其配置文件中:
- 服务器名称: 为此服务器指定一个标识名称,例如 '"dataproduct"'。
- 启动命令 (command): 客户端用于启动服务器的可执行命令。如果使用 'uv',命令通常是 '"uv"';如果直接使用 'python',命令通常是 '"python"'。
- 启动参数 (args): 传递给启动命令的参数列表。这些参数会告诉Python如何运行服务器。根据仓库信息,常见的参数包括:
- 指定运行目录(如果需要):'"--directory", "<path_to_folder>/dataproduct-mcp"' (将 '<path_to_folder>/dataproduct-mcp' 替换为本仓库在您系统上的实际路径)。
- 指定运行的Python模块:'"python", "-m", "dataproduct_mcp.server"' (如果您在命令中已经使用了 '"python"') 或者直接 '"-m", "dataproduct_mcp.server"' (如果您在命令中使用了 '"uv run"')。
- 指定服务器模式(如果需要):'"--server"'。
- 环境变量 (env): 服务器运行时需要的环境变量字典。最关键的环境变量是 'DATAASSET_SOURCE',它指定了本地数据资产文件(如 '.dataproduct.yaml', '.datacontract.yaml')所在的目录路径。例如:
- '"DATAASSET_SOURCE": "<path_to_folder>/dataproduct-mcp/examples"' (将 '<path_to_folder>/dataproduct-mcp/examples' 替换为您存放本地数据资产文件的实际目录路径)。
- 根据需要,还可以配置其他环境变量来启用和配置 Data Mesh Manager、S3 或 Databricks 等数据源。
基本使用方法
服务器启动后,兼容MCP的LLM客户端可以通过JSON-RPC调用服务器提供的工具来与数据产品进行交互:
- 列出数据产品: 客户端可以调用 'dataproducts_list' 工具来获取所有可用数据产品的列表。服务器将返回包含数据产品标识符(如 'local:product/orders.dataproduct.yaml')的列表。
- 获取数据产品详情: 客户端可以使用从 'dataproducts_list' 获取到的完整标识符调用 'dataproducts_get' 工具,以获取特定数据产品的详细定义内容。
- 获取契约模式: 如果数据产品定义中包含对数据契约的引用 ('dataContractId'),客户端可以使用该契约的标识符(需要包含来源前缀,例如 'datameshmanager:contract/orders_pii_v2')调用 'dataproducts_get_output_schema' 工具,获取数据契约的完整内容。
- 查询数据: 客户端可以调用 'dataproducts_query' 工具来对一个或多个数据产品执行SQL查询。需要提供一个 'sources' 列表,指定要查询的数据产品标识符和可选的别名,以及要执行的SQL查询语句。
LLM客户端将根据其能力和用户指令,自动规划并调用上述工具来访问和利用数据产品提供的信息。
信息
分类
AI与计算