AI代理编排平台

基于Model Context Protocol (MCP)的模块化AI代理平台,支持多MCP服务器连接、工具统一注册、LLM代理循环和代码沙箱执行。

  • by nguyendat-lhd
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 nguyendat-lhd/mcp-orchestrator-platform

使用说明

🚀 MCP编排器平台

基于多MCP服务器、编排器代理循环和可选沙盒代码执行的模块化AI代理平台。 使用Bun+TypeScript+Elysia+PocketBase构建。


✨ 引言

MCP编排器平台是一种基于模型上下文协议(MCP)的可扩展架构,MCP是Anthropic提出的标准化工具、资源和代理集成的协议。

该平台创建了一个中央编排器,能够:

  • 连接到多个MCP服务器(SearXNG、Figma、Linear、Notes、GitHub等)
  • 将所有工具整合到一个统一的工具注册表中
  • 编排LLM代理循环(重新行动/计划执行)
  • 通过MCP(STDIO或WebSocket)进行工具调用
  • 支持代码沙盒,用于自动执行代理代码
  • 为Web/Mobile客户端公开HTTP API
  • 通过PocketBase进行动态配置管理

使用此模型,您可以使用各种工具构建AI代理平台、MCP市场或多任务应用程序。


🧱 架构概述

User (Web/Mobile)
       ↓
   orchestrator-api (REST)
       ↓
   MCP Orchestrator  ←→  LLM Provider (Claude / OpenAI)
       ↓
Tool Registry
       ↓
  ┌──────────────────────────────┐
  │  Multi MCP Servers           │
  │  - mcp-searxng               │
  │  - mcp-linear                │
  │  - mcp-figma                 │
  │  - mcp-note                  │
  │  - mcp-code-executor (optional)
  └──────────────────────────────┘
       ↓
PocketBase (config / logs / tenants)

核心概念

  • MCP服务器 =工具层(服务器风格插件)
  • 编排器 =大脑(LLM+路由+代理循环)
  • 沙盒 =执行层(运行LLM生成的代码)
  • API =集成层(Web/Mobile接口)

📦 主要特点

🧠 MCP编排器

  • 生成/监控MCP服务器
  • 自动工具注册表
  • 多服务器路由
  • LLM代理循环(重新行动/计划执行)
  • 观测流程
  • 工具调用推理
  • 多步骤任务执行

🔌 多MCP服务器支持

每个MCP服务器都是一个独立的模块:

  • mcp-searxng -Web搜索集成
  • mcp-linear -项目管理
  • mcp-figma -设计合作
  • mcp-note -记笔记
  • mcp-github -代码库管理
  • mcp-code-executor -安全代码执行

🔒 可选:代码沙盒执行

  • 代理可以编写Types/Python代码
  • 安全沙盒执行(有限的FS、CPU、RAM、网络)
  • 代码通过内部SDK调用MCP工具
  • 减少令牌使用+提高复杂的工作流能力

🌐 用于客户端的REST API

  • POST /chat -与AI代理聊天
  • POST /tools/:key -直接工具调用
  • GET /tools -列出可用工具
  • GET /servers -列出MCP服务器

🗂 管理员仪表板(可选)

  • MCP服务器管理(开/关)
  • 日志监控
  • 租户配置
  • 密钥/令牌管理

🧩 PocketBase集成

  • 动态MCP服务器配置
  • 用户/租户/API密钥管理
  • 工具日志和使用指标
  • 内置管理面板

📁 项目结构

