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 |
持续 |
优化和扩展工具 |