MCP管理服务器架构
概述
这是一个管理器/管理员MCP(模型上下文协议)服务器,用于协调和监控分布式网络中的多个工作MCP服务器。它充当管理工作节点的集中控制平面。 这是一个管理器/管理员MCP(模型上下文协议)服务器,用于协调和监控分布式网络中的多个工作MCP服务器。它充当管理工作节点的集中控制平面。
架构图
┌─────────────────────────────────────────────────────────────────┐
│ MCP Client (Claude/AI) │
│ │
└───────────────────────────┬─────────────────────────────────────┘
│ STDIO
│ (Standard Input/Output)
│
┌───────────────────────────▼─────────────────────────────────────┐
│ ADMIN/MANAGER SERVER │
│ (admin_server/admin.py) │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ FastMCP Server Core │ │
│ │ - Server Name: "Manager" │ │
│ │ - Transport: STDIO │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Management Tools │ │
│ │ │ │
│ │ 1. get_all_workers_status() │ │
│ │ - Polls all workers simultaneously │ │
│ │ - Returns aggregated status │ │
│ │ │ │
│ │ 2. get_worker_status(worker_name) │ │
│ │ - Gets status from specific worker │ │
│ │ - Returns detailed worker info │ │
│ │ │ │
│ │ 3. list_workers() │ │
│ │ - Lists all configured workers │ │
│ │ - Returns worker URLs │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Worker Registry (WORKERS dict) │ │
│ │ │ │
│ │ Worker-One: http://10.149.14.61:8000 │ │
│ │ [Additional workers can be added here] │ │
│ └─────────────────────────────────────────────────────────┘ │
│ │
└───────────┬─────────────────────────────────┬───────────────────┘
│ HTTP/HTTPX │ HTTP/HTTPX
│ (Async Client) │ (Async Client)
│ │
┌───────────▼─────────────┐ ┌──────────▼──────────────┐
│ WORKER-ONE SERVER │ │ WORKER-N SERVER │
│ (10.149.14.61:8000) │ │ (Additional Workers) │
│ │ │ │
│ ┌──────────────────┐ │ │ ┌──────────────────┐ │
│ │ MCP Worker Core │ │ │ │ MCP Worker Core │ │
│ │ - SSE Endpoints │ │ │ │ - SSE Endpoints │ │
│ │ - Tool Handler │ │ │ │ - Tool Handler │ │
│ └──────────────────┘ │ │ └──────────────────┘ │
│ │ │ │
│ ┌──────────────────┐ │ │ ┌──────────────────┐ │
│ │ Worker Tools │ │ │ │ Worker Tools │ │
│ │ - System Status │ │ │ │ - System Status │ │
│ │ - Battery Info │ │ │ │ - Battery Info │ │
│ │ - Custom Tasks │ │ │ │ - Custom Tasks │ │
│ └──────────────────┘ │ │ └──────────────────┘ │
│ │ │ │
└─────────────────────────┘ └─────────────────────────┘组件详细信息
1.管理员/管理器服务器(Admin.py)
目的:管理多个工作MCP服务器的中央协调服务器
关键组件:
- FastMCP核心:轻量级MCP服务器框架
- 工人注册表:字典将工作者名称映射到URL
- HTTP客户端:用于工作者通信的异步HTTPX客户端
- 管理工具:工人管理的三个外露工具
沟通:
- 上游(至AI客户端):STDIO传输
- 下游(工人):对工作SSE端点的HTTP POST请求
2.工作服务器
目的:执行实际任务和报告状态的分布式工作节点
关键组件:
- MCP服务器核心:通过SSE处理传入请求
- 工具端点:
/sse/tools/call用于工具执行 - 状态工具:
get_worker_status()以及其他工人专用工具
沟通:
- 上游(至管理员):对管理器请求的HTTP响应
- 本地资源:访问系统信息(CPU、内存、电池等)
数据流
场景1:获取所有员工状态
1. AI Client → Admin: Call get_all_workers_status()
2. Admin → Worker-One: POST /sse/tools/call (get_worker_status)
3. Admin → Worker-N: POST /sse/tools/call (get_worker_status)
[Parallel async requests]
4. Worker-One → Admin: Return status data
5. Worker-N → Admin: Return status data
6. Admin → AI Client: Aggregated results from all workers场景2:获取特定员工状态
1. AI Client → Admin: Call get_worker_status("Worker-One")
2. Admin: Lookup worker URL from WORKERS registry
3. Admin → Worker-One: POST /sse/tools/call (get_worker_status)
4. Worker-One → Admin: Return status data
5. Admin → AI Client: Worker status场景3:列出工作人员
1. AI Client → Admin: Call list_workers()
2. Admin: Return WORKERS dictionary
3. Admin → AI Client: List of workers with URLs技术栈
核心技术
- Python 3.11+:运行时环境
- FastMCP:MCP服务器框架
- HTTPX:用于工作程序通信的异步HTTP客户端
- 工作室:AI客户端通信的传输协议
依赖项
httpx>=0.28.1 # Async HTTP client
mcp[cli]>=1.26.0 # MCP framework
psutil>=7.2.2 # System monitoring (likely used by workers)
uvicorn>=0.40.0 # ASGI server (for workers)部署架构
Network Layer:
┌─────────────────────────────────────────────────────────┐
│ Local Network / VPN │
│ │
│ Admin Server Worker-One Worker-N │
│ (localhost) (10.149.14.61) (10.x.x.x) │
│ │
└─────────────────────────────────────────────────────────┘部署特性:
- 管理员在本地运行,并通过STDIO与AI客户端通信
- 工作人员分布在网络(LAN/VPN)上
- 管理员和工作人员之间基于HTTP的通信
- 工作请求超时10秒
- 异步/并行通信提高效率
安全考虑
- 网络安全:
- Workers暴露HTTP端点(当前未加密) - 应部署在可信网络上或使用VPN - 考虑为生产环境添加HTTPS/TLS
- 认证:
- 目前管理员和工作人员之间没有身份验证 - 考虑添加API密钥或双向TLS
- 错误处理:
- 当工人不在时,情况会很好地恶化 - 超时保护(10s)防止挂起
可扩展性
当前设计:
- 同步注册表(WORKERS字典)
- 硬编码的工作URL
- 手动配置
未来改进:
- 服务发现机制
- 动态工人登记
- 健康检查自动化
- 跨工作人员的负载平衡
- 工人心跳监测
扩展点
- 添加新员工:使用新的worker URL更新WORKERS词典
- 添加新工具:定义新
@mcp.tool()admin.py中的函数 - 自定义工作人员通信:扩展HTTP客户端逻辑
- 监控:添加日志记录、指标收集、警报
用法示例
# From AI Client (Claude)
# The admin server exposes these tools:
# 1. List all configured workers
list_workers()
# Returns: {"workers": {"Worker-One": "http://10.149.14.61:8000"}}
# 2. Get status from all workers
get_all_workers_status()
# Returns: {"Worker-One": {...status data...}}
# 3. Get status from specific worker
get_worker_status("Worker-One")
# Returns: {...status data from Worker-One...}运行服务器
# Development mode
uv run admin.py
# Production mode (via MCP configuration)
# Add to Claude Desktop config:
{
"mcpServers": {
"admin-server": {
"command": "uv",
"args": ["run", "admin.py"],
"cwd": "d:\\SLT\\AI\\MCP_Servers\\admin_server"
}
}
}项目结构
admin_server/
├── admin.py # Main admin/manager server
├── main.py # Alternative entry point (unused)
├── pyproject.toml # Project dependencies
└── README.md # This architecture document