使用说明

项目简介

OpenAPI-MCP 旨在通过 Model Context Protocol (MCP) 协议,使大型语言模型 (LLM) 能够无缝访问和利用 OpenAPI 定义的外部 API。它能够动态读取 OpenAPI/Swagger 规范,自动注册 API 接口为工具,并以 JSON-RPC 2.0 标准格式与客户端通信,为 LLM 应用提供可扩展的 API 上下文服务。

主要功能点

  • 动态工具生成:自动加载 OpenAPI 规范(JSON/YAML),提取 API 接口信息并注册为 MCP 工具。
  • JSON-RPC 2.0 兼容:所有响应均符合 JSON-RPC 2.0 标准,包含顶层 'server_name' 字段,易于集成。
  • 详细的帮助信息:为工具提供参数说明和使用帮助。
  • 认证支持:支持直接访问令牌和 OAuth client_credentials 认证。
  • LLM 集成:通过 MCP 协议将 API 接口注册为工具,可被 LLM 直接调用,例如 cursor 和 windsurf 等 MCP 客户端。

安装步骤

  1. 创建虚拟环境 (推荐):
    python3 -m venv venv
  2. 激活虚拟环境:
    • Linux/macOS:
      source venv/bin/activate
    • Windows:
      venv\Scripts\activate
  3. 安装依赖:
    pip install -r requirements.txt

服务器配置

MCP 客户端需要配置以下 JSON 以连接到 OpenAPI-MCP 服务器。请根据实际使用的 OpenAPI 服务修改 'OPENAPI_URL' 环境变量。

{
    "mcpServers": {
        "openapi_server_name": {  //  MCP 服务器名称,客户端根据此名称调用
            "command": "bash",
            "args": [
                "-c",
                "source venv/bin/activate && python3 src/openapi-mcp.py --server openapi_server_name api list-endpoints" //  服务器启动命令,openapi_server_name 为服务器自定义名称,api list-endpoints 为启动参数,列出所有可用工具
            ],
            "env": {
                "OPENAPI_URL": "https://api.met.no/weatherapi/locationforecast/2.0/swagger"  //  OpenAPI 规范的 URL,指向需要代理的 API
            }
        }
    }
}

配置参数说明:

  • 'server_name': MCP 服务器的名称,例如 'openapi_server_name',客户端通过此名称来识别和调用该服务器。
  • 'command': 启动服务器的命令,这里使用 'bash -c' 执行一段组合命令。
  • 'args': 传递给 'bash -c' 的参数数组,用于执行实际的服务器启动命令。
    • '"source venv/bin/activate && python3 src/openapi-mcp.py --server openapi_server_name api list-endpoints"': 首先激活虚拟环境,然后运行 'openapi-mcp.py' 脚本。
      • '--server openapi_server_name': 指定 MCP 服务器的名称为 'openapi_server_name',应与 'mcpServers' 配置中的名称一致。
      • 'api list-endpoints': 指定 'openapi-mcp.py' 运行 'api' 服务的 'list-endpoints' 动作,用于列出所有可用的 API 接口(工具)。
  • 'env': 环境变量配置。
    • 'OPENAPI_URL': 必须配置,指向您要代理的 OpenAPI 规范文档的 URL。OpenAPI-MCP 将根据此 URL 加载 API 定义。

注意:

  • 您可以根据需要修改 'server_name' 和 'openapi_server_name' 为更具描述性的名称,但要确保在 MCP 客户端配置、'mcpServers' 配置和服务器启动命令中保持一致。
  • 如果您的 OpenAPI 服务需要 OAuth 认证,请配置 'OAUTH_CLIENT_ID', 'OAUTH_CLIENT_SECRET', 'OAUTH_SCOPE', 'OAUTH_TOKEN_URL' 等环境变量。
  • 如果您的 OpenAPI 服务使用直接访问令牌认证,请配置 'AUTH_TOKEN' 环境变量。

基本使用方法

  1. 列出可用工具 (endpoints): MCP 客户端连接到 OpenAPI-MCP 服务器后,可以请求列出所有可用的工具(即 OpenAPI 定义的 API 接口)。服务器将返回 JSON-RPC 格式的响应,其中包含工具的名称、描述和参数信息。

  2. 获取工具帮助: MCP 客户端可以请求获取特定工具的详细帮助信息,包括工具的描述、参数列表和参数说明。

  3. 调用工具 (endpoint): MCP 客户端可以使用工具名称和参数来调用 API 接口。参数以键值对的形式提供。服务器将执行 API 调用,并将 API 响应封装在 JSON-RPC 响应中返回给客户端。

示例命令 (在服务器端执行,用于测试和调试):

  • 列出所有 endpoints (工具)

    python3 src/openapi-mcp.py api list-endpoints --output json
  • 获取指定 endpoint 的帮助信息

    python3 src/openapi-mcp.py api call-endpoint --name get__compact help
  • 调用 endpoint 并传递参数

    python3 src/openapi-mcp.py api call-endpoint --name get__compact --param lat=60 --param lon=10
  • Dry-run 模式 (模拟调用,不实际发送 API 请求)

    python3 src/openapi-mcp.py api call-endpoint --name get__compact --param lat=60 --param lon=10 --dry-run

通过以上配置和使用方法,您可以将 OpenAPI-MCP 集成到您的 MCP 客户端中,使 LLM 能够利用 OpenAPI 定义的 API 功能。

信息

分类

网页与API