使用说明
Meta MCP服务器:动态MCP服务器编排器
一个强大的模型上下文协议(MCP)服务器,可以动态创建和管理子MCP服务器,以在本地完成复杂的任务。此元服务器充当编排器,按需生成专用服务器并协调其执行。
🆕 v2.0中的新增功能
- 🔒 增强的安全性:命令白名单、路径净化、资源限制
- ⚡ 性能提升:服务器池可实现100倍的快速重用
- 📊 健康监测:实时服务器健康检查和指标
- 📜 事件跟踪:完成所有服务器操作的审计跟踪
- ⚙️ 配置管理:外部配置文件和环境变量
- 🛡️ 交叉平台的:现在与Windows、macOS和Linux完全兼容
特性
核心功能
- 动态服务器生成:从模板或现有脚本动态创建子MCP服务器
- 进程隔离:每个子服务器都在自己的隔离进程中运行
- 生命周期管理:完全控制服务器的创建、执行和终止
- 多服务器编排:跨多个专用服务器协调复杂的工作流程
- 模板系统:常见服务器类型的内置模板(包括5个模板)
- 异步架构:基于asyncio构建,实现高效的并发服务器管理
- 资源清理:自动清理服务器进程和资源
v2.0增强功能
- 服务器池:重复使用服务器,性能提高100倍
- 安全强化:命令验证、路径清理、资源限制
- 健康监测:跟踪服务器正常运行时间、空闲时间和资源使用情况
- 事件系统:带有全面审计跟踪的发布/子事件总线
- 配置:JSON配置文件和环境变量支持
- 资源限制:超时保护、最大服务器数、内存限制
建筑
┌─────────────────────────────────────┐
│ AI Client (Claude/ChatGPT) │
└──────────────┬──────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ Meta-MCP Server │
│ (Orchestrator & Manager) │
│ │
│ Tools (11 total): │
│ • create_server() │
│ • execute_on_server() │
│ • orchestrate_task() │
│ • list_servers() │
│ • stop_server() │
│ • health_check() [NEW] │
│ • get_or_create_pooled_server() │
│ • get_event_history() [NEW] │
└────┬──────────┬──────────┬──────────┘
│ │ │
▼ ▼ ▼
┌─────────┐ ┌─────────┐ ┌─────────┐
│Calculator│ │ Web │ │ Data │
│ Server │ │ Scraper │ │Processor│
└─────────┘ └─────────┘ └─────────┘
Child Child Child
Servers Servers Servers
安装
先决条件
- Python 3.9或更高版本
- pip(Python包管理器)
从源安装(当前方法)
# Clone the repository
git clone https://github.com/qSpark-tech/Meta-MCP_Server.git
cd Meta-MCP_Server
# Install in development mode
pip install -e .
# Or install directly
pip install .
从软件包安装(未来)
一旦发布到PyPI:
pip install meta-mcp-server
快速测试
安装后,验证其是否正常工作:
meta-mcp-server --version
# Output: Meta MCP Server v2.0.0
配置您的AI客户端(Claude Desktop等):
添加到MCP配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"meta-mcp": {
"command": "meta-mcp-server",
"args": [],
"env": {
"MCP_LOG_LEVEL": "INFO"
}
}
}
}
或者,如果从源代码运行:
{
"mcpServers": {
"meta-mcp": {
"command": "python",
"args": ["-m", "meta_mcp_server"],
"cwd": "/path/to/Meta-MCP_Server",
"env": {
"MCP_LOG_LEVEL": "INFO"
}
}
}
}
- 重新启动AI客户端
用法
可用工具
1.创建服务器
创建并生成一个新的子MCP服务器。
{
"name": "my-calculator",
"server_type": "python",
"template": "basic_calculator"
}
可用模板:
basic_calculator-数学运算web_scraper_template-Web抓取工具file_handler_template-文件系统操作data_processor-数据操作和分析api_integration-HTTP API客户端工具
2.服务器端执行
在特定的子服务器上执行工具。
{
"server_id": "<server-id-from-create>",
"tool_name": "add",
"arguments": {"a": 5, "b": 3}
}
3.编排任务
为复杂的工作流自动生成多个服务器。
{
"task_description": "Scrape data and perform analysis",
"required_capabilities": ["web_scraping", "data_analysis"]
}
4.列表服务器
获取有关所有活动子服务器的信息。
{} # No arguments required
5.获取服务器能力
查询服务器上的可用工具和资源。
{
"server_id": "<server-id>"
}
6.停止服务器
停止并删除子服务器。
{
"server_id": "<server-id>"
}
7.停止所有服务器
停止所有正在运行的子服务器(清理)。
{} # No arguments required
🆕 v2.0中的新工具
8.get_or_create_pooled_server
从池中获取现有服务器或创建新服务器(重用速度快100倍)。
{
"template": "basic_calculator",
"use_pooling": true # optional, defaults to true
}
9.健康检查
检查特定子服务器的运行状况。
{
"server_id": "<server-id>"
}
退货:状态、正常运行时间、空闲时间、资源限制、时间戳
10.健康检查_所有
检查所有子服务器的运行状况。
{} # No arguments required
退货:健康/不健康计数的总体健康摘要
11.事件历史
检索最近的服务器生命周期事件。
{
"limit": 20 # optional, defaults to 20, max 100
}
退货:包含时间戳、事件类型和数据的事件历史记录
示例工作流
示例1:简单计算器任务
User: "I need to calculate 15 + 27"
AI Client → Meta-MCP:
create_server(name="calc", template="basic_calculator")
Meta-MCP Response:
{server_id: "abc-123", status: "running"}
AI Client → Meta-MCP:
execute_on_server(server_id="abc-123", tool_name="add",
arguments={a: 15, b: 27})
Meta-MCP Response:
{result: 42, status: "success"}
AI Client → Meta-MCP:
stop_server(server_id="abc-123")
示例2:复杂的多服务器工作流
User: "Fetch data from API and analyze it"
AI Client → Meta-MCP:
orchestrate_task(
task_description="Fetch and analyze API data",
required_capabilities=["api_client", "data_analysis"]
)
Meta-MCP:
- Spawns API Integration Server
- Spawns Data Processor Server
- Returns server IDs
AI Client:
1. execute_on_server(api_server, "make_request", {...})
2. execute_on_server(data_server, "parse_json", {...})
3. execute_on_server(data_server, "summarize_data", {...})
4. stop_server(api_server)
5. stop_server(data_server)
自定义服务器模板
您可以通过修改来添加自己的模板 _generate_from_template() 功能:
templates = {
"my_custom_server": """
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("My Custom Server")
@mcp.tool()
def my_tool(param: str) -> str:
return f"Processing {param}"
if __name__ == "__main__":
mcp.run(transport="stdio")
"""
}
高级配置
🆕 配置文件(v2.0)
创建 meta_mcp_config.json 对于持久配置:
{
"default_timeout_seconds": 60,
"default_max_memory_mb": 1024,
"max_concurrent_servers": 20,
"log_level": "INFO",
"allowed_commands": ["python", "python3", "node"],
"temp_directory": null
}
环境变量
v2.0添加了全面的环境变量支持:
MCP_CONFIG_FILE:配置JSON文件的路径(默认值:meta_mcp_config.json)MCP_TIMEOUT_SECONDS:默认工具执行超时(默认值:30)MCP_MAX_SERVERS:最大并发子服务器数(默认值:10)MCP_MAX_MEMORY_MB:每台服务器的最大内存(MB)(默认值:512)MCP_LOG_LEVEL:记录详细信息(调试、信息、警告、错误)MCP_TEMP_DIR:临时服务器脚本目录
优先级:配置文件>环境变量>默认值
使用外部脚本
您可以从现有脚本生成服务器,而不是模板:
{
"name": "my-custom-server",
"server_type": "python",
"script_path": "/path/to/my_server.py",
"config": {
"timeout": 120, # Custom timeout for this server
"max_memory_mb": 1024
}
}
🔒 安全注意事项(v2.0中增强)
内置安全功能
-
命令白名单:只能执行批准的命令
- 默认白名单:
python,python3,node,npm,npx - 可通过以下方式配置
allowed_commands在配置文件中 - 防止任意命令执行
- 默认白名单:
-
路径消毒:防止目录遍历攻击
- 所有文件操作都会验证路径
- 限制对基本目录的访问
- 积木
../路径逃逸尝试
-
资源限制:防止资源耗尽
- 执行超时(默认值:30秒)
- 最大并发服务器数(默认值:10)
- 每台服务器的内存限制(可配置)
-
进程隔离:每个子服务器都在单独的进程中运行
- 独立存储空间
- 孤立的执行环境
-
输入验证:执行前验证所有输入
- 工具参数的类型检查
- 创建子流程前的命令验证
-
跨平台临时文件:安全的临时文件处理
- 使用适合系统的临时目录
- 自动清理生成的服务器
安全最佳实践
- 限制命令:尽量减少
allowed_commands列表 - 设置资源限制:配置适当的超时和服务器限制
- 监控事件:使用
get_event_history()用于审计跟踪 - 健康检查:定期监测
health_check_all()
故障排除
服务器无法启动
- 检查Python是否在您的PATH中
- 验证是否安装了MCP SDK:
pip install mcp - 检查日志输出是否存在特定错误
- 如果使用,请验证配置文件语法
meta_mcp_config.json
工具执行失败
- 验证服务器是否正在运行
list_servers或health_check_all - 通过以下方式检查工具可用性
get_server_capabilities - 查看事件历史记录:
get_event_history(limit=50) - 检查服务器运行状况中的超时问题
🆕 命令不允许错误(v2.0)
- 将命令添加到
allowed_commands在meta_mcp_config.json - 或通过环境设置:
MCP_ALLOWED_COMMANDS="python,python3,node"
🆕 路径访问被拒绝(v2.0)
- 验证文件是否在允许的基目录中
- 使用
base_dir文件操作中的参数 - 检查事件历史记录中的安全违规行为
🆕 已达到最大服务器数(v2.0)
- 停止未使用的服务器:
stop_all_servers() - 检查服务器运行状况:
health_check_all() - 增加配置限制:
"max_concurrent_servers": 20 - 使用服务器池重用服务器
内存或性能问题
- 使用服务器池:
get_or_create_pooled_server() - 定期监控服务器运行状况
- 停止空闲服务器(检查
idle_seconds健康检查) - 查看事件历史记录以了解超时模式
项目文件
核心文件
meta_mcp_server.py-主服务器实现(1100+行)requirements.txt-Python依赖关系README.md-此文件
配置
meta_mcp_config.json-配置文件(可选)Config_Tools.json-Claude桌面配置示例
文档(v2.0)
CHANGELOG.md-详细的v2.0改进和更改QUICK_START_V2.md-v2.0功能快速入门指南Program_Summary.txt-原始项目摘要
示例和测试(v2.0)
examples_v2.py-v2.0功能的综合示例test_meta_mcp_v2.py-v2.0功能测试套件example_client.py-原始示例客户端
建筑细部
组件概述
核心组件:
- Meta MCP服务器:管理子服务器的主编排器
- ChildServer进程:管理单个子服务器生命周期的类
- 服务器注册表:内存注册表跟踪所有活动服务器
- 模板系统:用于常见任务的预构建服务器模板
🆕 v2.0组件: 5. 事件总线:用于生命周期跟踪的发布/子事件系统 6. 元服务器配置:支持文件/env的配置管理 7. 服务器池:服务器性能池系统 8. 安全层:命令验证和路径清理
通信流
- AI客户端向Meta MCP发送请求
- Meta MCP验证命令并检查资源限制
- Meta MCP生成所需的子服务器(或从池中重用)
- 子服务器初始化和注册功能
- Meta MCP将工具执行路由到相应的子级(有超时)
- 子执行工具并返回结果
- 事件被记录到事件历史记录中
- Meta MCP汇总结果并响应客户
- 服务器可以合并以供重用,也可以在完成后终止
贡献
欢迎投稿!v2.0已经解决了许多问题,但仍有改进的空间:
在v2.0中实现✅
增强的错误处理资源使用监控高级编排模式安全改进
未来的增强功能
- 使用psutil进行内存监控
- CPU使用率跟踪
- 持久事件存储
- 其他服务器模板
- 服务器持久性选项
- 用于监控的Web UI
- 指标导出(Prometheus格式)
看 更改日志.md 了解已知的局限性和未来的计划。
快速链接
📚 文档
⚙️ 配置
演出
- 服务器创建:~100-300ms
- 服务器重用(池):~1-5ms(快100倍)
- 工具执行:取决于工具
- 健康检查:每台服务器约1ms
- 事件跟踪:开销<1ms
版本历史记录
- v2.0 (2025年11月):安全、性能、监控、事件
- v1.0 (初始):基本服务器编排和管理
发展
建立开发环境
# Clone the repository
git clone https://github.com/qSpark-tech/Meta-MCP_Server.git
cd Meta-MCP_Server
# Create virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install in development mode with dev dependencies
pip install -e ".[dev,test]"
运行测试
# Run all tests
pytest
# Run with coverage
pytest --cov=meta_mcp_server --cov-report=html
# Run specific test file
pytest tests/test_server.py
代码质量
# Run linting
ruff check meta_mcp_server tests
# Run type checking
mypy meta_mcp_server
# Format code
ruff format meta_mcp_server tests
贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
请确保:
- 所有测试均通过
- 代码遵循项目样式(ruff)
- 新功能包括测试
- 文档已更新
路线图
近期(v2.1-v2.5)
- [ ] 完整的v2.0功能:实施有文件记录但缺失的功能(池、健康检查)
- [ ] PyPI出版:将包发布到PyPI以便于安装
- [ ] 增强型模板:更多内置服务器模板(数据库、机器学习、图像处理)
- [ ] GUI仪表板:基于Web的监控界面
- [ ] 性能指标:详细的性能跟踪和优化
中期(v3.0)
- [ ] HTTP传输:支持基于HTTP的MCP传输
- [ ] 模板注册表:共享服务器模板的在线注册表
- [ ] 高级编排:基于DAG的工作流执行
- [ ] 资源管理:CPU/GPU分配和调度
- [ ] 多语言支持:JavaScript/TypeScript服务器支持
长期愿景
- [ ] 分布式执行:在多台机器上运行服务器
- [ ] 云集成:将服务器部署到云平台
- [ ] 安全框架:增强的沙盒和权限系统
- [ ] 插件系统:自定义功能的可扩展架构
- [ ] 企业功能:审计日志、合规性、监控
欢迎社区捐款!
我们特别寻求以下方面的帮助:
- 其他服务器模板
- 在不同平台上进行测试
- 文档改进
- 集成示例
许可证
MIT许可证-有关详细信息,请参阅许可证文件
作者
克里斯·纽厄尔 - 初期工作
致谢
由Anthropic和更广泛的MCP社区使用模型上下文协议(MCP)构建。
v2.0改进:增强的安全性、服务器池、运行状况监控、事件跟踪、配置管理和跨平台兼容性。
