MCP
Model Context Protocol,用统一协议把工具、资源和提示能力接入 AI 客户端。
#ai
#mcp
#concept
#growing
[!info] related notes
- 所属 MOC: mcp-moc
- 关系对比: MCP vs Function Calling
- HTTP 授权: MCP HTTP 授权与 REST API 鉴权的关系
- 相关概念: function-calling, docker-mcp-toolkit, [private note]
MCP
MCP 不是某一个具体工具,而是一套协议标准。它的目标是让 AI 客户端用统一方式接入外部工具、资源和提示能力。
一句话定义
MCP 可以理解成“AI 客户端和外部工具生态之间的标准接口层”。
为什么会有 MCP
如果没有统一协议,不同 AI 客户端接不同工具时,经常会出现:
- 每个工具接法都不一样
- 每个客户端都要单独适配
- 工具、资源、提示很难统一暴露
MCP 解决的就是这个集成标准化问题。
三个核心角色
MCP Host
AI 应用本身,比如 IDE、桌面助手、聊天客户端。
MCP Client
Host 里负责和某个 MCP Server 建连接的那一层。
MCP Server
真正暴露能力的服务端,里面可以提供:
- tools
- resources
- prompts
粗略工作流程
- Host 连接 MCP Server
- Server 告诉客户端自己能提供哪些工具和资源
- 用户发起问题
- Host 根据模型判断,选择是否调用某个 MCP 能力
- Server 返回结果,Host 再组织给用户
与 Function Calling 的关系
两者位于不同抽象层:MCP 负责能力接入协议,Function Calling 负责模型表达结构化工具调用。完整关系见 MCP vs Function Calling。
远程 HTTP 与授权
受保护的远程 MCP 仍可以在 HTTP 请求里携带 Authorization: Bearer <access-token>;MCP 的特殊之处是统一 JSON-RPC 工具发现/调用及 OAuth discovery,而不是发明另一种 Token。首次 OAuth 登录与后续每次 Bearer HTTP 调用是两件事,详见 MCP HTTP 授权与 REST API 鉴权的关系。
客户端如何取得 OAuth client_id,由 预注册、CIMD 与 DCR 等机制决定;它并不自动证明用户已经授权。
学习检查
不看正文回答:
- MCP 的 Host、Client、Server 三个角色分别负责什么?
- MCP Server 除了 tools 之外还可以暴露哪些类型的能力?
- 为什么 MCP 解决的是“统一接入”问题,而不是“模型怎么推理”的问题?
- 一个 MCP Server 暴露工具后,真正调用链会经过哪些角色?
- MCP 与 Function Calling 为什么不是互相替代关系?
- 如果两个 AI 客户端都支持 MCP,它们为什么更容易复用同一个 Server 生态?