MCP网关Docker
一个强大的、容器化的网关 模型上下文协议(MCP)该项目将多个MCP服务器(基于stdio)复用到一个统一的SSE(服务器发送事件)端点中,使各种工具易于向LLM和MCP客户端公开。
特性
- 多服务器聚合:连接单个配置文件中定义的多个MCP服务器。
- 自动重新连接:如果子进程崩溃或退出,则自动监视并重新启动它们。
- 苏格兰和南方能源公司运输:通过HTTP SSE公开统一的服务器接口,与现代MCP客户端兼容。
- 容器化:包括一个包含Python 3.12和Node.js 20的Dockerfile,支持Python和基于Node的MCP服务器。
- 集成工具:自动构建和包含 快照 在
/usr/local/bin用于与相机相关的任务。 - 健康监测:简单
/health用于编排的端点(例如Kubernetes活性探测)。
建筑
网关充当多个“子”服务器的MCP客户端(通过标准输入/输出),同时充当外部客户端的MCP服务器(通过SSE)。
[ Client ] [ MCP Gateway ] [ MCP Server A ]
[ MCP Server B ]配置
网关是通过JSON文件配置的。默认情况下,它会在以下位置查找配置 /etc/mcp/config.json,但这可以用以下命令覆盖 MCP_CONFIG_PATH 环境变量。
示例 config.json
{
"mcpServers": {
"everything": {
"command": "npx",
"args": [
"-y",
"--quiet",
"@modelcontextprotocol/server-everything"
]
},
"custom-python-server": {
"command": "python3",
"args": [
"/app/servers/my_server.py"
],
"env": {
"MY_API_KEY": "secret-value"
}
}
}
}快速开始
1.塑造形象
docker build -t mcp-gateway .2.运行容器
安装配置文件和任何必要的服务器脚本:
docker run -d \
-p 8080:8080 \
-v $(pwd)/config.json:/etc/mcp/config.json \
-v $(pwd)/servers:/app/servers \
--name mcp-gateway \
mcp-gatewayAPI终点
GET /sse:苏格兰和南方能源公司的切入点。在此处连接您的MCP客户端。POST /messages:用于向服务器发送消息的端点(SSE传输的一部分)。GET /health:退货{"status": "ok"}.
发展
网关由以下组件构建:
- Python 3.12
- MCP Python SDK
- 斯塔雷特 (ASGI框架)
- Uvicorn (ASGI服务器)
本地设置
- 使用安装依赖项
uv或pip:
pip install mcp starlette uvicorn- 运行网关:
export MCP_CONFIG_PATH=./mcp-test/config/config.json
python gateway.py许可证
麻省理工学院
