模型上下文协议开发者指南
通过提供这种标准化框架,MCP旨在培育一个协作生态系统,使开发人员能够构建和共享连接器,从而加速更智能、更集成的AI应用程序的开发。

人工智能领域正在迅速发展,大型语言模型(LLMs)处于这一变革的前沿。随着这些模型在理解和生成类似人类文本的能力上变得越来越复杂,将它们集成到外部系统中的需求显著增加。这种集成有望解锁一个新时代的应用程序,能够利用现实世界的数据和工具来增强其功能并提供更符合上下文的相关响应。然而,传统方法中连接LLMs与外部资源通常涉及为每个数据源创建复杂的定制实现,导致架构分散且难以扩展。
Anthropic的模型上下文协议(MCP)作为解决这些挑战的关键方案应运而生。该开放协议标准化了应用程序如何向LLMs提供上下文信息,提供了一种统一且简化的连接AI模型与数据源和工具生态系统的方法。可以将MCP视为一种通用适配器,就像USB-C端口一样,允许任何兼容的AI应用程序无缝地与任何兼容的数据源或服务交互,而无需为每个连接编写自定义代码。通过提供这种标准化框架,MCP旨在培育一个协作生态系统,使开发人员能够构建和共享连接器,从而加速更智能、更集成的AI应用程序的开发。
1、MCP是什么以及为什么重要
从根本上讲,模型上下文协议(MCP)是一种开放标准,旨在促进LLM应用程序与外部数据源和工具之间的无缝集成。它建立了一种通用语言和一套规则,用于AI模型如何访问和与其内部知识库之外的信息和能力进行交互。这种标准化方法简化了通常复杂的将AI连接到现实世界的过程,增强了不同AI系统的互操作性,并促进了各种AI系统的可扩展性。

MCP背后的基本概念是充当通用连接器,使AI模型能够以一致的方式“插入”不同的数据源和工具。这消除了开发人员为他们希望其AI应用程序与之交互的每个新工具或数据集创建定制集成的需求。MCP的主要目标包括简化这些集成、增强不同AI系统和工具一起工作的能力,并使构建和扩展AI驱动的应用程序变得更加容易。

MCP采用客户端-服务器架构。该架构包含三个主要组件:主机进程、MCP客户端和MCP服务器。主机进程是AI驱动的应用程序或代理环境,例如Claude桌面应用程序或IDE插件,用户与之交互。主机可以同时连接多个MCP服务器。MCP客户端是由主机管理的中间件,每个客户端处理与特定MCP服务器的通信,确保安全性和沙盒化。主机为每个需要使用的服务器启动一个客户端,保持一对一的链接。MCP服务器是通常位于模型外部的程序,实现了MCP标准并提供了特定的一组功能。这些功能通常包括一组工具、对数据资源的访问以及与特定领域相关的预定义提示。MCP服务器可能与数据库、云服务或其他数据源接口。这些服务器通过标准化的原语暴露其功能,这些原语包括资源(可以读取的数据)、工具(可以执行的功能)和提示(指导任务的预写模板)。这种客户端-服务器架构确保了职责分离,并允许模块化和可扩展的AI应用程序开发。
2、MCP与OpenAI函数调用:关键差异与应用场景
当开发人员探索扩展LLMs功能的方法时,OpenAI的函数调用成为了一种流行的技术。函数调用允许LLMs根据用户输入识别调用外部函数或API的需求,并为这些调用结构化参数。尽管MCP和函数调用都旨在将LLMs与外部系统集成,但它们在范围、标准化和通信范式方面存在显著差异。

