项目简介

MCP生成器2.0是一个先进的代码生成工具,能将任何OpenAPI 3.x规范自动转换为基于FastMCP 2.x框架构建的生产级MCP服务器。它实现了REST API与AI代理之间的桥接,通过自动生成的MCP工具,使AI助手(如Claude、ChatGPT)能够与您的现有API进行交互。生成的服务器支持企业级认证、模块化架构、全面的中间件,并支持Stdio和HTTP/SSE等多种传输协议。

主要功能点

  • OpenAPI转MCP服务器: 将您的API的OpenAPI规范(JSON/YAML格式)自动转换为一个功能完备的MCP服务器。
  • 工具生成: 从OpenAPI规范中定义的API操作自动生成可供大型语言模型(LLM)调用的MCP工具。
  • 认证支持: 内置对JWT令牌验证、JWKS(JSON Web Key Set)发现和OAuth2认证流(包括客户端凭据、授权码等)的支持。
  • 模块化架构: 为API规范中的每个主要API类别生成独立的服务器模块,便于管理和扩展。
  • 生产就绪: 包含自动生成的测试套件、详细的日志、错误处理中间件以及SSE(Server-Sent Events)事件存储,支持生产级部署。
  • 多种传输: 支持Stdio(标准输入输出)和HTTP/SSE传输协议,兼容各种MCP客户端。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/quotentiroler/mcp-generator-2.0.git
    cd mcp-generator-2.0
  2. 安装Python依赖:
    # 推荐使用 uv
    uv sync
    # 或者使用 pip
    pip install -e .
  3. 安装OpenAPI Generator CLI:
    # 使用 npm 安装 (推荐)
    npm install -g @openapitools/openapi-generator-cli

服务器配置(MCP客户端连接信息)

MCP客户端(如Claude Desktop、Cursor等)需要配置MCP服务器的启动命令。以下是一个通用的MCP客户端配置示例,请根据您的实际情况替换占位符。

{
  "mcpServers": {
    "your_api_server_name": {
      "command": "python",
      "args": [
        "/path/to/generated_mcp/your_api_server_name_mcp_generated.py",
        "--transport", "stdio"
      ],
      "env": {
        "BACKEND_API_TOKEN": "您的后端API令牌(如需认证,请在此提供)"
      }
    }
  }
}

配置参数说明:

  • '"your_api_server_name"': 这是您MCP服务器的唯一标识名称,通常根据您的OpenAPI API标题自动生成(例如,'swagger_petstore_openapi')。您可以通过运行 'uv run register-mcp list' 查看注册的服务器名称。
  • '"command"': 启动MCP服务器所使用的执行命令。通常为 '"python"'。
  • '"args"': 传递给 'command' 的参数列表。
    • '/path/to/generated_mcp/your_api_server_name_mcp_generated.py': 这是您生成的MCP服务器主脚本的完整文件路径。您需要将其替换为实际的本地路径。
    • '--transport': 指定MCP服务器的传输协议。
      • '"stdio"': 适用于本地AI客户端(如Claude Desktop、Cursor),通过标准输入/输出进行通信。
      • '"http"': 适用于远程AI客户端,通过HTTP协议进行通信。如果选择此项,可能还需要 '--host' 和 '--port' 参数。
    • '--host': (仅HTTP模式) 指定服务器绑定的IP地址,例如 '"0.0.0.0"'。
    • '--port': (仅HTTP模式) 指定服务器监听的端口,例如 '"8000"'。
    • '--validate-tokens': (仅HTTP模式) 如果需要MCP服务器验证JWT令牌,请添加此参数。
  • '"env"': 一个字典,用于设置MCP服务器运行时的环境变量。
    • '"BACKEND_API_TOKEN"': 您的后端API认证所需的Bearer令牌。在STDIO模式下,MCP服务器会将此令牌转发给您的后端API。在HTTP模式下,客户端通常直接在'Authorization'头中提供令牌。

基本使用方法

  1. 生成MCP服务器:

    • 使用本地OpenAPI规范文件(默认 './openapi.json'):
      uv run generate-mcp
    • 使用自定义规范文件:
      uv run generate-mcp --file ./my-api-spec.yaml
    • 从URL下载并生成:
      uv run generate-mcp --url https://petstore3.swagger.io/api/v3/openapi.json

    成功生成后,您的MCP服务器代码将输出到当前目录下的 'generated_mcp/' 目录中。

  2. 运行MCP服务器:

    • 通过注册表运行 (推荐):
      1. 将生成的服务器注册到本地:
        uv run register-mcp ./generated_mcp
      2. 以STDIO模式运行(适用于本地AI客户端):
        export BACKEND_API_TOKEN="您的API令牌" # Windows 用户使用: set BACKEND_API_TOKEN="您的API令牌"
        uv run run-mcp your_api_server_name
      3. 以HTTP模式运行(适用于远程AI客户端):
        uv run run-mcp your_api_server_name --mode http --port 8000
    • 直接Python运行:
      1. 进入生成的MCP服务器目录:
        cd generated_mcp
      2. 以STDIO模式运行:
        python your_api_server_name_mcp_generated.py --transport stdio
      3. 以HTTP模式运行:
        python your_api_server_name_mcp_generated.py --transport http --port 8000 --validate-tokens
  3. 与AI客户端集成: 根据AI客户端的要求,将上述MCP服务器的启动命令和相关参数添加到客户端的配置中。例如,对于Claude Desktop,您通常需要在 '~/.claude/claude_desktop_config.json' 文件中添加相应的 'mcpServers' 配置。

信息

分类

开发者工具