Model Context Protocol(模型上下文协议,简称 MCP)是 2024 年 11 月由 Anthropic 开源并推动成为社区标准的开放协议,定位是解决 AI 应用接入外部数据源和工具时的集成碎片化问题。在 MCP 出现之前,每个 AI 应用与每种数据源 / 工具之间都要单独开发一套适配代码,N 个应用 × M 个系统的接入工作量为乘积关系,开发与维护成本随系统数量线性爆炸。MCP 采用客户端-服务器(Client-Server)模型,让工具与数据的提供方只需按协议实现一个服务器端,即可被任意支持 MCP 的客户端加载,接入方式从「逐对开发」变成「一次接入、处处复用」。协议本身基于 JSON-RPC 2.0,支持本地 stdio 与远程 Streamable HTTP 两种传输方式,并提供 Python、TypeScript 官方 SDK。截至 2025 年年中,Claude Desktop、Cursor、Cline、OpenAI 等主流 AI 客户端均已宣布或落地对 MCP 的支持。本文从安装配置、快速上手、核心能力、生产部署与选型对比五个维度,帮助读者完整掌握 MCP 并能在实际项目中落地。

岗位关联

掌握 MCP,意味着你不再为每个 AI 应用重复开发工具集成层,而是用一套标准协议把工具与服务接入一次、随处复用——这是 AI 应用工程师与企业平台团队从「写 Demo」走向「做平台」的关键能力。

目录
  1. 为什么需要 MCP:告别 M×N 的工具接入矩阵
  2. 安装与环境配置:3 步就绪
  3. 快速上手:10 分钟跑通第一个示例
  4. 核心能力详解:4 大支柱
  5. 生产部署与监控:从上线到运维
  6. 版本迭代
  7. AI 应用场景
  8. 常见误区
  9. 面试题
  10. 参考来源
工具类型
开放协议(AI 工具 / 上下文接入标准)
开发商
Anthropic(规范移交社区治理)
开源协议
MIT(协议规范与官方 SDK 均可商用)
GitHub Stars
无
主要语言
协议层 JSON-RPC;官方 SDK 提供 Python / TypeScript
当前版本
规范 2025-06-18(SDK 1.x)
安装方式
pip install mcp 或 npm install @modelcontextprotocol/sdk
上手难度
★★★☆☆(需理解客户端-服务器模型与协议握手)
适合人群
LLM 应用工程师、AI Agent 开发者、工具 / 数据平台团队
同类工具
OpenAI Function Calling、Google A2A、LangChain 工具抽象
托管服务
无

速览卡是工具类内容的固定首屏模块:30 秒判断「这工具是什么、能不能商用、适不适合我」。

为什么需要 MCP:告别 M×N 的工具接入矩阵

传统 AI 应用接入外部系统的做法是「逐对集成」:每个应用都要为数据库、文件系统、企业内部 API、第三方 SaaS 分别编写适配层,且这些适配代码彼此不通用。当应用数量和数据源数量同时增长时,集成成本呈 M×N 的乘积增长;同时,工具接口飘忽不定,模型侧的提示词(Prompt)也需要跟着每个接口反复调优,维护成本极高。这也是 2024 年大量 AI Agent 项目「原型很快、落地很慢」的核心原因之一。

MCP 把集成问题收敛为「一端写协议,两端按协议实现」:工具、数据源、提示模板的提供方实现 MCP 服务器,AI 应用作为 MCP 客户端发起连接。自此,服务器开发一次,即可被所有兼容客户端复用;客户端接入一次,即可发现该服务器暴露的全部能力。官方将这一模式类比为「语言服务器协议(LSP)之于编辑器」——LSP 让 IDE 无需为每种语言单独实现智能提示,MCP 则让 AI 应用无需为每个工具单独实现调用逻辑。

与 LangChain 这类「框架层抽象」不同,MCP 不绑定任何模型、语言或编排方式,它只负责连接和消息交换。你可以用 MCP 连接任意模型,也可以在 LangChain、CrewAI 等框架之上再套 MCP 作为工具接入层。这种「只做协议、不锁生态」的定位,是它区别于各家私有方案的最大不同。

