模型上下文协议服务器管理系统

MCP Station是一个用于管理和路由MCP服务器的系统,支持Python和Node.js服务器,提供RESTful API和JSON-RPC通信。

  • by CocoRoF
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 CocoRoF/mcp_station

使用说明

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

今后的改进事项

  1. 认证/授权基于API密钥或JWT的认证
  2. 持久性将会话信息存储到数据库中
  3. 监测添加 Prometheus 指标
  4. 速率限制请求限制
  5. 支持WebSocket实时双向通信
  6. 健康检查改进进程状态详细监控