动态MCP服务器编排器

Meta-MCP Server是一个强大的模型上下文协议(MCP)服务器,能够动态创建和管理子MCP服务器以在本地完成复杂任务。该元服务器充当协调器,按需生成专用服务器并协调其执行。

  • by chrisnewell91
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 chrisnewell91/Meta-MCP-Server

使用说明

Meta MCP服务器:动态MCP服务器编排器

版本2.0 | 更新日志 | 快速开始 | 示例

一个强大的模型上下文协议(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"
      }
    }
  }
}
  1. 重新启动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中增强)

内置安全功能

  1. 命令白名单:只能执行批准的命令

    • 默认白名单: python, python3, node, npm, npx
    • 可通过以下方式配置 allowed_commands 在配置文件中
    • 防止任意命令执行
  2. 路径消毒:防止目录遍历攻击

    • 所有文件操作都会验证路径
    • 限制对基本目录的访问
    • 积木 ../ 路径逃逸尝试
  3. 资源限制:防止资源耗尽

    • 执行超时(默认值:30秒)
    • 最大并发服务器数(默认值:10)
    • 每台服务器的内存限制(可配置)
  4. 进程隔离:每个子服务器都在单独的进程中运行

    • 独立存储空间
    • 孤立的执行环境
  5. 输入验证:执行前验证所有输入

    • 工具参数的类型检查
    • 创建子流程前的命令验证
  6. 跨平台临时文件:安全的临时文件处理

    • 使用适合系统的临时目录
    • 自动清理生成的服务器

安全最佳实践

  • 限制命令:尽量减少 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 -原始示例客户端

建筑细部

组件概述

核心组件:

  1. Meta MCP服务器:管理子服务器的主编排器
  2. ChildServer进程:管理单个子服务器生命周期的类
  3. 服务器注册表:内存注册表跟踪所有活动服务器
  4. 模板系统:用于常见任务的预构建服务器模板

🆕 v2.0组件: 5. 事件总线:用于生命周期跟踪的发布/子事件系统 6. 元服务器配置:支持文件/env的配置管理 7. 服务器池:服务器性能池系统 8. 安全层:命令验证和路径清理

通信流

  1. AI客户端向Meta MCP发送请求
  2. Meta MCP验证命令并检查资源限制
  3. Meta MCP生成所需的子服务器(或从池中重用)
  4. 子服务器初始化和注册功能
  5. Meta MCP将工具执行路由到相应的子级(有超时)
  6. 子执行工具并返回结果
  7. 事件被记录到事件历史记录中
  8. Meta MCP汇总结果并响应客户
  9. 服务器可以合并以供重用,也可以在完成后终止

贡献

欢迎投稿!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

贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

请确保:

  • 所有测试均通过
  • 代码遵循项目样式(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改进:增强的安全性、服务器池、运行状况监控、事件跟踪、配置管理和跨平台兼容性。