什么是 MCP¶
随着 OpenAI 加入 Anthropic 支持模型上下文协议 (MCP),我们正在见证一个统一的标准,用于语言模型与外部系统进行交互。这为多 LLM 架构创造了令人兴奋的机会,在这种架构中,专业的 AI 应用可以并行工作,通过标准化的接口发现工具、交接任务并访问强大的功能。
什么是 MCP 以及它为何重要?¶
MCP 是 Anthropic 开发的一种开放协议,用于规范 AI 模型和应用程序与外部工具、数据源和系统的交互方式。它通过提供一个标准化的接口层,解决了团队为 AI 集成构建自定义实现所导致的碎片化问题。
MCP 生态系统包含三个组成部分
- 主机:希望通过 MCP 客户端访问数据的程序,如 Claude Desktop、IDE 或 AI 工具
- 客户端:与服务器保持 1:1 连接的协议客户端
- 服务器:通过标准化的模型上下文协议公开特定功能的轻量级程序
当与客户端交互时,主机有两种主要选择:工具,它们是由模型控制的用于检索或修改数据的功能;以及资源,它们是应用程序控制的数据,例如文件。
还有一种意图是最终允许服务器本身在执行任务时,通过 sampling
端点向客户端和主机请求完成/批准。
MCP 解决的集成问题¶
在 MCP 出现之前,将 AI 应用程序与外部工具和系统集成会产生所谓的“M×N 问题”。如果您有 M 个不同的 AI 应用程序(Claude、ChatGPT、自定义代理等)和 N 个不同的工具/系统(GitHub、Slack、Asana、数据库等),您将需要构建 M×N 个不同的集成。这会导致团队间的重复工作、不一致的实现以及呈二次增长的维护负担。
MCP 将此问题转化为“M+N 问题”。工具创建者构建 N 个 MCP 服务器(每个系统一个),而应用程序开发者构建 M 个 MCP 客户端(每个 AI 应用程序一个)。总的集成工作量变为 M+N,而不是 M×N。
这意味着一个团队可以构建一个 GitHub MCP 服务器一次,它就可以与任何兼容 MCP 的客户端一起工作。同样,一旦您构建了一个兼容 MCP 的 Agent,它就可以立即与所有现有的 MCP 服务器一起工作,无需额外的集成工作。
市场信号:日益增长的采用率¶
自推出以来,MCP 的采用曲线异常陡峭。短短几个月内,就出现了近 3000 个社区构建的 MCP 服务器,显示了开发者对该标准的强烈兴趣。Zed、Cursor、Perser 和 Windsurf 等主要平台已成为 MCP 主机,将该协议集成到其核心产品中。包括 Cloudflare 在内的公司已经发布了官方 MCP 支持,并提供了 OAuth 等功能,供开发者开始构建出色的应用程序。
随着 OpenAI 和 Anthropic 都支持 MCP,我们现在拥有一个涵盖这两家最先进的 AI 模型提供商的统一方法。这一临界规模表明 MCP 有望成为 AI 工具集成的主要标准。
MCP 与 OpenAPI 规范的对比¶
尽管 MCP 和 OpenAPI 都是 API 接口的标准,但它们的目的和方法不同。以下是关键差异的简化比较
方面 | OpenAPI 规范 | 模型上下文协议 (MCP) |
---|---|---|
主要用户 | 与 Web API 交互的人类开发者 | 发现和使用工具的 AI 模型和代理 |
架构 | 单个 JSON/YAML 文件中的集中式规范 | 具有主机、客户端和服务器的分布式系统,支持动态发现 |
用例 | 为人类使用者记录 RESTful 服务 | 使 AI 模型能够通过语义理解自主查找和使用工具 |
这两个标准在现代技术生态系统中发挥着互补的作用。OpenAPI 擅长为人类开发者记录传统的 Web 服务,而 MCP 是专为新兴的 AI Agent 生态系统构建的,它提供丰富的语义上下文,使语言模型能够发现和使用工具。
大多数组织可能会同时维护这两种标准:为其面向开发者的服务维护 OpenAPI 规范,并为其支持 AI 的应用程序维护 MCP 接口,根据需要在这两个世界之间架起桥梁。
MCP 开发入门¶
MCP 的学习曲线相对平缓——许多服务器的代码行数不足 200 行,并且可以在不到一小时内构建完成。以下是您可以在现有环境中使用 MCP 的几种方法
Claude Desktop¶
Claude Desktop 现在支持 MCP 集成,允许 Claude 通过工具访问最新信息。您可以通过转到 Claude 的“设置”并编辑配置来添加这些 MCP。
例如,您可以使用以下配置安装 Firecrawl 的 MCP
{
"mcpServers": {
"mcp-server-firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "YOUR_API_KEY_HERE"
}
}
}
}
这使得 Claude 能够抓取网站并获取最新信息
Cursor 集成¶
Cursor 通过一个简单的配置文件提供对 MCP 的支持。创建一个 .cursor/mcp.json
文件,其中包含您所需的 MCP 服务器
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<Personal Access Token Goes Here>"
}
}
}
}
在 Cursor 设置中启用 MCP 选项
然后将 Cursor 的 Agent 与您的 MCP 服务器一起使用
在上面的示例中,我提供了一个简单的 GitHub MCP,用于询问关于 instructor-ai
仓库的一些问题。但您实际上可以做更多的事情,例如,您可以提供一个 puppeteer
MCP,让您的模型与 Web 浏览器交互,例如查看您的前端代码渲染后的样子,以便自动修复它。
OpenAI Agent SDK¶
OpenAI 的 Agent SDK 现在支持使用 MCPServer
类连接 MCP 服务器,这使您能够将 Agent 连接到本地工具和资源
import asyncio
import shutil
from agents import Agent, Runner, trace
from agents.mcp import MCPServer, MCPServerStdio
async def run(mcp_server: MCPServer, directory_path: str):
agent = Agent(
name="Assistant",
instructions=f"Answer questions about the git repository at {directory_path}, use that for repo_path",
mcp_servers=[mcp_server],
)
question = input("Enter a question: ")
print("\n" + "-" * 40)
print(f"Running: {question}")
result = await Runner.run(starting_agent=agent, input=question)
print(result.final_output)
message = "Summarize the last change in the repository."
print("\n" + "-" * 40)
print(f"Running: {message}")
result = await Runner.run(starting_agent=agent, input=message)
print(result.final_output)
async def main():
# Ask the user for the directory path
directory_path = input("Please enter the path to the git repository: ")
async with MCPServerStdio(
cache_tools_list=True, # Cache the tools list, for demonstration
params={"command": "uvx", "args": ["mcp-server-git"]},
) as server:
with trace(workflow_name="MCP Git Example"):
await run(server, directory_path)
if __name__ == "__main__":
if not shutil.which("uvx"):
raise RuntimeError(
"uvx is not installed. Please install it with `pip install uvx`."
)
asyncio.run(main())
这使得 Agent 能够理解本地 Git 仓库
结论¶
对于开发者和组织而言,问题不再是您是否应该为 MCP 构建,而是何时构建。随着生态系统的成熟,早期采用者在将 AI 功能集成到其现有系统和工作流程中将拥有显著优势。尤其是在 Anthropic 即将推出的 MCP 注册表、对远程 MCP 服务器托管的支持以及有助于构建更丰富和更个性化集成的 OAuth 集成出现后,这一点尤为明显。
MCP 提供的标准化很可能推动下一波 AI 集成浪潮,使得构建能够通过统一接口利用不同提供商最佳功能的复杂多 Agent 系统成为可能。