使用说明

项目简介

mcpo (MCP OpenAPI Proxy) 是一个实用工具,旨在弥合 Model Context Protocol (MCP) 服务器和 OpenAPI 生态系统之间的差距。它作为一个代理服务器,将任何 MCP 工具以前端友好的 OpenAPI 形式暴露出来,使得开发者可以轻松地将原本基于 MCP 协议的工具集成到各种支持 OpenAPI 标准的 LLM 应用、工具和工作流中。mcpo 简化了集成过程,无需复杂的协议转换或额外的代码编写。

主要功能点

  • OpenAPI 兼容性: 将 MCP 工具即时转换为标准的 OpenAPI 接口,使其能够与广泛的 OpenAPI 工具、SDK 和 UI 兼容。
  • 自动文档生成: 为每个 MCP 工具自动生成交互式的 OpenAPI 文档(Swagger/Redoc),方便开发者理解和使用。
  • 简化集成: 无需修改现有的 MCP 服务器或编写额外的胶水代码,即可将 MCP 工具接入 OpenAPI 环境。
  • 安全性和稳定性: 基于成熟的 HTTP 协议,为 MCP 工具提供更安全、更稳定的访问方式。
  • 多工具支持: 通过配置文件,可以同时代理多个 MCP 工具,并为每个工具生成独立的 OpenAPI 接口。

安装步骤

  1. 确保你的系统已安装 Python 3.8 或更高版本。
  2. 使用 pip 安装 mcpo:
    pip install mcpo
    推荐使用 'uv' 获得更快的安装和启动速度。

服务器配置 (MCP 客户端配置)

MCP 客户端(如 LLM 应用)需要配置连接到 mcpo 代理服务器的 OpenAPI 端点,而不是直接连接到原始 MCP 服务器。你需要先启动 mcpo,并指定它需要代理的 MCP 服务器的启动命令。

单 MCP 服务器配置示例:

假设你有一个 MCP 服务器,其启动命令为 'uvx mcp-server-time --local-timezone=America/New_York',你可以使用以下命令启动 mcpo 代理:

mcpo --port 8000 -- uvx mcp-server-time --local-timezone=America/New_York

在这个例子中,mcpo 将在 'http://localhost:8000' 端口启动,并将所有发送到该端口的请求代理到 'uvx mcp-server-time --local-timezone=America/New_York' 这个 MCP 服务器。MCP 客户端应配置连接到 'http://localhost:8000'。

多 MCP 服务器配置示例:

你可以使用配置文件来管理和代理多个 MCP 服务器。创建一个名为 'config.json' 的文件(或其他你喜欢的名称),内容如下:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "time": {
      "command": "uvx",
      "args": ["mcp-server-time", "--local-timezone=America/New_York"]
    }
  }
}

然后使用以下命令启动 mcpo 并指定配置文件路径:

mcpo --config /path/to/config.json

在这个配置下,mcpo 将会代理 "memory" 和 "time" 两个 MCP 服务器。它们将分别可以通过 'http://localhost:8000/memory' 和 'http://localhost:8000/time' 访问。

基本使用方法

  1. 根据上述配置示例启动 mcpo 代理服务器,确保指定了正确的 MCP 服务器启动命令或配置文件路径。
  2. 访问 mcpo 服务器的 OpenAPI 文档界面。对于单服务器配置,访问 'http://localhost:8000/docs';对于多服务器配置,访问 'http://localhost:8000/<tool_name>/docs' (例如 'http://localhost:8000/time/docs')。
  3. 在你的 LLM 应用或 OpenAPI 客户端中,配置连接到 mcpo 服务器的 URL (例如 'http://localhost:8000'),并使用生成的 OpenAPI schema 来调用 MCP 工具。MCP 工具会被暴露为 mcpo 服务器根路径下的 POST 端点 (例如 'http://localhost:8000/<tool_name>')。

信息

分类

网页与API