项目简介
Quilt MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在将 Quilt 数据目录的功能和信息以标准化的方式暴露给大型语言模型 (LLM) 客户端。它管理数据资源、提供丰富的工具集,并支持可定制的 LLM 交互模式。
主要功能点
- 数据资源管理: 托管并提供对 Quilt 数据包和 S3 存储桶的访问能力,支持浏览、搜索和信息查询。
- 工具注册与执行: 提供超过80种工具,涵盖身份验证、权限管理、包操作(创建、更新、删除)、元数据模板、Athena/Glue 数据目录集成、Tabulator 表管理、工作流编排等。
- 统一搜索: 提供智能的统一搜索功能,能够跨 Quilt 目录、包和 S3 存储桶进行自然语言查询。
- 权限与安全: 支持 AWS 权限发现和细粒度的访问控制。
- 性能优化与错误恢复: 内置性能优化和错误恢复机制,确保服务稳定可靠。
- 可视化与摘要: 能够为 Quilt 包自动生成 'quilt_summarize.json' 文件和可视化图表,增强数据可读性。
安装步骤
- 克隆仓库:
git clone https://github.com/quiltdata/quilt-mcp-server.git cd quilt-mcp-server - 安装 'uv' (推荐):
项目推荐使用 'uv' 进行依赖管理和虚拟环境设置。如果尚未安装 'uv',请先安装:
curl -LsSf https://astral.sh/uv/install.sh | sh # 确保 uv 命令行可用,可能需要添加到 PATH (例如:export PATH="$HOME/.cargo/bin:$PATH") - 安装依赖并运行:
使用 'uv' 安装项目依赖并启动服务器:
uv sync # 直接运行 uvx quilt-mcp # 或者安装到全局环境 uv tool install quilt-mcp quilt-mcp
服务器配置
MCP 服务器通常由 MCP 客户端(如 Claude Desktop, Claude CLI 或自定义 LLM 客户端)启动和管理。客户端通过 'mcp.json' 配置文件来指定如何启动 Quilt MCP 服务器。
以下是一个典型的 'mcp.json' 配置示例及参数说明:
{ "mcpServers": { "quilt": { "command": "uvx", // 启动服务器的命令,这里使用 uvx 来运行隔离的 Python 环境 "args": ["quilt-mcp"], // 传递给命令的参数,quilt-mcp 是服务器的入口程序 "env": { "QUILT_CATALOG_DOMAIN": "yourcompany.quiltdata.com", // [可选] 您的 Quilt 数据目录的域名,例如 demo.quiltdata.com "QUILT_DEFAULT_BUCKET": "s3://your-default-bucket", // [可选] 默认的 S3 存储桶 URI,当工具未明确指定存储桶时使用 "AWS_PROFILE": "your-aws-profile-name" // [可选] AWS 凭证配置文件名,用于访问 S3、Athena 等 AWS 服务,例如 default } } } }
- 'command':MCP 客户端将执行此命令来启动 Quilt MCP 服务器进程。
- 'args':提供给 'command' 的参数列表。
- 'env':设置服务器进程的环境变量。这是配置 Quilt MCP 服务器行为的关键方式:
- 'QUILT_CATALOG_DOMAIN':您的 Quilt 数据目录的完整域名(例如 'demo.quiltdata.com'),服务器将使用此域名连接到 Quilt 平台。
- 'QUILT_DEFAULT_BUCKET':一个默认的 S3 存储桶 URI(例如 's3://your-data-lake'),当工具未明确指定存储桶时,将使用此默认值。
- 'AWS_PROFILE':用于 AWS 身份验证的配置文件名称,例如 'default' 或您在 '~/.aws/credentials' 中定义的任何自定义配置文件。
基本使用方法
一旦服务器通过 MCP 客户端启动并配置完毕,LLM 客户端即可通过 JSON-RPC 协议与 Quilt MCP 服务器通信。
LLM 客户端可以调用的 MCP 方法包括:
- 'tools/list':获取服务器注册的所有可用工具及其描述。
- 'tools/call':调用指定的工具并传递参数。
示例 (LLM 客户端内部逻辑,用户无需操作):
- LLM 客户端发送初始化请求:
{"jsonrpc": "2.0", "id": 1, "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "llm-client", "version": "1.0.0"}}} - LLM 客户端请求工具列表:
{"jsonrpc": "2.0", "id": 2, "method": "tools/list", "params": {}} - LLM 客户端调用具体工具(例如列出包):
{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "packages_list", "arguments": {"registry": "s3://your-default-bucket", "limit": 10}}}
服务器会接收这些请求,执行相应的 Python 函数(MCP 工具),并将结果以 JSON-RPC 响应的形式返回给 LLM 客户端。
信息
分类
数据库与文件