安装与环境配置:3 步就绪

安装 MCP 分为「安装客户端宿主」和「安装 SDK 编写服务器」两类。最快的验证路径是先用官方参考服务器跑通客户端连接,再进入 SDK 开发。

步骤一·安装 Python SDK(开发服务器用)

Python 官方 SDK 的包名为 mcp,安装后同时提供 mcp 命令行工具与 FastMCP 开发框架。

步骤二·安装 TypeScript SDK(开发服务器用)

TypeScript 官方 SDK 包名为 @modelcontextprotocol/sdk,用 npm 安装。

步骤三·拉取官方参考服务器(验证客户端用)

@modelcontextprotocol/server-everything 是官方发布的参考服务器,暴露 20 余个示例工具(算术、字符串处理、资源读取等),用作客户端连通性测试。

验证完成的标准:第三步命令启动后不报错退出,说明依赖与运行时环境就绪。注意 npx 首次运行会下载包,需要数秒到数分钟,网络受限环境需提前配置 npm 镜像。

bash10 行
# 1. 安装 Python SDK(含 mcp CLI 与 FastMCP 框架)pip install mcp# 验证安装mcp --version # 2. 安装 TypeScript SDKnpm install @modelcontextprotocol/sdk # 3. 通过 npx 临时运行官方参考服务器(everything 服务器)npx -y @modelcontextprotocol/server-everything

快速上手:10 分钟跑通第一个示例

最快跑通全链路的方式是「Claude Desktop 客户端 + 官方 everything 参考服务器」。以下步骤在 Claude Desktop 中完成:

1. 安装并启动 Claude Desktop,进入「设置 → 开发者 → 编辑配置文件」;macOS 配置文件位于 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 位于 %APPDATA%\Claude\claude_desktop_config.json。

2. 在配置文件的 mcpServers 字段下添加 everything 服务器条目,保存文件:

3. 完全退出并重启 Claude Desktop,回到聊天输入框,点击输入框旁的工具图标查看工具列表——应能看到 echo、add、getResource 等一批工具被加载。

4. 在对话框中输入「用 add 工具计算 15 加 27」,观察模型调用工具并返回结果,即代表 MCP 全链路跑通。

若你以服务器开发者身份接入,则用 FastMCP 编写最小服务器更直接。创建 server.py,内容如下:

运行 mcp dev server.py 会启动官方调试 UI,可实时查看工具列表并测试调用;开发完成后将 mcp.run() 用于生产模式。进阶技巧:将 @mcp.tool() 换成 @mcp.resource("file://demo") 可暴露资源,换成 @mcp.prompt() 可暴露提示模板。

json8 行
{  "mcpServers": {    "everything": {      "command": "npx",      "args": ["-y", "@modelcontextprotocol/server-everything"]    }  }}
python12 行
# server.py:基于 FastMCP 的最小 MCP 服务器(Python SDK 1.x)from mcp.server.fastmcp import FastMCP mcp = FastMCP("Demo") @mcp.tool()def add(a: int, b: int) -> int:    """返回两个整数的和。"""    return a + b if __name__ == "__main__":    mcp.run()

核心能力详解:4 大支柱

支柱一·三原语模型(Tools / Resources / Prompts)。MCP 以三种原语定义服务器能力:工具(Tools)是模型主动调用的函数式能力,需要在模型调用前响应用户确认;资源(Resources)是模型按需读取的应用数据,相当于「只读的 GET 接口」,适合暴露文件、数据库记录和配置项;提示模板(Prompts)是用户手动触发的可复用指令模板。三者覆盖了 AI 应用与外部系统交互的绝大多数场景,官方 SDK 均提供对应的装饰器或注册方法。

支柱二·客户端-服务器架构与 JSON-RPC 2.0。MCP 通信建立在 JSON-RPC 2.0 之上,一切能力协商都通过标准消息完成:客户端先发送 initialize 请求协商协议版本与能力,服务器返回支持的协议版本和 capabilities;之后双方互发 notifications/initialized 完成握手,再进入工具发现、资源读取等业务消息阶段。所有交互都有明确的请求-响应或通知语义,便于序列化、日志审计与跨语言实现。

