MBE MCP 服务设计

将 MBE 核心能力暴露为 MCP (Model Context Protocol) 工具,让 AI Agent 和行业应用通过标准协议调用。

1. 为什么选择 MCP?

1.1 SDK 的局限性

传统 SDK 模式:
┌─────────────┐      ┌─────────────┐      ┌─────────────┐
│  教育应用   │      │  客服应用   │      │  游戏应用   │
└──────┬──────┘      └──────┬──────┘      └──────┬──────┘
       │                    │                    │
       ▼                    ▼                    ▼
┌─────────────┐      ┌─────────────┐      ┌─────────────┐
│ Python SDK  │      │   TS SDK    │      │   Go SDK    │
└──────┬──────┘      └──────┬──────┘      └──────┬──────┘
       │                    │                    │
       └────────────────────┼────────────────────┘
                            ▼
                    ┌─────────────┐
                    │  MBE Core   │
                    └─────────────┘

问题:
- 需要为每种语言维护 SDK
- SDK 版本与 Core 版本耦合
- AI Agent 调用时需要额外封装

1.2 MCP 的优势

MCP 模式:
┌─────────────┐      ┌─────────────┐      ┌─────────────┐
│  教育应用   │      │  AI Agent   │      │  Cursor IDE │
│  (Python)   │      │  (任意语言) │      │  (TS)       │
└──────┬──────┘      └──────┬──────┘      └──────┬──────┘
       │                    │                    │
       └────────────────────┼────────────────────┘
                            │
                            ▼ JSON-RPC
                    ┌─────────────┐
                    │  MBE MCP    │
                    │   Server    │
                    └─────────────┘

优势:
- 语言无关,任何支持 JSON-RPC 的客户端都能调用
- 工具自动发现(tools/list)
- AI Agent 原生支持(LLM 可直接调用)
- 标准化的错误处理和响应格式

2. MBE MCP 工具设计

2.1 工具清单

工具名 描述 输入 输出
mbe_surprise 计算惊讶度 input, context surprise_score, learning_mode
mbe_route 智能路由 input, task_type, experts selected_experts
mbe_memory_write 写入记忆 user_id, type, content success
mbe_memory_read 读取记忆 user_id, query memories
mbe_expert_invoke 调用专家 expert_id, method, params result
mbe_llm_chat LLM 对话 messages, model content

2.2 工具定义示例

{
  "name": "mbe_surprise",
  "description": "计算输入内容的惊讶度(新颖程度)。用于判断用户是否遇到新知识,决定学习策略。",
  "inputSchema": {
    "type": "object",
    "properties": {
      "input": {
        "type": "string",
        "description": "要分析的内容"
      },
      "user_id": {
        "type": "string",
        "description": "用户ID,用于获取历史上下文"
      },
      "domain": {
        "type": "string",
        "description": "领域(如 education, customer_service)"
      }
    },
    "required": ["input"]
  }
}

3. 架构设计

3.1 整体架构

┌─────────────────────────────────────────────────────────────────────┐
│                           MCP 客户端                                 │
├─────────────────────────────────────────────────────────────────────┤
│  ┌──────────────┐  ┌──────────────┐  ┌──────────────┐              │
│  │  Cursor IDE  │  │  教育应用    │  │  自定义 Agent │              │
│  │  (内置支持)   │  │  (Python)   │  │  (任意语言)  │              │
│  └──────┬───────┘  └──────┬───────┘  └──────┬───────┘              │
│         │                 │                 │                       │
│         └─────────────────┼─────────────────┘                       │
│                           │                                         │
│                           ▼ stdio / HTTP                            │
├─────────────────────────────────────────────────────────────────────┤
│                        MBE MCP Server                                │
├─────────────────────────────────────────────────────────────────────┤
│                                                                      │
│   ┌──────────────────────────────────────────────────────────────┐  │
│   │                     Tool Handlers                             │  │
│   │  ┌────────────┐ ┌────────────┐ ┌────────────┐               │  │
│   │  │ surprise   │ │   route    │ │  memory    │               │  │
│   │  │  handler   │ │  handler   │ │  handler   │               │  │
│   │  └─────┬──────┘ └─────┬──────┘ └─────┬──────┘               │  │
│   │        │              │              │                       │  │
│   └────────┼──────────────┼──────────────┼───────────────────────┘  │
│            │              │              │                          │
│            ▼              ▼              ▼                          │
│   ┌──────────────────────────────────────────────────────────────┐  │
│   │                   MBE Core Modules                           │  │
│   │  ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐        │  │
│   │  │   HOPE   │ │  TITANS  │ │  MIRAS   │ │   MOE    │        │  │
│   │  │ Learning │ │  Memory  │ │ Retrieval│ │  Router  │        │  │
│   │  └──────────┘ └──────────┘ └──────────┘ └──────────┘        │  │
│   └──────────────────────────────────────────────────────────────┘  │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘

