MCP 协议
Model Context Protocol、工具与资源。
35 分钟
MCP 协议
MCP(Model Context Protocol) 是连接 LLM 客户端与 工具、资源、提示模板 的开放协议。Think「USB-C for AI apps」:一次实现 MCP Server,Cursor、Claude Desktop、自建 Agent 网关都能 同一套方式 发现与调用能力。
学习目标
- 理解 MCP 中 tools、resources、prompts 三类能力
- 区分 MCP 与裸 function calling、HTTP 微服务的边界
- 知道如何在 Agent 架构里挂载 MCP Server
架构一览
MCP Client(Cursor / Agent 运行时)
↔ JSON-RPC / stdio / SSE
MCP Server(你的服务:Git、DB、检索、浏览器…)
| 概念 | 作用 |
|---|---|
| Tools | 可执行动作,类似 function calling |
| Resources | 只读上下文,如文件 URI、schema 快照 |
| Prompts | 可复用的提示模板(可选) |
Client 拉取 Server 能力列表,模型决策后 Client 代为调用 Server——与 agt-tools 相同:模型不直连生产库。
与 function calling 的关系
- Function calling:厂商 API 格式(OpenAI tools、Anthropic tools)
- MCP:跨客户端的标准 工具供应层
常见模式:Agent 网关内嵌 MCP Client → 把 MCP tools 映射 为当前模型 API 的 tools 数组。RAG 检索、读 outline.yaml、查 ES 都可做成 MCP Server。
工具与资源示例
Tools
search_course_index:向量 + 过滤get_outline:读outline.yaml片段
Resources
course://ai-agents-essentials/outline:只读 YAMLdoc://elasticsearch-essentials/es-query:讲义节选
Resources 适合 大段稳定上下文;频繁变化的数据仍用 tool 查询。与 elasticsearch-essentials 结合:ES 查询封装为 tool,mapping 说明暴露为 resource。
部署与安全
- 本地 dev:stdio 启动 Server;CI 避免随意
npx未 pin 版本 - 远程:SSE + 鉴权;最小权限 API key
- 见 agt-safety:MCP 等于 扩大攻击面,需 allowlist
Cursor 用户已在用 MCP(浏览器、Prisma 等插件);理解协议有助于 自建 CodeRoadMap 知识 Server。