支柱三·双传输通道(stdio 与 Streamable HTTP)。MCP 支持两类传输:stdio 传输让服务器作为客户端宿主机器的子进程运行,通过标准输入输出交换消息,适合本地文件访问和低延迟场景;Streamable HTTP 传输(2025-03-26 版本起取代早期的 HTTP+SSE)让服务器以普通 HTTP 端点暴露,支持远程多客户端并发访问与标准鉴权。两者在消息层面完全一致,切换传输只需替换连接代码。

支柱四·FastMCP 与 SDK 生态。官方 Python 与 TypeScript SDK 提供从底层会话(Session)到高层框架(FastMCP / McpServer)的两层 API。FastMCP 以装饰器声明工具,自动完成参数描述、JSON Schema 生成与校验;TypeScript 版 McpServer 提供等价能力。官方还维护参考服务器集与 Inspector 调试器,覆盖「开发-验证-部署」全流程。

生产部署与监控:从上线到运维

部署方式一·本地 stdio 服务:将 MCP 服务器打包为独立进程或 Docker 容器,由客户端宿主(IDE、桌面应用、代理)按需拉起,通过 stdio 通信。这是最常用的多,尤其适合需要访问本地文件系统、内网数据库且数据不能出域的场景。实施时需为服务器进程配置最小文件权限、网络白名单和资源上限,防止模型误调用造成破坏。

部署方式二·远程 Streamable HTTP 服务:面向多客户端共享工具的团队,将 MCP 服务器部署为 HTTP 端点,部署在网关之后。网关需实现 OAuth 2.0 授权、TLS 终止、请求限流、超时控制与审计日志;多实例横向扩展时,注意会话状态管理和长任务的进度通知路由。2025-03-26 版本起官方不再推荐使用 HTTP+SSE 模式,新项目直接用 Streamable HTTP。

可观测性:在服务器侧记录每条 JSON-RPC 请求的类型、耗时、响应状态与错误信息,按客户端、工具、会话维度聚合指标;在客户端侧记录模型实际发起工具调用的时机与次数。联调阶段使用 npx @modelcontextprotocol/inspector 启动调试器,可直观查看工具参数校验、资源内容和错误栈,快速定位「工具未加载」或「参数不匹配」类问题。

<p class="para-label">避坑清单:</p>

<ul class="dash-list"><li>坑 1:MCP 不负责模型推理。它只负责把工具和数据给到客户端,具体调用哪个大模型、如何编排由客户端决定,不要把 MCP 当成推理框架。</li><li>坑 2:stdio 传输只能用于本地进程。用它跨机器联调会失败,远程服务必须改用 Streamable HTTP 并在网关注入鉴权与限流。</li><li>坑 3:Python 官方包名只有一个 mcp,早期社区流传的 mcp-server 包并非官方且已弃用,装错会导致 API 对不上。</li><li>坑 4:规范迭代快。2025-06-18 版本对原语消息 schema 做了统一修订,旧版 SDK(0.x)与新规范不兼容,生产环境务必锁定规范版本并配套 SDK 1.x。</li><li>坑 5:加载有敏感权限的服务器前必须做安全审查。模型可能在任何上下文触发工具调用,给服务器的文件与网络权限应遵循最小化原则。</li></ul>

维度MCPOpenAI Function CallingGoogle A2ALangChain 工具抽象
定位开放的工具 / 上下文接入协议OpenAI API 内建的工具调用接口智能体之间通信的开放协议框架内置的工具调用抽象层
编排范式客户端-服务器 + JSON-RPC 2.0REST API 传参定义函数Agent Card 发现 + JSON-RPC 消息链式 / 图式代码编排
类型约束不绑定语言与模型,工具以 JSON Schema 描述仅限 OpenAI 系列模型与 SDK协议层无语言绑定绑定 Python / TypeScript 框架生态
学习曲线中等(需掌握原语与传输层)低(文档即用)中等较高(框架概念较多)
生态集成Claude、Cursor、Cline、OpenAI 等广泛接入OpenAI 全家桶原生支持Google 生态(Vertex AI、ACE)第三方 API 集成插件丰富
生产部署独立服务,本地 stdio 或远程 HTTP,可容器化仅托管 API,无自托管独立 HTTP 端点部署嵌入应用进程,服务化需额外封装
LicenseMIT(协议 + SDK)闭源商业 APIApache 2.0MIT
适合谁工具开发商、企业平台团队、希望标准化集成的人OpenAI 用户、API 优先的 SaaS 厂商多智能体协同编排团队追求快速原型、深度定制 LLM 应用的开发者

