2026-06-28 · 2026-07-26 更新
模型上下文协议(MCP):连接AI与您工具的桥梁
MCP是Anthropic推出的开放标准,专门用于连接AI助手与外部数据源和工具。本文将深入介绍客户端-服务器模型、传输协议、核心能力以及如何高效部署运行MCP服务器。

Last updated: July 26, 2026
MCP — 模型上下文协议(Model Context Protocol)— 是 Anthropic 于 2024 年底发布的一个开放标准,用于将 AI 助手和代理连接到外部数据源和工具。与其为每个模型和每个工具编写定制的集成,不如暴露一个 MCP 服务器,任何兼容 MCP 的客户端都可以使用它。上周我将文件系统服务器和 GitHub 服务器连接到了 Claude Code 上,代理实际能做到的事情上的差异是立竿见影的。本文介绍了 MCP 是什么、客户端-服务器模型如何工作、核心能力类型以及如何在自己的设置中运行服务器。
快速答案:什么是 MCP?
MCP 是一个基于 JSON-RPC 2.0 的协议,它标准化了 AI 主机应用程序(如 Claude Desktop 或 Claude Code 的 MCP 客户端)与暴露数据和操作的外部 服务器 之间的连接。单个 MCP 服务器可以向客户端宣传三种能力类型:
- Tools — 模型可以调用的函数(查询数据库、发送消息、搜索仓库)。
- Resources — 模型可以读取的结构化数据(文件内容、API 响应、记录)。
- Prompts — 用户可以调用的可重用参数化提示模板。
目标是实现“AI 集成的 USB-C”:一个服务器,多个客户端,无需针对模型的粘合剂。该规范和 SDK 是开源的,并在 modelcontextprotocol 的 GitHub 上维护,官方文档可以在 modelcontextprotocol.io 查看。
为什么存在 MCP?
在 MCP 之前,每个工具集成都是一次性的。如果你想让助手既能读取你的 GitHub issue,又能查询 Postgres,你必须编写两个自定义连接器,当更换模型或主机时,再重写它们。Anthropic 的动机是消除这种重复性,通过一个共享协议——官方文档 将其描述为赋予模型对本地文件、数据库和 API 的“标准化访问”能力。
对于代理工作流程来说,这一点至关重要。只能聊天的代理只是一个聊天机器人;而能够读取你的仓库、运行查询并在循环中调用工具的代理才是真正的工人。MCP 就是使第二种类型可移植性的管道。如果想了解它在代理设计中的更广阔图景,请参阅 我们关于 AI 代理自动化的文章。
客户端-服务器模型如何工作?
MCP 遵循主机-客户端-服务器的拓扑结构:
- Host — 用户运行的应用程序(Claude Desktop、Claude Code、IDE 扩展)。
- Client — 存在于 Host 内部,与一个服务器保持 1:1 的会话。
- Server — 一个通过传输层暴露能力的进程。
一个主机可以运行多个客户端,每个客户端都连接到一个服务器。该协议是 JSON-RPC 2.0,每当我添加一个新的服务器时,我都会测试三个生命周期阶段:
- Initialize(初始化) — 客户端发送协议版本、能力和客户端信息;服务器则响应其自身的信息。
- Capability negotiation(能力协商) — 两侧声明它们支持什么(工具、资源、提示、采样、根目录)。
- Operation(操作) — 客户端请求工具列表,调用工具,读取资源,然后服务器将结果流式传输回来。
传输选项
| Transport | 运行位置 | 使用场景 |
|---|---|---|
| stdio | 本地子进程,通过 stdin/stdout 通信 | 本地开发工具、文件系统、git — 我机器上的任何东西 |
| Streamable HTTP | 通过 HTTPS 的远程服务器,可选 SSE 流式传输 | 共享团队服务器、云托管集成 |
| SSE (legacy) | 远程,服务器发送事件 | 正在淘汰的旧服务器;新构建请避免使用 |
stdio 是本地设置的默认选项,除非你传递了 HTTP URL,否则 claude mcp add 就会使用它。如需更深入了解 claude mcp add 和 stdio 与 HTTP 的选择,请参阅 我们的 Claude Code MCP 集成指南。

