多年来,将 AI 模型与外部工具集成一直是由专有 API、脆弱的粘合代码和特定供应商的惯例组成的拼凑方案。每当开发者想要将语言模型连接到数据库、代码库或网络服务时,他们都会面临同样令人疲惫的问题:这个特定的生态系统期望使用哪种临时协议?
那个时代正在结束。2024年底,Anthropic 发布了模型上下文协议(MCP)—一个开放标准,它定义了 AI 模型发现、调用和与外部工具及数据源交互的通用方式。在几个月内,MCP 已成为 AI 驱动开发环境的实际互操作性层,被 Cursor、Windsurf、Claude Code 以及快速增长的第三方服务器生态系统所采用。
本文将解析 MCP 是什么、为什么它很重要、其架构如何工作,以及您今天如何开始使用它进行构建。
MCP 解决的问题
现代大型语言模型在推理方面能力非凡,但它们在一个密封的盒子中运行。如果没有明确的集成工作,它们无法读取您的文件、查询您的数据库或触发部署管道。历史上,每个 AI 应用程序处理这个问题的方式都不同:
- OpenAI 函数调用允许您声明工具模式并接收结构化的调用请求,但执行、错误处理和上下文管理完全由您负责。
- LangChain 和类似框架提供工具抽象,但它们是库级别的约定,而不是线协议。切换框架意味着重写集成。
- 自定义 REST 包装器比比皆是,但每个团队都发明自己的身份验证、流式传输和错误语义。
结果是一个 N 乘以 M 的集成问题:N 个 AI 客户端中的每一个都需要针对 M 个工具提供商的自定义适配器。MCP 通过引入一个双方可以独立瞄准的共享协议层,将这个问题简化为 N 加 M。
MCP 实际上是什么
从根本上说,MCP 是一个基于 JSON-RPC 2.0 的协议,它定义了 AI 应用程序(客户端)如何与外部功能(由 MCP 服务器暴露)进行通信。该协议指定了服务器可以暴露的三种基本类型:
工具
工具是模型可以调用的可执行函数。每个工具都有一个名称、一个描述和一个定义其输入参数的 JSON Schema。当模型决定使用工具时,客户端会向服务器发送一个 tools/call 请求,并将结果返回给模型进行进一步推理。
{
"name": "query_database",
"description": "对分析数据库执行只读 SQL 查询",
"inputSchema": {
"type": "object",
"properties": {
"sql": { "type": "string", "description": "要执行的 SQL 查询" }
},
"required": ["sql"]
}
}
资源
资源是只读的数据端点——可以将其视为文件、文档或 API 响应,模型可以将它们拉入其上下文窗口。资源具有 URI 和 MIME 类型,使它们成为提供结构化上下文且无副作用的自然选择。
提示
提示是服务器可以提供给客户端的可重用提示模板。它们允许服务器作者提供精心设计的交互模式,例如一个”代码审查”提示,它会预先填充包含相关差异信息的上下文。
客户端-服务器架构
MCP 遵循一个清晰的客户端-服务器模型,具有明确定义的角色:
- MCP 主机: 用户与之交互的 AI 应用程序(Claude Desktop、Cursor、您的自定义应用程序)。
- MCP 客户端: 嵌入在主机中的协议客户端,与每个 MCP 服务器保持 1:1 的连接。
- MCP 服务器: 一个轻量级进程,通过协议暴露工具、资源和提示。
通信通过两种传输类型进行。stdio 用于本地服务器——客户端将服务器作为子进程生成,并通过标准输入和输出进行通信。可流式传输的 HTTP(前身为 SSE)用于远程服务器,使其能够在反向代理和负载均衡器后面部署。
生命周期遵循一个可预测的模式:客户端发送一个声明其功能的 initialize 请求,服务器响应其自身功能以及它暴露的基元列表,然后双方进入操作阶段,工具调用和资源读取在其中来回流动。
MCP 与 OpenAI 函数调用的区别
表面上,MCP 工具和 OpenAI 函数调用看起来相似——两者都使用 JSON Schema 来描述输入。区别在于架构:
- 发现是动态的。 MCP 客户端通过查询服务器在运行时发现可用工具。函数调用要求您在 API 请求中硬编码工具模式。
- 执行在服务器端。 使用 MCP,服务器执行工具并返回结果。使用函数调用,API 返回结构化请求,您自己处理执行。
- MCP 与模型无关。 任何支持工具使用的 AI 模型都可以位于 MCP 客户端之后。函数调用与 OpenAI(或兼容)API 合约绑定。
- 资源和提示在函数调用范式中没有等效物。MCP 提供了更丰富的上下文管理原语。
- MCP 是一种有线协议。 服务器可以用任何语言编写并部署在任何地方。函数调用是 API 功能,而不是协议。
将函数调用想象为”模型要求您做某事”,而 MCP 则是”模型接入标准化的能力服务网格。”
采用浪潮
MCP 的采用速度非常快,这得益于 AI 原生开发工具生态系统:
Cursor
Cursor 是最早的采用者之一,集成了 MCP 支持,使其 AI 编码助手能够与数据库、API 和自定义内部工具交互。开发者在项目设置中配置 MCP 服务器,Cursor 的代理在编码会话期间自动发现并使用可用工具。
Windsurf (Codeium)
Windsurf 添加了 MCP 支持,使其 Cascade 代理能够执行代码编辑之外的操作——部署到暂存环境、查询监控仪表板以及与问题跟踪器交互,所有这些都通过 MCP 服务器实现。
Claude Code
Anthropic 自己的 CLI 工具 Claude Code 广泛使用 MCP。它内置了文件系统访问和代码分析的 MCP 功能,并支持用户配置的 MCP 服务器,以扩展其到数据库、云服务和自定义工具的覆盖范围。
服务器生态系统
开源生态系统随着 MCP 服务器实现的推出而蓬勃发展。截至 2026 年初,社区已经为 PostgreSQL、MySQL、Redis、GitHub、GitLab、Jira、Slack、Notion、Figma、AWS 服务、Google Cloud、Kubernetes、Docker、网页抓取等构建了服务器。官方的 MCP 服务器仓库和第三方注册目录现在列出了数百个可用的集成。
构建您自己的 MCP 服务器
MCP 最吸引人的特点之一是构建服务器非常简单。Anthropic 为 TypeScript 和 Python 提供了官方 SDK,社区 SDK 可用于 Go、Rust、Java 和 C#。
这是一个最基础的 TypeScript MCP 服务器,它暴露了一个单一的工具:
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
const server = new McpServer({
name: "weather-server",
version: "1.0.0",
});
server.tool(
"get_weather",
"获取给定城市的当前天气",
{ city: z.string().describe("城市名称") },
async ({ city }) => {
const response = await fetch(
`https://api.weather.example.com/current?city=${encodeURIComponent(city)}`
);
const data = await response.json();
return {
content: [
{
type: "text",
text: `${city}的天气:${data.temperature}°F,${data.condition}`,
},
],
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);
这是一个完全功能的 MCP 服务器。运行它,将你的 MCP 客户端指向它,任何连接的 AI 模型都可以检查天气。SDK 处理所有协议协商、消息帧和错误处理。
对于 Python 开发者来说,模式同样简洁:
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("weather-server")
@mcp.tool()
async def get_weather(city: str) -> str:
"""获取给定城市的当前天气。"""
# 获取天气数据
return f"{city}的天气:72°F,晴天"
mcp.run()
实际应用案例
除了代码编辑器,MCP 在多个领域正获得关注:
企业知识系统
公司正在构建 MCP 服务器,以暴露其内部文档、Confluence 知识库和知识库。AI 助手可以自然地查询这些系统,为员工提供基于公司特定信息的上下文答案。
数据分析管道
数据团队使用 MCP 服务器让 AI 模型直接访问数据仓库、BI 工具和可视化引擎。分析师可以用自然语言提问,模型通过查询仓库、生成图表并解释结果—所有这些都通过 MCP 工具调用完成。
DevOps 和基础设施
封装了 Kubernetes、Terraform 和云提供商 API 的 MCP 服务器实现了 AI 辅助的基础设施管理。工程师描述期望状态,AI 通过具有适当护栏的明确定义范围的 MCP 工具执行必要的更改。
客户支持
支持平台正在集成 MCP,让 AI 代理可以访问客户记录、订单历史和工单系统。模型可以查找相关信息、起草回复,甚至执行诸如退款之类的简单操作—所有这些都通过标准化的工具接口完成。
安全考虑
强大的能力需要谨慎的访问控制。MCP 服务器是信任边界,协议包含多种管理机制:
- 工具注释允许服务器声明工具是否为只读或具有副作用,使客户端能够实施适当的确认工作流程。
- OAuth 2.1 集成为远程服务器确保认证遵循行业标准。
- 作用域能力意味着服务器应仅暴露必要的最小工具集。只读分析服务器不应同时暴露写入操作。
- 人在回路中模式是一等关注点—客户端应在执行前确认破坏性操作。
社区还围绕 MCP 服务器的沙盒化、使用最小文件系统和网络权限运行它们以及审核工具调用制定了最佳实践。
未来展望
MCP 仍在不断演进。协议规范持续完善,正在积极改进流式支持、更好的错误语义和更丰富的能力协商。生态系统也正在就服务器发现和注册服务标准达成一致,使查找和部署 MCP 集成变得更加容易。
或许最重要的是,MCP 正在改变 AI 应用开发的心理模型。开发者不再尝试构建无所不能的单体 AI 系统,而是学习从专业 MCP 服务器网络中组合能力。这反映了后端工程中的微服务演进—它带来了模块化、独立部署和清晰接口契约的相同优势。
结论
模型上下文协议不仅仅是一项 API 标准。它是 AI 系统与世界交互方式的真正转折点。通过为工具集成提供通用、开放且与模型无关的协议,Anthropic 为行业提供了共享基础,消除了 N 乘 M 的集成问题,解锁了可组合的 AI 能力生态系统。
如果您正在构建 AI 驱动的应用程序且尚未探索 MCP,现在正是时候。协议稳定,SDK 成熟,生态系统足够丰富,可覆盖大多数常见集成需求。如果您需要尚不存在的东西,构建自己的 MCP 服务器只需一个下午的工作,而非一个季度的项目。
AI 工具的未来不是专有的锁定。它是开放协议、可组合服务器和通用互操作性。MCP 正在引领这条道路。
