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

Last updated: June 28, 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 提供
继续阅读

Wed Mar 25 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
批量图片尺寸调整器:一次性调整数百张图片(免费)
使用浏览器工具、ImageMagick、XnConvert 或 Python 脚本,免费批量调整数百张图片。它提供真正的字节节省和安全的批处理工作流程。

Wed Mar 18 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
WebP 转换器:如何将图片转换为 WebP 格式(并显示实际尺寸)
将 JPEG 和 PNG 图片转换为 WebP,以获得更小的网页文件。本指南涵盖了实际测量尺寸、使用 cwebp 命令、Python 和浏览器方法,以及一套完整的 JPEG/PNG 回退策略,帮助您优化图片大小。

Wed Mar 11 2026 20:00:00 GMT-0400 (Eastern Daylight Time)
Real-ESRGAN AI 上采样:工作原理及使用时机
本文将详细介绍 Real-ESRGAN 是什么,其基于 GAN 的超分辨率工作原理。我们将探讨它擅长的领域(如照片和艺术品的 4x upscaling)以及局限性所在,并提供操作命令和真实的性能限制分析。