大家好,我是程序员柏风,AI 最全的 Vibecoding 学习地图 http://coderoadmap.cn 作者。
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 与人工批准。
练习
- 列 3 个适合 tool、3 个适合 resource 的站内能力
- 画鉴权边界:哪些 key 绝不能进 Client 日志
- 对比「裸 REST」与 MCP 集成的运维成本各两条
小结
MCP 标准化供给层;执行、鉴权、审计仍在你的 Server。 下一课直接对接 OpenAI、Gemini、Hugging Face 等模型 API。