跳到主要内容

MCP 概览与实践

MCP(Model Context Protocol,模型上下文协议) 是 Anthropic 发起、社区维护的开放标准,用统一方式把 LLM 应用 接到 外部数据与工具。本篇建立最小心智模型:它和 Agent 内置工具有什么不同、架构长什么样、何时该用。Agent 循环见 Agent 核心概念与架构;多 Agent 协作见 A2A 概览与协议。

MCP 解决什么问题​

痛点没有 MCP有 MCP
接 Git / DB / API每个宿主各写一套 adapterServer 一次实现,多宿主复用
工具 schema各家格式不一统一 Tools / Resources / Prompts 原语
权限与边界散落各处Host 管控连接与用户确认;远程鉴权走 Web 标准(OAuth / API Key 等)
生态N×M 集成Server 生态 + Client 生态解耦

一句话:MCP 是「模型应用 ↔ 外部世界」的标准插头,不是 Agent 框架本身。

架构:Host / Client / Server​

┌─────────────────────────────────────────────┐
│ Host(Cursor、Claude Desktop、自研 App) │
│ ├─ Client 1 ──JSON-RPC──→ MCP Server A │
│ ├─ Client 2 ──JSON-RPC──→ MCP Server B │
│ └─ Client 3 ──JSON-RPC──→ MCP Server C │
└─────────────────────────────────────────────┘
│
▼
各 Server 访问真实资源(文件 / DB / HTTP)
角色职责
Host跑 LLM 的应用进程;管理 Client 生命周期、权限、用户确认
ClientHost 内 1:1 连一个 Server 的连接器;维护会话、转发请求
Server暴露能力的一方:工具、资源、提示模板等

典型流程(有状态版本):initialize 协商版本与能力 → 正常请求/响应 → 可选通知(如资源变更)→ 结束会话。较新的规范在向 无会话握手的 stateless 模型演进——面试答「有 initialize 协商」仍常见,提一句版本在变即可。

三大 Server 原语​

原语是什么谁控制典型例子
Tools可调用的函数(带 JSON Schema),可有副作用模型(发现并决定何时调用;Host 可要求用户确认)search_docs、run_sql、create_issue
Resources只读数据(URI 标识),供应用拉取后塞进上下文应用 / Host文件内容、表结构、配置片段
Prompts可复用提示 / 工作流模板(可带参数)用户(显式选用,如 slash command)「按团队规范写 PR 描述」

Client 侧还可提供 Elicitation(Server 向用户追问)。历史上还有 Sampling(Server 反向请 Host 调模型)、Roots(声明文件系统边界)——规范 2026-07-28 已将二者标为 deprecated,面试点到「曾有、正在淘汰」即可。

与 Agent 内置工具的关系​

维度Agent 内手写 Tool RegistryMCP
边界同进程 / 同代码库跨进程、跨语言、可独立部署
复用绑死在当前项目Server 可被 Cursor、Claude、自研 Host 共用
适合业务强耦合、极低延迟通用能力(文件、Git、DB、SaaS)
组合常与 MCP 并存MCP Tool 可注册进 Agent 的 tool list

实践上常见:核心业务工具自研 + 通用集成走 MCP Server。

传输与安全​

传输场景
stdio本地子进程 Server(CLI 工具包装)
Streamable HTTP远程 Server、多客户端
(历史)HTTP+SSE旧版远程传输,已被 Streamable HTTP 取代

安全要点(生产必谈):

  • Host 控制 连哪些 Server、用户是否批准敏感操作
  • Server 最小权限:只暴露必要 Tools/Resources
  • 远程 Server 走 HTTPS + OAuth / API Key 等标准 Web 鉴权(鉴权在传输/应用层,不只靠 Host)
  • 日志脱敏:工具参数里常有 PII

最小配置直觉(以 Cursor 为例)​

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed"]
}
}
}
  • command + args:启动本地 stdio Server
  • 也可配置 URL 连接远程 HTTP Server
  • 上例末尾路径是 Server 启动参数里的目录白名单(别把整盘放开);勿与已弃用的协议能力 Roots 混为一谈

vs A2A:别混层​

MCPA2A
连接谁应用(Host)↔ 工具/数据 ServerAgent ↔ Agent
抽象Tools、Resources、PromptsTask、Message、Agent Card
类比USB 设备协议同事之间派活、对进度

二者 互补:Agent 用 MCP 拿工具,用 A2A 找别的 Agent 协作。详见 A2A 概览与协议。

何时用 / 不用​

信号建议
要接 Git、DB、Issue 跟踪等通用系统优先找现成 MCP Server
工具逻辑与业务域强绑定、毫秒级同进程自研函数工具即可
多产品要共用同一套集成抽成 MCP Server
只是单次 HTTP 调用、无复用不必为 MCP 而 MCP
需要 Agent 之间分工看 A2A,不是 MCP

常见误解​

  1. 「MCP = Agent」——MCP 只管 上下文与工具接入,不管规划循环
  2. 「上了 MCP 就不用写工具」——仍要设计 schema、鉴权、错误语义
  3. 「MCP 和 function calling 冲突」——MCP 是 交付工具的方式,function calling 是 模型选工具的机制,常一起用
  4. 「所有 Server 都可信」——Host 必须当 零信任客户端,审 Server 来源与权限

面试速记​

  1. MCP 是什么? 开放协议,标准化 LLM 应用连接外部数据与工具;基于 JSON-RPC,角色为 Host / Client / Server。
  2. 三大原语? Tools(模型调用)、Resources(应用拉取的只读上下文)、Prompts(用户选用的模板);控制方不同是常考点。
  3. 和 Agent 工具的区别? MCP 强调 跨宿主复用与进程边界;Agent 内置工具适合强耦合业务逻辑。
  4. 和 A2A 的关系? 互补:MCP 连工具与数据,A2A 连 Agent 与 Agent。
  5. 生产要注意什么? 权限白名单、鉴权、敏感操作确认、日志脱敏、Server 供应链可信。