MCP协议转换器

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

  • by nikhiltidke101
  • Python
  • 混合部署
  • 更新于
在 GitHub 查看 nikhiltidke101/mcpo-sanity

使用说明

⚡️ mcpo

立即将任何MCP工具作为OpenAPI兼容的HTTP服务器公开。

mcpo是一个非常简单的代理,它接受MCP服务器命令,并通过标准的RESTful OpenAPI进行访问,因此您的工具“只适用于”需要OpenAPI服务器的LLM代理和应用程序。

没有自定义协议。没有胶水代码。没有麻烦。

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

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

  • 🔓 天生不安全
  • ❌ 与大多数工具不兼容
  • 🧩 缺少文档、身份验证、错误处理等标准功能。

mcpo解决了所有这些问题,无需额外努力:

  • ✅ 可立即与OpenAPI工具、SDK和UI配合使用
  • 🛡 使用可信的web标准增加安全性、稳定性和可扩展性
  • 🧠 自动为每个工具生成交互式文档,无需配置
  • 🔌 使用纯HTTP——没有套接字,没有粘合代码,没有意外

感觉上的“多一步”实际上是更少的步骤,结果更好。

mcpo让你的人工智能工具变得可用、安全和可互操作——现在,没有任何麻烦。

🚀 快速使用

我们建议使用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" --headers '{"Authorization": "Bearer token", "X-Custom-Header": "value"}' -- http://127.0.0.1:8001/sse

要使用兼容Streamable 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.

🤝 要在启动服务器后与Open WebUI集成,请查看我们的 文档.

🔄 使用配置文件

您可以通过以下单个配置文件为多个MCP工具提供服务 克劳德桌面 格式:

通过以下方式开始:

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

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
  • http://localhost:8000/time

每个都有一个专用的OpenAPI模式和代理处理程序。访问完整架构UI: http://localhost:8000/<tool>/docs (例如/内存/docs,/时间/docs)

🔧 需求

  • Python 3.8+
  • uv(可选,但强烈建议用于性能+包装)

🛠️ 开发与测试

要在本地贡献或运行测试,请执行以下操作:

  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.

🪪 许可证

麻省理工学院

🤝 贡献

我们欢迎并强烈鼓励社区的贡献!

无论你是在修复bug、添加功能、改进文档,还是只是分享想法,你的投入都是非常有价值的,有助于使mcpo对每个人都更好。

入门很容易:

  • 分叉回购
  • 创建新分支
  • 进行更改
  • 打开拉取请求

不确定从哪里开始?欢迎打开问题或提出问题——我们很乐意帮助您找到一个好的第一个任务。

✨ 明星历史


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