MCP 与工具集成
Model Context Protocol、开发工具链。
35 分钟
MCP 与工具集成
MCP(Model Context Protocol) 用统一协议把 工具、只读资源、提示模板 暴露给 Cursor、Claude Desktop 或自建 Agent。一次实现 Server,多端复用——对应 ai-engineer 的 MCP 节点。Agent 对比见 ai-agents-essentials 的 agt-mcp。
学习目标
- 区分 MCP 的 tools、resources、prompts
- 理解 Client / Server 边界与鉴权位置
- 规划 CodeRoadMap 类知识服务的 MCP 化
架构
MCP Client(Cursor / Agent 网关)
↔ stdio / SSE + JSON-RPC
MCP Server(检索、Git、DB、浏览器…)
| 类型 | 用途 | 示例 |
|---|---|---|
| Tools | 可执行、有副作用 | search_course_index, get_outline |
| Resources | 只读上下文 URI | course://ai-engineer-advanced-essentials/outline |
| Prompts | 可复用模板 | draft-lesson-review |
Client 拉 capability 列表 → 模型决策 → Client 代调用 Server。Secrets 只在 Server 侧,与 ai-engineering-essentials 数据边界一致。
与 function calling 的映射
def mcp_tools_to_openai(mcp_client) -> list:
caps = mcp_client.list_tools()
return [
{"type": "function", "function": {"name": t.name, "description": t.description, "parameters": t.input_schema}}
for t in caps
]
网关模式:Agent 运行时内嵌 MCP Client → 转成当前厂商的 tools 数组 → 执行时回写 MCP。
站内场景设计
Tools
search_docs:向量 + metadata 过滤published=trueread_outline:按 track slug 返回outline.yaml摘要
Resources
- 稳定大文档:Elasticsearch mapping 说明、团队 AI 公约节选
注意:draft 默认不进入用户-facing 检索;MCP Server 内 enforce 与 RAG 相同红线。
部署与安全
- 本地 dev:
stdio启动;pin 依赖版本 - 远程:SSE + OAuth / API key;最小权限
- 审计:记录 tool 名、参数摘要(脱敏)、latency
MCP ——prompt injection 可能诱导调用危险 tool。结合 aen-safety 的 allowlist 与人工批准。