mcp-platform/
├── apps/
│   ├── orchestrator-api/       # HTTP API server
│   └── admin-dashboard/        # Admin UI (planned)
│
├── orchestrator/               # CORE: MCP client + agent loop
│   ├── src/
│   │   ├── index.ts
│   │   ├── orchestrator.ts
│   │   ├── agent-loop.ts
│   │   ├── mcp-server-manager.ts
│   │   ├── tool-registry.ts
│   │   ├── llm/
│   │   ├── utils/
│   │   └── types/
│   └── package.json
│
├── servers/                    # MCP servers as plugins
│   ├── mcp-searxng/
│   ├── mcp-linear/
│   ├── mcp-figma/
│   ├── mcp-note/
│   ├── mcp-code-executor/
│   └── (add more servers here)
│
├── packages/                   # Shared libraries
│   ├── shared-types/
│   ├── shared-utils/
│   ├── pb-client/
│   └── registry-client/
│
├── pocketbase/                 # Database for config/logs
│   ├── pb_data/
│   ├── docker-compose.yml
│   └── schema.json
│
├── docs/
│   └── developer_onboarding.md
│
├── infra/
│   └── docker-compose.yml      # Development environment
│
├── bunfig.toml
├── package.json                # Root workspace config
└── README.md

🔁 工作流(代理循环)

  1. 用户请求:

    "Find videos about HanaCare and create an issue in Linear"
    
  2. 编排器→ LLM: LLM返回一个计划:

    • 呼叫工具: searxng.search_web
    • 解析结果
    • 呼叫工具: linear.create_issue
  3. 编排器路由 → 正确的MCP服务器:

    tools.call("searxng.search_web", {...})
    tools.call("linear.create_issue", {...})
    
  4. 如果需要,LLM会编写小代码 对于复杂逻辑:

    • 发送代码至 mcp-code-executor (沙盒)
  5. 沙盒执行代码,代码调用MCP工具:

    • 将结果返回给编排器→ LLM
  6. LLM生成最终答案:

    • API返回Web/Mobile客户端

⚙️ 快速开始

先决条件

  • 包子 >= 1.3.1
  • 码头工人 (适用于PocketBase和开发环境)
  • API密钥 用于各种服务(线性、Figma等)

安装

  1. 克隆存储库:

    git clone https://github.com/your-org/mcp-platform
    cd mcp-platform
    
  2. 安装依赖项:

    bun install
    
  3. 启动PocketBase数据库:

    docker compose -f pocketbase/docker-compose.yml up -d
    
  4. 启动编排器+所有MCP服务器:

    docker compose -f infra/docker-compose.yml up --build
    
  5. 测试API:

    curl -X POST http://localhost:3000/chat \
      -H 'Content-Type: application/json' \
      -d '{"message": "Find videos about HanaCare"}'
    

环境设置

创建一个 .env 使用API密钥文件:

LINEAR_API_KEY=your_linear_api_key
FIGMA_API_KEY=your_figma_api_key
SEARXNG_URL=your_searxng_instance_url
GITHUB_TOKEN=your_github_token

访问PocketBase管理员: http://localhost:8090/_/


🔥 为什么是这种架构?

  • ✅ 模块化 --每个MCP服务器=1个插件
  • ✅ 可扩展的 --编排层是独立的
  • ✅ 工具重复使用 --MCP服务器可供多个代理使用
  • ✅ 安全 --沙盒降低了LLM运行代码时的风险
  • ✅ 多用户 --适用于SaaS应用
  • ✅ 可扩展 --通过添加文件夹+config添加新服务器
  • ✅ 网络和移动友好 -适用于所有客户端的HTTP API
  • ✅ 人类对齐 --遵循“使用MCP执行代码”的方向

🛣 路线图

  • []完全支持MCP规范v1.1
  • []用于MCP服务器管理的CLI
  • []增强的Types/Python沙盒运行器
  • []托管MCP服务器市场
  • []LLM代理存储层
  • []多租户+计费支持
  • []为AWS/Fly.io/Render部署模板
  • []Webhooks和事件流
  • []工具组成和链接

💡 贡献

拉取请求总是受欢迎的!你可以:

  • 添加新的MCP服务器
  • 改进沙盒跑步者
  • 添加示例工作流
  • 增强编排器循环
  • 改进文档
  • 添加测试覆盖率
  • 报告错误并建议功能

开发指南

  • 每个MCP服务器都必须有清晰的描述和输入模式
  • 包括所有工具的测试用例
  • 全程使用TypeScript
  • 遵循现有的代码样式和模式
  • 添加功能时更新文档

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。