选型建议:如果你在构建可复用的工具层或数据接入层,MCP 是当前开放性最好、客户端覆盖最广的选择;如果只在 OpenAI API 内部做简单工具调用,Function Calling 的学习成本最低;若核心诉求是多个智能体互相通信,则关注 A2A;LangChain 适合已有框架技术栈、需要把 MCP 作为工具来源之一的团队,二者并非互斥关系。

版本迭代

MCP 从 2024 年 11 月首次发布稳定版至今,演进主线始终是「降低接入复杂度、提升可部署性」。继 2024-11-25 的首版确立三原语模型与双传输雏形后,2025 年的两次修订分别解决了远程部署的传输层痛点(2025-03-26)和原语消息形态不统一的问题(2025-06-18),同时促成了主流客户端厂商的全面跟进。(截至训练数据,可能已有更新版本)

版本时间变化提升
2024-11-252024-11首个公开稳定版确立客户端-服务器模型,定义 tools / resources / prompts 三原语,提供 stdio 与 HTTP+SSE 两种传输
2025-03-262025-03传输层重大修订以 Streamable HTTP 取代 HTTP+SSE,简化远程部署与 OAuth 鉴权流程,提升流式响应能力
2025-06-182025-06原语消息规范化统一 tools、resources、prompts 的 JSON-RPC 请求 / 响应 schema 形态,压缩多 SDK 实现差异,SDK 1.x 对齐更新
结论

MCP 是协议而非模型,没有类似 MMLU 或 HumanEval 的横向评测分数,衡量其迭代成效应看生态落地广度——2025-03 传输层修订后,远程 MCP 服务器接入门槛显著降低;2025-06 的消息规范化则让不同语言 SDK 之间的互操作问题大幅减少。选型建议:新项目一律以 2025-06-18 规范 + SDK 1.x 为基线,存量 0.x 项目需预留迁移成本。

AI 应用场景

场景 1:企业数据与内部系统接入 AI 助手

阶段:工具集成 / Agent 编排

解决的问题:企业内部审批、工单、CRM 等系统接口各异,每对接一个 AI 应用都要单独写适配层。将内部 API 封装为 MCP 服务器后,开发一次即可被 Claude、Cursor、自研 Agent 等任意客户端按需加载,避免 M×N 的重复开发。

具体案例:某团队使用官方 Python SDK 将工单系统的查询与创建接口封装为两个 MCP 工具,接入 Claude Desktop 后可用对话方式完成「查单-建单」操作;接入代码从面向每个客户端各写一套的 N 套,降为维护 1 套 MCP 服务器,新客户端接入耗时从按天计压缩到按小时计。

场景 2:AI 编程助手的开发工具链扩展

阶段:Agent 编程 / 文档智能

解决的问题:IDE 内的 AI 编程助手通常只能访问当前代码库,无法触达构建日志、测试结果、内网文档。通过 MCP 暴露这些数据后,模型可以按需读取工程上下文,而不必把全部内容塞进提示词。

具体案例:开发者接入官方 filesystem 与 git 参考服务器后,在对话中即可让助手完成「搜索代码 → 读取变更文件 → 查看构建日志 → 定位错误」的复合操作;官方参考服务器集提供 fetch、git、memory、sequential-thinking 等 20 余种现成能力,多数场景无需从零开发即可组合使用。

场景 3:多团队共享的 MCP 工具网关

阶段:服务编排 / 存量系统集成

解决的问题:企业多个业务线各自接入 AI 工具会导致重复开发与权限失控。平台团队以 Streamable HTTP 部署统一 MCP 网关,集中做鉴权、审计与限流,各团队通过同一网关发现和使用工具。