3.2 通信方式

方式 场景 优点
stdio 本地进程 最快,无网络开销
HTTP SSE 远程服务 支持流式响应
WebSocket 长连接 双向通信

4. 使用场景

4.1 Cursor IDE 中使用

// .cursor/mcp.json
{
  "mcpServers": {
    "mbe": {
      "command": "python",
      "args": ["-m", "mbe_mcp_server"],
      "env": {
        "MBE_API_URL": "http://localhost:8000"
      }
    }
  }
}

用户在 Cursor 中可以直接让 AI 使用 MBE 能力:

  • "帮我分析这段代码对学生来说有多难理解"
  • "根据学生历史,推荐下一个学习内容"

4.2 教育应用中使用

from mcp import Client

async def main():
    # 连接 MBE MCP Server
    async with Client("mbe") as client:
        # 调用惊讶度工具
        result = await client.call_tool(
            "mbe_surprise",
            input="递归是函数调用自身",
            user_id="student_001"
        )
        print(result.surprise_score)  # 0.85

4.3 AI Agent 中使用

# LangChain + MCP
from langchain_mcp import MCPToolkit

toolkit = MCPToolkit(server="mbe")
tools = toolkit.get_tools()

# Agent 可以自动发现并使用 MBE 工具
agent = create_agent(
    llm=ChatOpenAI(),
    tools=tools,  # 包含 mbe_surprise, mbe_route 等
)

agent.run("分析学生张三的学习状态,推荐下一步学习内容")

5. 与 SDK 方案对比

场景 SDK MCP
传统后端服务调用 ✅ 更熟悉 ⚠️ 需要适应
AI Agent / LLM 调用 ⚠️ 需要封装 ✅ 原生支持
Cursor IDE 集成 ❌ 不支持 ✅ 直接可用
多语言支持 ⚠️ 需要多个 SDK ✅ 语言无关
工具发现 ❌ 需要文档 ✅ 自动发现

6. 推荐策略

🎯 双轨并行

┌─────────────────────────────────────────────────────────────────┐
│                         MBE Core                                 │
├────────────────────────────┬────────────────────────────────────┤
│                            │                                    │
│     ┌──────────────┐       │       ┌──────────────┐            │
│     │  REST API    │       │       │  MCP Server  │            │
│     │  (传统调用)   │       │       │  (AI 调用)   │            │
│     └──────┬───────┘       │       └──────┬───────┘            │
│            │               │              │                     │
│            ▼               │              ▼                     │
│     ┌──────────────┐       │       ┌──────────────┐            │
│     │  Python SDK  │       │       │ MCP Clients  │            │
│     │  (可选封装)   │       │       │ (Cursor等)   │            │
│     └──────────────┘       │       └──────────────┘            │
│                            │                                    │
└────────────────────────────┴────────────────────────────────────┘

- REST API: 给传统后端服务使用
- MCP Server: 给 AI Agent 和 Cursor 使用
- 底层共享同一套核心模块

7. 实施计划

阶段 时间 任务
Phase 1 1周 实现 MBE MCP Server
Phase 2 3天 配置 Cursor 集成
Phase 3 1周 教育应用改用 MCP
Phase 4 持续 优化和扩展工具