HTTP桥接服务

一个轻量级的HTTP桥接服务,用于安全地连接多个本地MCP服务器通过Docker。

  • by danny0094
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 danny0094/anythingllm-mcp-http-bridge

使用说明

这是一个早期的开发版本,还没有即插即用。你需要熟悉Docker网络和存储映射。

🧩 AnythingLLM MCP HTTP网桥

AnythingLLM的轻量级HTTP桥,通过Docker安全地连接多个本地MCP服务器。
一种干净、模块化和安全的方式来运行多个MCP服务器,而无需在Docker中使用Docker或直接生成进程。


🚀 概述

这座桥允许 任何事情LLM 与多人沟通 MCP服务器 在隔离的Docker容器中。
它提供了一个单一的、安全的HTTP入口点,同时保持每个MCP完全沙盒化。

✅ 主要特点

  • 🔒 安全清洁: Docker中没有主机或Docker访问。
  • 🧱 模块化: 每个MCP都在自己的容器中运行,并带有一个小型FastAPI服务器。
  • 🌐 桥梁控制: LLM只与桥对话(mini-bridge),永远不要直接联系MCP。
  • ⚙️ 动态注册表: MCP服务器从以下位置自动加载 mcp_registry.json.
  • ♻️ 自动重新加载: 网桥实时重新加载配置更改,而无需重新启动容器。
  • 🕒 MCP示例: 包括a Dummy-MCP 用于测试和工作 MCP-Time 模块返回系统时间。

🧠 建筑

───────────────────────────────
Docker Network: test-net
───────────────────────────────
│
├─ anythingllm  (Port 3001)
│     ↳ Main app – talks only to mini-bridge
│
├─ mini-bridge  (Port 4100)
│     ↳ Forwards JSON-RPC requests to registered MCPs
│     ↳ Reloads mcp_registry.json dynamically
│
├─ dummy-mcp    (Port 4200)
│     ↳ JSON-RPC test MCP returning handshake info
│
└─ mcp-time     (Port 4210)
      ↳ Returns current UTC time
───────────────────────────────

⚙️ 快速设置

git clone https://github.com/yourname/anythingllm-mcp-http-bridge.git
cd anythingllm-mcp-http-bridge
docker compose up --build

桥接日志输出:

[Bridge] Registry reloaded: ['dummy', 'time']
[Bridge] Default route → dummy (200)

然后打开AnythingLLM→ MCP设置→
添加新服务器: http://mini-bridge:4100


📜 MCP注册表示例

mini_bridge/config/mcp_registry.json

{
  "autoReload": true,
  "servers": [
    {
      "id": "dummy",
      "name": "Dummy MCP",
      "url": "http://dummy-mcp:4200",
      "type": "streamable",
      "enabled": true
    },
    {
      "id": "time",
      "name": "Time MCP",
      "url": "http://mcp-time:4210",
      "type": "streamable",
      "enabled": true
    }
  ]
}

🧩 可用的MCP模块

MCP 描述 示例调用
虚拟MCP 最小测试服务器,响应 initialize, ping等等。 POST /dummy
MCP时间 返回当前UTC时间 tools/call → get_time

手动测试:

curl -X POST http://localhost:4100/time      -H "Content-Type: application/json"      -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_time"}}'

答复:

{"jsonrpc":"2.0","id":1,"result":{"message":"The current time is 18:42:10 UTC"}}

🧩 文件夹结构

├── docker-compose.yml
├── mini_bridge/
│   ├── mini_bridge_v2.py
│   ├── Dockerfile
│   └── config/
│       └── mcp_registry.json
├── dummy_MCP/
│   ├── dummy_mcp.py
│   └── Dockerfile
└── mcp_time/
    ├── mcp_time.py
    └── Dockerfile

🔒 安全

每个MCP服务器都在其 自有集装箱 在私有Docker网络上。
这座桥是 只有暴露的界面 并接受 基于HTTP的JSON-RPC --没有别的。

  • AnythingLLM无法直接访问容器
  • Docker中没有Docker
  • 没有shell或文件系统命令
  • 仅基于JSON的安全、无状态通信

🧾 许可证

MIT许可证
请随意使用、分叉和构建此项目。
查看完整 许可证 文件以获取详细信息。


💬 开发说明

我将继续改进这个项目,作为我自己的独立解决方案。
如果 任何事情LLM 团队认为这个想法很有用,可以自由地在此基础上构建或整合其中的部分内容。

到目前为止,工具输出仍然以原始格式返回,而不是完全格式化的聊天回复——一旦完善,公共版本将随之而来。


🌟 鸣谢

由...创建 丹尼
内置❤️ 使用FastAPI、Docker和好奇心。