具体案例:平台团队将业务工具打包为 Docker 容器,通过 Streamable HTTP 暴露,网关统一接入 OAuth 2.0 并记录每次工具调用的操作者、参数与时间戳,满足审计要求;业务方只需在客户端配置一个服务器 URL,即可发现权限范围内全部工具,无需关心其背后部署细节。

常见误区

误区我装了 MCP 就等于装了一个能帮我思考的 AI 引擎,它应该能自己回答问题、做推理。

正解MCP 只做「连接」:它负责把工具、资源和提示模板以标准格式暴露给 AI 客户端,自身不包含任何模型权重、不做推理决策。工具调用是否发生、由哪个模型执行推理,完全由客户端宿主控制。把它理解为「USB 接口规范」而非「电脑主机」更准确。

为何常见:MCP 常与 Claude 等模型一同出现,加上官方文档示例大多是「模型调用工具成功」的演示,容易让人误以为协议本身具备推理能力。

误区我 `pip install mcp` 了,但我的 AI 应用为什么看不到我写的工具?

正解MCP 的生效前提是「客户端支持 MCP」——你的应用必须实现了 MCP 客户端逻辑,才能在启动时发现并加载服务器。SDK 只是搭建服务器的工具,如果没有客户端去连它,服务器不会自动注入任何模型。最直接的验证方式是先用 Claude Desktop、Cline 等成熟客户端测试服务器再回接自有应用。

为何常见:SDK 安装是开发者最容易接触到的第一步,而客户端适配往往由产品团队决定,二者脱节导致「装完没效果」的普遍困惑。

误区我的服务器在 Linux 服务器上,本地 Windows 客户端配置一个 `ssh` 命令就能通过 stdio 远程调它。

正解stdio 的语义是「子进程内通信」,它假设服务器与客户端在同一主机、由客户端负责拉起进程。跨机器场景应使用 Streamable HTTP 传输,将服务器暴露为 HTTP 端点,客户端通过 URL 连接,同时补上鉴权、TLS 与限流。官方在 2025-03-26 之后也不再推荐用 HTTP+SSE 做远程。

为何常见:教程里的快速开始几乎都用本机 stdio 演示,容易形成「MCP 只有本地模式」的思维定式。

误区MCP 服务器只是给模型多几个工具用,像装个浏览器插件一样,不用太在意权限。

正解MCP 服务器获得的是宿主进程授予的真实系统权限——一个能读写文件系统或调用内部 API 的服务器,可能被模型在任意上下文下触发。生产环境必须遵循最小权限原则:为服务器进程单独建用户、限制文件与网络范围、对敏感工具增加人工确认,并在网关层留存审计日志。

为何常见:协议层默认「客户端信任服务器」,安全边界被设计在外围,新手容易错过官方文档中关于信任边界与授权的说明。

误区我照着 2024 年底的教程用 HTTP+SSE 搭远程服务器,客户端连不上是客户端的兼容问题。

正解2025-03-26 规范修订后,Streamable HTTP 已是官方推荐的远程传输形态,HTTP+SSE 被标记为废弃路径,多数新版本客户端不再兼容旧协议。远程接入应改用 Streamable HTTP 实现,并在客户端选择不低于 2025-03 的 SDK 版本。

为何常见:早期教程与社区文章大量基于 2024 年底版本撰写,传输层更新后又未在标题中强调,导致过时配置被长期沿用。

面试题

Q1. MCP 的核心定位是什么?

单选题 · easy

  • A.可商用的推理大模型
  • B.模型上下文接入协议← 正确答案
  • C.专有的代码生成框架
  • D.基于微调的数据管道

答案:B。MCP(Model Context Protocol)是开放协议,标准化 AI 应用接入工具与数据的流程,它不含模型权重也不做推理。A 是模型而非协议;C 的代码生成只是它的一种落地场景;D 与协议无关。

Q2. 官方 Python SDK 的包名是哪个?

单选题 · easy

  • A.mcp-server
  • B.mcp← 正确答案
  • C.modelcontext
  • D.context-protocol

