使用说明

项目简介

MCP-OpenAPI 是一个 MCP 服务器,它可以读取 OpenAPI 规范文件,并将其中定义的 HTTP API 接口转换为 MCP 协议的工具 (Tools)。这样,大型语言模型 (LLM) 就可以通过标准的 MCP 协议调用这些 HTTP API,从而扩展 LLM 的功能。

主要功能点

  • OpenAPI 到 MCP 工具转换: 自动将 OpenAPI 规范中定义的 HTTP API 接口转换为 MCP 工具,方便 LLM 调用。
  • 支持 OpenAPI 3.0 和 3.1: 兼容 OpenAPI 3.0 和 3.1 规范,支持 JSON 和 YAML 格式的规范文件。
  • 灵活的端点选择: 可以通过路径模式、HTTP 方法、标签等多种方式,灵活地选择需要暴露为 MCP 工具的 API 接口。
  • 多种传输协议: 支持 Stdio 和 SSE (Server-Sent Events) 两种 MCP 传输协议。

安装步骤

  1. 环境准备: 确保你的系统中已安装 Python 和 pip (Python 包管理工具)。
  2. 安装 mcp-openapi: 在命令行终端中执行以下命令安装 'mcp-openapi' 包:
    pip install mcp-openapi

服务器配置

MCP 服务器需要配置在 MCP 客户端中。以下是一个配置示例,展示了如何配置一个名为 "openapiServer" 的 MCP 服务器,该服务器将 OpenAPI 规范转换为工具并使用 'stdio' 协议与客户端通信。

{
  "mcpServers": {
    "openapiServer": {
      "command": "uvx",
      "args": [
        "mcp-openapi",
        "--openapi-url=<OpenAPI 规范 URL>",
        "stdio"
      ]
    }
  }
}

配置参数说明:

  • 'openapiServer': 你为这个 MCP 服务器自定义的名称,客户端通过这个名称来引用它。
  • 'command': 启动 MCP 服务器的命令。这里使用 'uvx mcp-openapi',你需要确保 'uvx' (uvicorn + pipx) 已安装,或者替换为 'python -m mcp_openapi.cli'。
  • 'args': 传递给 'mcp-openapi' 命令的参数列表:
    • '--openapi-url': 必填参数。指定 OpenAPI 规范文件的 URL 地址。请将 '<OpenAPI 规范 URL>' 替换为实际的 URL,例如 'http://localhost:8000/openapi.json' 或 'https://petstore3.swagger.io/openapi/v3/openapi.json'。
    • 'stdio': 指定使用 Stdio (标准输入输出) 作为 MCP 传输协议。你也可以替换为 'sse' 来使用 SSE 协议。

更多配置选项:

除了 '--openapi-url' 和传输协议,你还可以通过以下参数或环境变量 (以 'FASTMCP_' 为前缀) 配置服务器:

  • '--fastmcp-debug': 启用调试模式 (布尔值)。
  • '--fastmcp-log-level': 设置日志级别,例如 'DEBUG', 'INFO', 'WARNING', 'ERROR' (字符串)。
  • '--fastmcp-sse-host': 当使用 SSE 协议时,指定服务器监听的主机地址 (字符串,默认为 '0.0.0.0')。
  • '--fastmcp-sse-port': 当使用 SSE 协议时,指定服务器监听的端口号 (整数,默认为 '8000')。

基本使用方法

  1. 准备 OpenAPI 规范: 你需要有一个可访问的 OpenAPI 规范文件 URL。这可以是本地文件服务器、远程服务器上的文件或者公开的 API 规范 URL。
  2. 配置 MCP 客户端: 根据你的 MCP 客户端 (例如 Claude) 的配置方法,将上面提供的服务器配置 JSON 添加到客户端的配置文件中,并将 '<OpenAPI 规范 URL>' 替换为你的 OpenAPI 规范文件 URL。
  3. 启动 MCP 客户端: 启动你的 MCP 客户端应用程序。客户端将根据配置连接到 MCP-OpenAPI 服务器。
  4. 在 LLM 中使用工具: 现在,LLM 应该能够识别并调用由 OpenAPI 规范转换而来的工具了。工具的名称通常对应于 OpenAPI 规范中 Operation Object 的 'operationId' 字段。你可以在 LLM 的提示词中指示它使用这些工具来完成特定任务。

例如,如果你的 OpenAPI 规范中有一个 'getTodos' 的 operationId,你可以在提示词中这样指示 LLM: "请使用 'getTodos' 工具获取所有待办事项。"

信息

分类

网页与API