使用说明

项目简介

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 认证,保护服务器接口安全。

安装步骤

  1. 克隆仓库

    git clone https://github.com/chinnuvani/test-sky-mcpserver.git
    cd test-sky-mcpserver
  2. 创建并激活虚拟环境 (推荐)

    python -m venv venv
    source venv/bin/activate   # Linux/macOS
    # venv\Scripts\activate  # Windows
  3. 安装依赖

    pip install -r requirements.txt
  4. 配置环境变量 复制 '.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 服务器的实现和支持的协议进行配置。

基本使用方法

  1. 启动服务器 在项目根目录下,运行以下命令启动服务器:

    python server.py

    或者使用 uvicorn 启动:

    uvicorn server:app --reload

    服务器默认运行在 'http://localhost:8000'。

  2. 访问 API 文档 启动服务器后,访问 'http://localhost:8000/docs' 或 'http://localhost:8000/redoc' 查看 Swagger UI 或 ReDoc 风格的 API 文档,了解可用的 API 端点和请求参数。

  3. 测试工具列表接口 可以使用 '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"
            ]
          }
        }
      ]
    }

    这表明服务器已成功提供工具列表功能。

  4. 测试工具调用接口 调用 '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与计算