MCP协议转换服务

mcpo是一个简单的代理工具,可将MCP服务器命令转换为兼容OpenAPI的HTTP服务器,使工具能够与LLM代理和期望OpenAPI服务器的应用程序无缝协作。

  • by ba0f3
  • Python
  • 混合部署
  • 更新于

使用说明

⚡️ MCP(海军陆战队司令)

立即将任何MCP工具暴露为兼容OpenAPI的HTTP服务器。

MCPo 是一个极其简单的代理,它接收 MCP 服务器命令,并通过标准的 RESTful OpenAPI 使其可访问,因此您的工具可以“无缝工作”与期望使用 OpenAPI 服务器的 LLM 代理和应用程序。

无需自定义协议。无需粘合代码。省心省力。

🤔 为什么要使用mcpo而不是原生MCP?

MCP服务器通常通过原始的stdio进行通信,即:

  • 解锁:本质上不安全
  • ❌ 与大多数工具不兼容
  • 缺少标准功能,如文档、认证、错误处理等。

MCPo 解决了所有这些问题——而且无需额外努力:

  • ✅ 立即与OpenAPI工具、SDK和用户界面协同工作
  • 🛡 通过使用可信的网络标准,增强安全性、稳定性和可扩展性
  • 🧠 自动为每个工具生成交互式文档,无需配置
  • 🔌 使用纯HTTP——无需套接字,无需粘合代码,毫无意外

感觉像是“再走一步”的,实际上是更少的步骤却能带来更好的结果。

MCPo 让您的 AI 工具即刻可用、安全且可互操作,无需任何繁琐步骤。

🚀 快速使用

我们建议使用uv来实现闪电般的启动速度和零配置。

uvx mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command

或者,如果你使用的是Python:

pip install mcpo
mcpo --port 8000 --api-key "top-secret" -- your_mcp_server_command

要使用与SSE兼容的MCP服务器,只需指定服务器类型和终端节点:

mcpo --port 8000 --api-key "top-secret" --server-type "sse" -- http://127.0.0.1:8001/sse

你也可以为SSE连接提供请求头:

mcpo --port 8000 --api-key "top-secret" --server-type "sse" --header '{"Authorization": "Bearer token", "X-Custom-Header": "value"}' -- http://127.0.0.1:8001/sse

要使用支持HTTP的可流式传输MCP服务器,请指定服务器类型和端点:

mcpo --port 8000 --api-key "top-secret" --server-type "streamable-http" -- http://127.0.0.1:8002/mcp

您也可以无需安装,通过 Docker 运行 mcpo:

docker run -p 8000:8000 ghcr.io/open-webui/mcpo:main --api-key "top-secret" -- your_mcp_server_command

示例:

uvx mcpo --port 8000 --api-key "top-secret" -- uvx mcp-server-time --local-timezone=America/New_York

就是这样。您的MCP工具现已通过http://localhost:8000访问,并附带了生成的OpenAPI架构——请在此处进行实时测试: http://localhost:8000/docs 翻译为中文是:“本地主机8000端口文档页面”。不过,通常我们不会直接翻译网址,而是描述其用途或内容,比如“访问本地开发服务器的文档页面,地址为8000端口”。在这里,“localhost”表示本地计算机,“8000”是端口号,“/docs”通常指向文档或API说明的路径.

🤝(握手) 在服务器启动后,要与Open WebUI集成,请查看我们的 文档。

🔄 使用配置文件

你可以通过一个遵循(特定格式或规范的)单一配置文件来管理多个MCP工具 Claude Desktop(中文可译为“克劳德桌面版”或根据具体语境简化为“克劳德桌面”,但通常直接保留原名以体现品牌特色) 格式。

启用热重载模式 --hot-reload 自动监控您的配置文件变化,并在不中断服务的情况下重新加载服务器:

启动方式:

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

或者在启用热加载的情况下:

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

示例 config.json:

{
  "mcpServers": {
    "memory": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    },
    "time": {
      "command": "uvx",
      "args": ["mcp-server-time", "--local-timezone=America/New_York"]
    },
    "mcp_sse": {
      "type": "sse", // Explicitly define type
      "url": "http://127.0.0.1:8001/sse",
      "headers": {
        "Authorization": "Bearer token",
        "X-Custom-Header": "value"
      }
    },
    "mcp_streamable_http": {
      "type": "streamable-http",
      "url": "http://127.0.0.1:8002/mcp"
    } // Streamable HTTP MCP Server
  }
}

每个工具都将在其唯一的路由下可访问,例如:

  • http://localhost:8000/memory 翻译为中文是:“本地主机上的8000端口内存页面”。不过,通常我们不会直接这样翻译网址,而是根据网址所指向的内容或功能来描述,比如“访问本地主机8000端口的内存相关页面”或“查看本地服务器8000端口的内存信息页面”,具体翻译需根据上下文确定
  • http://localhost:8000/time 翻译为中文是:“本地主机的8000端口上的时间服务”。不过,通常我们不会直接这样翻译网址,而是根据网址的内容和用途来解释其含义。在这个例子中,可以理解为访问本地运行的一个服务器(监听8000端口)上的时间相关页面或接口

每个都有其专用的OpenAPI架构和代理处理器。访问完整的架构用户界面,请前往: http://localhost:8000/<tool>/docs (例如 /memory/docs, /time/docs)

🔧 要求

  • Python 3.8及以上版本
  • 紫外线(可选,但强烈建议用于性能测试+包装)

🛠️ 开发与测试

要在本地进行贡献或运行测试:

  1. 设置环境:

    # Clone the repository
    git clone https://github.com/open-webui/mcpo.git
    cd mcpo
    
    # Install dependencies (including dev dependencies)
    uv sync --dev
    
  2. 运行测试:

    uv run pytest
    
  3. 在本地运行并应用活动更改:

    跑步 mcpo 从特定分支(例如。, my-feature-branch):

    # Ensure you are on your development branch
    git checkout my-feature-branch
    
    # Make your code changes in the src/mcpo directory or elsewhere
    
    # Run mcpo using uv, which will use your local, modified code
    # This command starts mcpo on port 8000 and proxies your_mcp_server_command
    uv run mcpo --port 8000 -- your_mcp_server_command
    
    # Example with a test MCP server (like mcp-server-time):
    # uv run mcpo --port 8000 -- uvx mcp-server-time --local-timezone=America/New_York
    

    这允许你在提交更改或创建拉取请求之前,以交互方式测试你的更改。访问你本地运行的 mcpo 实例在 http://localhost:8000 以及自动生成的文档位于 http://localhost:8000/docs.

🪪 许可证

麻省理工学院(MIT)

🤝 贡献(或“参与贡献”)

我们欢迎并热烈鼓励社区成员的贡献!

无论你是在修复漏洞、添加功能、改进文档,还是仅仅分享想法——你的贡献都极为宝贵,并有助于让mcpo对每个人来说都变得更好。

开始使用很简单:

  • 为仓库创建分支(或:克隆仓库)
  • 创建一个新分支
  • 做出你的更改
  • 打开一个拉取请求

不知道从哪里开始?请随时提交一个问题或提出疑问——我们很乐意帮助你找到一个合适的入门任务。

✨ 星辰历史


✨ 让我们一起构建未来互操作性的AI工具!