实践中这三种能力类型是什么?
MCP 的大部分价值都体现在这三种能力类型上。以下是模型使用它们时,每种类型实际行为的展示。
Tools (模型调用)
工具是主力军。模型根据对话决定是否调用它们。我运行了一个暴露了 search_logs 工具的服务器,当我问“为什么部署在凌晨 2 点失败了?”时,模型立即无提示地调用了它。工具定义包含用于参数的 JSON Schema,因此模型会获得类型化、验证过的输入。
Resources (应用控制)
资源通过 URI 进行寻址,通常是用户选择的,而不是模型选择的——用户附加一个资源(如文件或记录),主机将其注入到上下文中。这对于范围控制很重要:模型只能看到你明确提供给它的内容。
Prompts (用户调用)
提示模板带有参数,会显示在主机的 UI 中作为斜杠命令或菜单项。这是使用最少的能力——我用它们来编码“根据我们的风格指南审查此 PR”,这样我就不必每次都粘贴相同的指令了。
如何设置 MCP 服务器?
以 Claude Code 为主机进行具体设置。同样的服务器配置可以在 Claude Desktop 的 JSON 文件中使用。
- 安装 Node.js 20+(或使用
uv的 Python 3.10+)。 - 添加一个参考服务器,例如文件系统服务器:
npx -y @modelcontextprotocol/server-filesystem /Users/you/projects - 在 Claude Code 中注册它:
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /Users/you/projects - 验证连接:
claude mcp list然后claude mcp get filesystem - 重启主机,并在会话中查找服务器的工具。
这就是整个流程。GitHub 组织中的参考服务器涵盖了文件系统、Git、GitHub、Postgres、SQLite、Slack、Google Drive、Puppeteer 等。
一个最小化的自定义服务器(Python)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("status")
@mcp.tool()
def healthcheck(service: str) -> str:
"""Return the current status of a service."""
return f"{service}: ok"
if __name__ == "__main__":
mcp.run(transport="stdio")
我花了大约十分钟就用它测试了一个暂存端点,包括将其连接到 Claude Code。关于如何将内部服务作为代理可调用 API 暴露的更广泛模式,我们的 AI API 开发指南 对认证和速率限制进行了更深入的探讨。
2026 年生态系统是什么样的?
该生态系统已经围绕官方注册表和少数维护良好的参考服务器整合。我保留了一份在生产环境中真正信任的简短列表:
- filesystem — 本地文件读写,带有根目录限制。
- github — issue、PR、搜索、文件操作。
- postgres / sqlite — 默认只读,模式自省。
- puppeteer / playwright — 用于代理的浏览器自动化。
- slack — 通道读取和消息发送。
| Capability | 最常用的服务器 | 默认安全姿态 |
|---|---|---|
| File access | filesystem | 限制在明确指定的根目录 |
| Code host | github | 重读为主;写入需要显式配置 |
| Database | postgres | 除非选择启用,否则只读 |
| Browser | playwright | 沙盒化配置文件 |
| Messaging | slack | 限于通道范围的 token |
关于编排多个后台子代理(subagents)的服务器——一个子代理拥有数据库,另一个拥有浏览器——我们关于 Claude Code 子代理的文章 展示了团队模式。
需要注意什么?
这是大多数人忽略的部分。MCP 服务器使用你的凭证和文件系统访问权限运行,因此范围至关重要。
- 将每个服务器视为一个依赖项。 固定版本,在运行
npx到陌生人的仓库之前审计源代码。恶意的工具可能会窃取模型能看到的一切信息。 - 限制根目录。 文件系统服务器的安全性仅限于你指向的目录——绝不能传递
/。 - 优先使用只读数据库配置,直到你有明确需要启用写入的原因。
- 注意提示注入(prompt injection)。 如果一个工具返回的内容被模型用于后续操作,不受信任的输入可能会变成指令。假设任何资源都是恶意的。
- 限定 OAuth token 的范围。 Slack 和 GitHub token 应该使用服务器所需的最小权限范围,而不是你的个人 token。
我总是在一个沙盒账户中启动每个新服务器,并在信任它在真实会话中使用之前观察最初的几次工具调用。

关键要点
MCP 是一个解决实际问题的小型协议:它允许一个服务器将工具、资源和提示暴露给任何兼容的 AI 主机,消除了 N 个模型乘以 M 个集成带来的成本。其机制很简单——通过 stdio 或 HTTP 初始化、协商、操作——但安全姿态才是决定它是否属于你工作流的部分。运行你可以审计的服务器,严格限定它们的凭证范围,并假设不受信任的输入是恶意的。做到这一点,MCP 就是将一个助手转化为能够真正触及你系统的代理的最干净的方式。
图片鸣谢
- 显示在显示器屏幕上的源代码 — 照片由 Markus Spiske 在 Pexels 提供
- 一个开发者在笔记本电脑上输入代码,同时在终端中配置服务器 — 照片由 Vlada Karpovich 在 Pexels 提供
- 象征分层架构的抽象电路板组合 — 照片由 Christina Morillo 在 Pexels 提供
继续阅读

2026-08-27
隐形水印:2026年的图片文件到底带着什么
画图会在AI图片里嵌入服务器下发的GUID,社交平台会剥掉C2PA清单,而一次普通的WebP转换就能把这些全部抹掉。这篇讲清楚你的图片文件究竟携带了什么,以及怎么自己查。

2026-08-09
2026 年批量抠图工具对比:电商场景
2026 年电商批量抠图横评:PhotoRoom、remove.bg、Pixelcut 三家的价格、批量上限、边缘质量与 API 能力逐项对比,并附上印花安全边缘、按需印花白边、套餐中途变动的真实社区信号,以及机会缺口分析,帮你挑出最贴合商品目录工作流的那一款。

2026-08-02
批量背景去除:一次处理数百张图片
按工具和成本对比批量抠图方案:rembg CLI 免费本地批量处理,remove.bg 与 Photoroom API 适合商品目录,以及如何匹配商品照片工作流。