OpenAI的函数调用主要侧重于使LLMs能够将用户提示翻译成结构化的API调用。它允许模型确定要调用哪个函数以及传递什么参数,从而促进与外部服务的交互。相比之下,MCP是一个更广泛的协议,标准化了LLM应用程序与外部系统之间整个执行和交互过程。它不仅处理用户意图的翻译,还提供了一个结构化的框架,用于工具发现、调用和响应处理。
一个关键的区别在于标准化。OpenAI的函数调用主要是针对供应商的,每个模型可能会以不同的方式格式化函数调用。虽然像LangChain这样的工具可以帮助管理这些变化,但没有普遍的标准。另一方面,MCP旨在成为模型不可知的开放标准。这意味着任何实现MCP客户端的LLM都可以与任何MCP服务器交互,从而促进更大的互操作性并减少供应商锁定。
通信流程也有所不同。函数调用通常遵循请求-响应模式,其中AI请求某些内容并获得预定义的答案。MCP支持更持续和互动的通信,允许AI不仅请求数据,还可以实时接收来自外部工具的更新。此外,MCP在客户端执行模型上运行,其中主机应用程序管理客户端及其与服务器的连接,而函数调用逻辑通常驻留在服务器端。
下表总结了MCP和OpenAI函数调用之间的主要区别:

