使用说明
MCP 站
MCP(模型上下文协议)服务器管理及路由系统
架构概述
┌─────────────────┐
│ polarag_backend │
└────────┬────────┘
│ HTTP
▼
┌─────────────────────────────────────────┐
│ MCP Station (FastAPI) │
│ ┌────────────────────────────────────┐ │
│ │ Session Manager │ │
│ │ ┌──────────┬──────────┬────────┐ │ │
│ │ │Session 1 │Session 2 │Session N│ │ │
│ │ └──────────┴──────────┴────────┘ │ │
│ └────────────────────────────────────┘ │
│ ┌────────────────────────────────────┐ │
│ │ Process Manager │ │
│ │ ┌──────────┬──────────┬────────┐ │ │
│ │ │Python │Node.js │Python │ │ │
│ │ │MCP Server│MCP Server│MCP Srv │ │ │
│ │ │(PID 123) │(PID 456) │(PID 789│ │ │
│ │ └──────────┴──────────┴────────┘ │ │
│ └────────────────────────────────────┘ │
│ ┌────────────────────────────────────┐ │
│ │ Router │ │
│ │ (JSON-RPC over stdio) │ │
│ └────────────────────────────────────┘ │
└─────────────────────────────────────────┘
核心组件
1. 会话管理器(session_manager.py)
- MCP服务器会话的生命周期管理
- 会话创建、查询、删除
- 自动清理已结束的会话
2. 进程管理器(process_manager.py)
- 将各个MCP服务器作为子进程运行
- 支持基于Python和Node.js的MCP服务器
- 通过stdio进行JSON-RPC通信
- 进程状态监控
3. 路由器(router.py)
- 将请求路由到适当的会话
- 支持JSON-RPC 2.0协议
- 错误处理及超时管理
4. FastAPI 应用程序(main.py)
- 提供RESTful API端点
- 会话管理API
- MCP请求代理API
API 端点
会话管理
POST(邮政服务) /sessions - 创建会话
{
"server_type": "python",
"server_command": "/path/to/mcp_server.py",
"server_args": ["--port", "8080"],
"env_vars": {
"API_KEY": "secret"
},
"working_dir": "/app/servers"
}
回答:
{
"session_id": "uuid-here",
"server_type": "python",
"status": "running",
"created_at": "2025-09-29T...",
"pid": 12345
}
GET(获取) /sessions - 会话列表
查看所有活动会话
GET /sessions/{session_id} - 会话信息
查询特定会话的状态
删除 /sessions/{session_id} - 删除会话
会话结束及进程整理
MCP请求
POST(邮政服务/帖子/发布) /mcp/request - MCP请求路由
{
"session_id": "uuid-here",
"method": "tools/list",
"params": {}
}
回答:
{
"success": true,
"data": {
"tools": [...]
}
}
Docker Compose 网络通信
在后端调用MCP Station的示例:
import httpx
# 세션 생성
async with httpx.AsyncClient() as client:
response = await client.post(
"http://mcp_station:20100/sessions",
json={
"server_type": "python",
"server_command": "/app/my_mcp_server.py"
}
)
session_info = response.json()
session_id = session_info["session_id"]
# MCP 요청
response = await client.post(
"http://mcp_station:20100/mcp/request",
json={
"session_id": session_id,
"method": "tools/list",
"params": {}
}
)
result = response.json()
执行方法
本地开发
pip install -r requirements.txt
python main.py
Docker Compose
mcp_station:
build: ./mcp_station/.
container_name: mcp_station
restart: unless-stopped
ports:
- 20100:20100
环境变量
目前使用的是硬编码的端口,但如有需要 .env 可设置为文件:
MCP_STATION_PORT=20100
LOG_LEVEL=INFO
今后的改进事项
- 认证/授权基于API密钥或JWT的认证
- 持久性将会话信息存储到数据库中
- 监测添加 Prometheus 指标
- 速率限制请求限制
- 支持WebSocket实时双向通信
- 健康检查改进进程状态详细监控
