OpenAPI反向代理

mcpo-proxy是一个轻量级的OpenAPI反向代理,用于多个MCP服务器,作为OpenWebUI的单一OpenAPI入口点,动态路由请求到配置的MCP后端。

  • by gamersalpha
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 gamersalpha/mcpo-proxy

使用说明

🧠 mcpo代理

mcpo代理 是用于多个MCP(模型上下文协议)服务器的轻量级OpenAPI反向代理。 它充当OpenWebUI的单个OpenAPI入口点,同时将请求动态路由到配置的MCP后端。


🚀 特性

  • 🔁 动态生成 /openapi.json 每个MCP的端点
  • 🌐 全局端点 /openapi.json 列出所有MCP服务器
  • 🔗 通过简单的路径重写为每个MCP提供智能HTTP代理
  • ⚙️ 可通过安装进行配置 config.json
  • 🐳 Docker就绪,兼容Synology/Portainer
  • 📦 轻量级映像(<150MB)

📁 项目结构

mcpo-proxy/
├── Dockerfile
├── docker-compose.yml
├── package.json
├── server.js
└── config/
    └── config.json  # Mounted from host

🛠 配置

这 config/config.json 文件定义了要代理的MCP后端列表:

{
  "servers": {
    "puppeteer_mcp": {
      "type": "mcp",
      "mcp_url": "http://puppeteer_mcp:9555",
      "name": "Puppeteer MCP",
      "auth": { "type": "none" }
    }
  },
  "openapi": {
    "host": "0.0.0.0",
    "port": 9556
  }
}

🐳 用法(Docker)

1.使用Docker Compose构建和运行

docker-compose up --build -d

2.或手动运行

docker build -t mcpo-proxy .

docker run -d --name mcpo-proxy \
  -v /volume1/docker/mcpo:/app/config \
  -p 9556:9556 \
  --network=localai_default \
  --restart unless-stopped \
  mcpo-proxy

🔎 端点

  • /openapi.json → 列出所有MCP服务器及其OpenAPI模式
  • /<mcp_name>/openapi.json → 代理MCP的OpenAPI模式
  • /<mcp_name>/* → 将任何请求转发给相应的MCP

🧪 健康检查

GET /health → { "status": "ok", "timestamp": "..." }

📄 许可证

麻省理工学院——免费使用,信用感谢!