在需要复杂工作流涉及多个工具、实时更新的需求或旨在实现模型和供应商独立性的情况下,MCP可能优于函数调用。虽然函数调用足以处理简单的API交互,但MCP提供了一种更强大和标准化的方法来构建需要与多样化外部系统交互的复杂AI代理和应用程序。
3、MCP解决的问题:打破LLM集成障碍
Anthropic的模型上下文协议专门设计用于解决与大型语言模型交互和将其集成到实际应用中固有的几个根本问题和限制。其中一个最重要的挑战是“N×M集成问题”。随着AI应用程序的数量(N)和工具及数据源的种类(M)增加,为每种组合创建定制集成的复杂性变得无法管理。MCP通过提供标准化接口解决了这个问题,有效地将问题转化为更简单的N+M设置,其中每个AI模型和每个工具只需要符合MCP标准一次。
另一个MCP解决的关键问题是将LLMs与现实世界的最新信息隔离。即使是最先进的模型也经常受到训练数据的限制,这些数据可能是过时或不完整的。MCP提供了一个通用协议,将AI系统与各种数据源连接起来,使它们能够访问实时信息和专业工具,以准确和相关的内容为基础提供响应。这一能力对于减少LLM幻觉至关重要,即模型自信地生成错误或无意义的信息。通过启用对外部知识的访问,MCP有助于确保AI应用程序能够提供更可靠和可信的输出。
此外,MCP促进了更复杂和自主的AI代理的发展。通过在不同工具和数据集之间保持上下文,MCP支持创建能够代表用户执行复杂任务的AI系统。这对于构建真正智能的应用程序至关重要,这些应用程序不仅可以理解用户的请求,还可以主动采取行动来满足这些请求。
除了这些核心问题,MCP还旨在解决AI开发中的更广泛挑战,如集成复杂性、缺乏通用设计模式、可扩展性限制以及未来保护的需求。通过建立标准化协议,MCP释放了目前用于创建和维护定制集成的开发人员带宽和预算。它还培养了开发最佳实践的共同理解,这是随着更复杂的代理AI兴起而日益重要的。此外,一个标准协议简化了集成更多AI服务的过程,并确保应用程序的可扩展性和未来适用性。可以适应新的和新兴的 AI 技术,而无需进行重大重写。
4、解锁潜力:MCP 对应用程序开发的好处
Model Context Protocol(模型上下文协议)为希望构建创新 AI 驱动应用程序的开发人员提供了许多好处。其主要优势之一是标准化集成带来的简化开发流程。开发人员不再需要为每个数据源或工具创建独特的连接,而是可以通过 MCP 框架建立一致且可重复使用的集成。
MCP 还增强了互操作性,使 AI 模型与外部工具能够无缝协作。通过提供一种通用的通信语言,MCP 允许不同的 AI 系统和工具在它们的基础架构或供应商不同的情况下协同工作。这促进了更加开放和协作的 AI 生态系统。
此外,MCP 显著提高了 AI 模型的上下文感知能力。通过轻松访问实时数据和专业工具,MCP 使 AI 能够在其响应中基于准确和相关的信息,从而生成更智能和有用的程序。该协议还支持双向通信,使 AI 模型不仅能够接收信息,还可以触发外部系统的操作,从而实现更动态和交互式的应用程序。
MCP 的底层架构是模块化且可扩展的。客户端-服务器设计确保了职责的明确分离,允许不同的组件独立开发和扩展。这使得构建能够处理日益增长的需求并整合更多服务的复杂 AI 应用程序变得更加容易。
MCP 为应用程序开发打开了广泛的可能性。例如,在AI 驱动的编码助手中,MCP 可以启用对广泛代码库和文档的访问,为开发人员提供准确的代码建议和见解。在企业环境中,企业数据助手可以利用 MCP 安全地访问公司数据、文档和内部服务,从而提高知识检索和任务自动化的能力。AI 驱动的数据查询应用程序可以通过 MCP 将 AI 模型与数据库连接起来,通过自然语言界面简化数据分析和报告。桌面 AI 应用程序如 Anthropic 的 Claude Desktop 已经集成了 MCP,以允许 AI 助手安全访问本地文件和应用程序。此外,MCP 促进了可组合集成和工作流的创建,使开发人员能够构建复杂的 AI 代理,这些代理可以在不同系统之间协调复杂的动作序列。SDK 在多种编程语言(如 Python、TypeScript、Java 和 Kotlin)中的可用性进一步简化了 MCP 服务器和客户端的实现。最后,MCP 提供了供应商灵活性,使开发人员更容易在不同的 LLM 提供商之间切换,而无需进行大量代码更改。
5、深入了解:MCP 架构解析
Model Context Protocol(MCP)建立在一个灵活且可扩展的架构之上,促进 LLM 应用程序与各种集成之间的无缝通信。在其核心,MCP 遵循客户端-服务器架构。这种设计涉及几个关键组件,它们共同作用以实现上下文感知的 AI 交互。
中心组件是主机进程。这是主 AI 应用程序,例如 Claude Desktop 或集成开发环境(IDE),它启动对外部资源的连接。主机充当容器和协调器,管理多个MCP 客户端。每个客户端与一个MCP 服务器保持一对一的连接。主机负责控制客户端连接权限和生命周期,执行安全策略和同意要求,协调 AI/LLM 集成和采样,并管理跨客户端的上下文聚合。
MCP 客户端驻留在主机应用程序中,负责与 MCP 服务器进行通信。它们负责建立和维护隔离的服务器连接,处理协议协商和能力交换,双向路由协议消息,管理订阅和通知,并在服务器之间维持安全边界。
MCP 服务器向主机应用程序提供专门的上下文和功能。它们通过 MCP 原语公开资源、工具和提示。服务器独立运行,具有专注的责任,通过客户端接口请求采样,并必须尊重安全约束。它们可以是本地进程或远程服务。
MCP 中客户端与服务器之间的通信流通常使用JSON-RPC。MCP 支持多种传输机制用于此通信,包括Stdio(标准输入/输出)用于本地进程和HTTP 带有 Server-Sent Events (SSE) 用于远程通信。协议定义了几种主要的消息类型:请求,期望响应;结果,成功的响应;错误,指示请求失败;以及通知,这是一种单向消息,不期望响应。
MCP 架构的一个重要方面是强调安全性和受控访问。主机实例化客户端并批准服务器,允许用户和组织严格管理 AI 助手被允许连接到的内容。
图 1:Anthropic 模型上下文协议(MCP)架构

