使用说明
项目简介
SkySQL MCP Server 是一个基于 Model Context Protocol (MCP) 实现的后端服务器,旨在为 LLM 应用提供上下文信息和功能支持。它通过 RESTful API 管理和提供资源、工具和 Prompt 模板,使 LLM 客户端能够以标准化的方式获取和利用这些能力。该服务器示例集成了 SkySQL API,展示了如何通过 MCP 服务器调用外部服务。
主要功能点
- 工具 (Tools) 管理与执行: 提供工具列表查询和工具调用接口,允许 LLM 客户端发现并执行预定义的工具,例如获取 SkySQL 拓扑信息。
- 资源 (Resources) 管理: 声明和提供可用的资源,例如 SkySQL API 拓扑资源,为 LLM 提供数据访问入口。
- Prompt 模板 (Prompts) 管理: 提供 Prompt 模板管理,允许 LLM 客户端获取预定义的 Prompt 内容,以定制 LLM 的行为模式。
- API 优先设计: 采用 RESTful API 设计,使用 FastAPI 框架构建,提供 Swagger UI 和 ReDoc API 文档。
- 基础安全: 支持 API Key 认证,保护服务器接口安全。
安装步骤
-
克隆仓库
git clone https://github.com/chinnuvani/test-sky-mcpserver.git cd test-sky-mcpserver -
创建并激活虚拟环境 (推荐)
python -m venv venv source venv/bin/activate # Linux/macOS # venv\Scripts\activate # Windows -
安装依赖
pip install -r requirements.txt -
配置环境变量 复制 '.env.example' 文件为 '.env',并根据需要修改 '.env' 文件中的配置,例如 API 密钥等。虽然示例中 'SKYSQL_API_KEY' 已硬编码在 'config.py' 中,但建议通过环境变量配置。
服务器配置
MCP 客户端需要配置连接到 MCP 服务器的信息。以下是一个 JSON 格式的配置示例,用于描述如何启动和连接 SkySQL MCP Server:
{ "serverName": "skysql-mcp-server", "command": "python", "args": [ "server.py" ], "transports": [ // 可用的传输协议,当前示例未明确支持 JSON-RPC over WebSocket 或 SSE,主要通过 HTTP API 交互 { "type": "http", // 使用 HTTP 协议 "baseUrl": "http://localhost:8000" // 服务器基础 URL,根据实际运行地址修改 } ], "capabilities": [ // 服务器声明的能力,可用于客户端的能力协商和功能发现 "tools", "resources", "prompts" ] }
配置参数说明:
- 'serverName': 服务器名称,客户端用于标识和管理不同的 MCP 服务器连接。
- 'command': 启动服务器的命令,这里使用 'python' 解释器。
- 'args': 启动命令的参数,'server.py' 是服务器主程序入口。
- 'transports': 支持的传输协议列表。
- 'type': 传输协议类型,这里使用 'http' 表示 HTTP 协议。
- 'baseUrl': 服务器的根 URL,客户端通过此 URL 发送请求。
- 'capabilities': 服务器声明的功能能力,表明该服务器支持工具、资源和 Prompt 管理等 MCP 核心功能。
注意: 此配置为基础 HTTP API 交互方式,更完整的 MCP 实现可能包含 WebSocket 或 SSE 等传输协议支持,并在 'transports' 中进行配置。客户端需要根据实际 MCP 服务器的实现和支持的协议进行配置。
基本使用方法
-
启动服务器 在项目根目录下,运行以下命令启动服务器:
python server.py或者使用 uvicorn 启动:
uvicorn server:app --reload服务器默认运行在 'http://localhost:8000'。
-
访问 API 文档 启动服务器后,访问 'http://localhost:8000/docs' 或 'http://localhost:8000/redoc' 查看 Swagger UI 或 ReDoc 风格的 API 文档,了解可用的 API 端点和请求参数。
-
测试工具列表接口 可以使用 'curl' 或 Postman 等工具,向服务器发送 GET 请求,获取可用的工具列表:
curl http://localhost:8000/tools/list预期响应:
{ "tools": [ { "name": "get_skysql_topologies", "description": "Get available topologies from SkySQL API", "parameters": { "type": "object", "properties": { "service_type": { "type": "string", "description": "Type of service to get topologies for", "enum": [ "transactional", "analytical" ] } }, "required": [ "service_type" ] } } ] }这表明服务器已成功提供工具列表功能。
-
测试工具调用接口 调用 'get_skysql_topologies' 工具,获取 SkySQL 拓扑信息:
curl -X POST \ -H "Content-Type: application/json" \ -d '{"tool_name": "get_skysql_topologies", "parameters": {"service_type": "transactional"}}' \ http://localhost:8000/tools/call请注意,实际调用 SkySQL API 可能需要有效的 API Key 和 SkySQL 账号。示例代码中使用了硬编码的 API Key 和 mock 数据,可能需要根据实际情况配置和调整。
总结
SkySQL MCP Server 提供了一个基础的 MCP 服务器框架,实现了工具、资源和 Prompt 的管理和访问接口。虽然示例较为简单,但展示了 MCP 服务器的核心概念和功能,可以作为构建更完整 MCP 服务器的起点。对于 LLM 应用开发者,可以基于此框架扩展更多工具和资源,以满足不同的应用场景需求。
信息
分类
AI与计算