答案:B。官方 Python SDK 包名为 mcp,安装后提供 mcp CLI 与 FastMCP 框架。mcp-server 是早期社区流传的非官方包名,A、C、D 均不是官方包名,装错会导致 API 不兼容。

Q3. MCP 会话建立时客户端首先发送哪条消息?

单选题 · easy

  • A.tools/call
  • B.initialize← 正确答案
  • C.resources/read
  • D.prompts/get

答案:B。协议规定客户端必须先发送 initialize 请求协商协议版本与能力,随后双方发送 notifications/initialized 完成握手,之后才能使用工具、资源等业务消息。A、C、D 都发生在握手完成后。

Q4. MCP 之于 AI 应用的关系,最接近以下哪个类比?

单选题 · easy

  • A.LSP 之于代码编辑器← 正确答案
  • B.数据库之于操作
  • C.编译器之于代码
  • D.显卡之于训练

答案:A。官方明确将 MCP 类比为 LSP:LSP 统一了编辑器获取语言能力的接口,MCP 统一了 AI 应用获取工具与数据的接口。B、C、D 均不构成「标准接口层」的对应关系。

Q5. 以下哪一项是 MCP 的三种核心原语?

单选题 · mid

  • A.工具、资源、提示模板← 正确答案
  • B.数据、模型、参数
  • C.请求、响应、通知
  • D.会话、令牌、上下文

答案:A。MCP 三原语是 Tools(工具)、Resources(资源)、Prompts(提示模板)。C 是 JSON-RPC 的消息类型而非能力原语;B 和 D 不属于协议定义的原语集合。

Q6. MCP 远程服务器在 2025-03-26 规范之后应使用哪种传输?

单选题 · mid

  • A.stdio
  • B.Streamable HTTP← 正确答案
  • C.WebSocket
  • D.gRPC

答案:B。2025-03-26 规范以 Streamable HTTP 取代 HTTP+SSE 作为远程传输的推荐方案。stdio 仅用于本地进程;WebSocket 与 gRPC 均非官方定义的 MCP 传输方式。

Q7. FastMCP 中声明一个工具的装饰器是哪个?

单选题 · mid

  • A.@mcp.tool()← 正确答案
  • B.@mcp.resource()
  • C.@mcp.prompt()
  • D.@mcp.register()

答案:A。FastMCP 使用 @mcp.tool() 装饰函数声明工具,@mcp.resource() 声明资源,@mcp.prompt() 声明提示模板。D 的 register 不是官方 API,不存在该装饰器。

Q8. 以下哪些是支持 MCP 的客户端宿主?

多选题 · mid

  • A.Claude Desktop← 正确答案
  • B.Cursor← 正确答案
  • C.Cline← 正确答案
  • D.LangChain

答案:ABC。Claude Desktop、Cursor、Cline 均已支持作为 MCP 客户端加载外部服务器。LangChain 是框架而非客户端宿主,它通过适配器消费 MCP 服务器,但本身不直接作为宿主进程连接服务器。

Q9. MCP 服务器在生产环境部署时,正确的做法有哪些?

多选题 · hard

  • A.以 stdio 方式在本地进程内运行← 正确答案
  • B.以 HTTP 服务远程部署并加鉴权← 正确答案
  • C.把大模型 API 直接集成到服务器逻辑中
  • D.使用 Docker 隔离服务器进程← 正确答案

答案:ABD。stdio 与 Streamable HTTP 都是官方部署方式,远程部署必须加鉴权,容器化是常规隔离手段。C 错在 MCP 服务器不应「集成大模型 API」作为自身逻辑——模型调用属于客户端职责。

Q10. 2025-06-18 规范修订的核心方向是什么?

单选题 · hard

  • A.取消 stdio 传输支持
  • B.统一原语消息的 JSON-RPC 形态← 正确答案
  • C.将协议改为 RESTful API
  • D.删除工具调用能力

答案:B。2025-06-18 版本的主要工作是把 tools、resources、prompts 的请求 / 响应消息形态统一为规范的 JSON-RPC schema,减少多 SDK 实现差异。stdio 仍在,协议未改为 REST,工具调用始终是核心能力。

参考来源