这种架构的模块化特性允许独立开发和部署 MCP 服务器,从而使 AI 应用程序的功能扩展无需修改核心应用程序。对多种传输机制的支持提供了灵活性,适用于各种部署场景,满足本地和远程通信需求。
6、实际应用:MCP 实现示例
模型上下文协议(MCP)的多功能性在其在各个应用和领域的广泛采用中得到了体现。一些AI 驱动的编码助手已经集成了 MCP 来增强开发人员的生产力。例如,Sourcegraph Cody 利用 MCP 访问广泛的代码库和文档,为开发人员提供准确的代码建议和见解。同样,Zed Editor 已经引入 MCP,使其 AI 功能能够与各种开发工具和资源无缝协作。
在企业领域,MCP 正被用于促进企业集成。像Block这样的公司已采用 MCP 来安全连接其 AI 系统与内部数据存储库,从而实现更明智的决策。Apollo 利用 MCP 将其 AI 工具与客户关系管理(CRM)系统连接起来,增强数据可访问性和客户互动。
MCP 还推动了AI 驱动的数据查询应用程序的发展。例如,AI2SQL 利用 MCP 使用户能够通过自然语言提示生成 SQL 查询,简化数据分析和报告。Anthropic 自己的Claude Desktop 是一个桌面 AI 应用程序的典型例子,它集成了 MCP,使 AI 助手能够安全访问本地文件、应用程序和服务,从而增强其提供上下文相关响应和有效执行任务的能力。
除了这些例子,MCP 正在与各种开发工具集成。像Replit、Codeium 和Sourcegraph 这样的公司正在与 MCP 合作,以增强其平台,使 AI 代理能够更好地检索与编码任务相关的有用信息。Apify 开发了一个 MCP 服务器,使 AI 代理能够访问所有 Apify Actors 进行自动数据提取和网络搜索。一个实际示例展示了如何构建一个 MCP 驱动的服务器用于GitHub PR 审查,它可以获取 PR 详细信息,使用 Claude Desktop 分析代码更改,并生成摘要和建议。潜力还延伸到创建深度集成到本地数据和应用程序中的个人助理,以及在不同系统之间实现复杂的工作流编排。
7、Claude Desktop集成和使用 MCP
Anthropic 的 Claude Desktop 为开发人员提供了一个友好的环境,开始试验 Model Context Protocol。将 MCP 集成到 Claude Desktop 中涉及通过 claude_desktop_config.json
文件配置本地 MCP 服务器。此配置文件位于 Claude 的应用程序支持目录中,告诉应用程序启动哪些 MCP 服务器。
要添加一个 MCP 服务器,您需要编辑此配置文件。基本结构涉及定义服务器名称并提供运行服务器所需的命令及其必要参数。例如,为了使 Claude 能够访问您的本地文件系统,您可以添加文件系统 MCP 服务器。首先,请确保已安装 Node.js。然后,定位或创建 claude_desktop_config.json
文件。对于 macOS,通常位于 ~/Library/Application Support/Claude/claude_desktop_config.json
,而对于 Windows,则位于 %APPDATA%\Claude\claude_desktop_config.json
。添加以下配置:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/your_username/Desktop",
"/Users/your_username/Downloads"
]
}
}
}
将 /Users/your_username
替换为您实际的用户名,并指定您希望 Claude 能够访问的目录。保存文件并重新启动 Claude Desktop 后,您应该会在输入框的右下角看到一个锤子图标,表示 MCP 服务器已激活。点击此图标将显示工具由配置好的服务器提供支持。然后,你可以通过自然语言提示与文件系统服务器进行交互:
同样地,你可以使用 Git MCP 服务器来集成到 Git 仓库中。安装完服务器后(使用 uv tool install mcp-server-git
),你可以在 claude_desktop_config.json
中对其进行配置:
{
"mcpServers": {
"git": {
"command": "uvx",
"args": [
"mcp-server-git",
"--repository",
"/path/to/your/git/repo"
]
}
}
}
将 /path/to/your/git/repo
替换为实际的仓库路径。重启 Claude 后,你可以提出类似以下的问题:
原文链接:Anthropic’s Model Context Protocol (MCP): A Deep Dive for Developers
汇智网翻译整理,转载请标明出处
