dev.to #ai短讯
MCP 原理解析:模型上下文协议如何连接 AI 智能体与工具数据
文章解释了 MCP(Model Context Protocol)如何解决 AI 模型无法自动访问用户数据和执行操作的问题。通过该协议,AI 助手能够直接连接 GitHub、Slack、Google Drive、CRM 等外部系统和 API,从而提升推理、编码及多步骤任务处理能力。

AI 助手在推理、编码、研究和完成多步骤任务方面变得越来越出色。但存在一个基本问题,即使模型变得更智能,这个问题也不会消失:
AI 模型无法自动访问那些真正存储您有用信息和执行操作的系统。
您的公司可能在 GitHub、Slack、Google Drive、数据库、CRM、内部 API、项目管理工具以及数十种其他系统中拥有数据。传统上,开发人员必须为每个系统构建自定义集成。
这就是 MCP(Model Context Protocol,模型上下文协议)发挥作用的地方。
MCP 是一个开放协议,旨在标准化 AI 应用程序与外部工具和数据的连接方式。Anthropic 于 2024 年 11 月推出了 MCP,作为减少 AI 系统与外部数据源之间碎片化、一次性集成的方法。
可以将 MCP 视为 AI 应用程序的标准连接层。
开发人员无需为每个 AI 应用程序和每个工具构建完全不同的集成,而是可以围绕一个通用协议进行开发。
这一区别非常重要。
MCP 不仅仅是另一个 AI 模型、另一个聊天机器人或对所有 API 的替代方案。它是一种使 AI 应用程序与外部能力之间的连接更加标准化的方法。

什么是 MCP?
MCP 代表 Model Context Protocol(模型上下文协议)。
简而言之,MCP 是一种标准化协议,允许 AI 应用程序发现并与外部工具、资源和提示进行交互。
Anthropic 使用 USB-C 类比来描述 MCP:USB-C 为设备提供了连接到外围设备的标准化方式,而 MCP 则为 AI 应用程序连接到工具和数据提供了标准化的方式。
简化的 MCP 架构如下所示:
AI 应用程序 → MCP 客户端 → MCP 服务器 → 外部系统
AI 编码助手 → MCP → GitHub
AI 代理 → MCP → PostgreSQL 数据库
AI 助手 → MCP → 公司知识库
关键理念在于,AI 应用程序不一定需要为每个单独的系统构建完全自定义的集成。
MCP 服务器提供了一个标准化的接口,供 AI 应用程序与之交互。

为什么创建 MCP?
在 MCP 等协议流行之前,开发人员经常在 AI 应用程序和外部服务之间创建自定义集成。
想象一下,您正在构建一个需要访问以下内容的 AI 助手:
- GitHub
- Slack
- Google Drive
- PostgreSQL
- Jira
- 公司内部 API
如果没有通用的集成层,每个连接都可能需要其自己的实现、身份验证逻辑、模式、错误处理和运维维护。
现在想象另一个 AI 应用程序也需要访问这些相同的服务。
同样的集成问题再次出现。
这是 MCP 旨在解决的一个问题。

与其这样思考:
AI 应用 → 自定义 GitHub 集成
AI 应用 → 自定义 Slack 集成
AI 应用 → 自定义数据库集成
开发人员可以朝着更标准化的模式努力:
AI 应用 → MCP → GitHub
AI 应用 → MCP → Slack
AI 应用 → MCP → 数据库
这并不能消除所有的工程工作。身份验证、权限、部署、监控和特定于应用程序的逻辑仍然很重要。
但它为 AI 到工具的连接创建了一个通用协议。

MCP 是如何工作的?
从高层次来看,MCP 工作流程涉及一个 MCP 主机、一个 MCP 客户端和一个或多个 MCP 服务器。
简化的流程如下所示:
- 用户向 AI 应用程序下达任务。
- AI 应用程序确定它需要外部信息或执行某项操作。
- MCP 客户端与 MCP 服务器通信。
- 服务器暴露可用的功能。
- AI 应用程序选择合适的工具或资源。
- MCP 服务器执行请求的操作。
- 结果返回给 AI 应用程序。
- 模型使用该结果继续完成任务。
例如,想象您询问一个 AI 编码助手:
“检查我们未解决的 GitHub 问题,并总结最紧急的三个漏洞。”
理解请求 → 访问 GitHub → 检索问题 → 分析问题 → 生成摘要
MCP 服务器可以提供与 GitHub 的连接。
AI 不需要将其上下文包含 GitHub 的整个内部架构。它通过与 MCP 服务器暴露的功能进行交互。

解释 MCP 主机、客户端和服务器
这三个术语容易混淆。
什么是 MCP 主机?主机是希望使用 MCP 功能的 AI 应用程序。
示例包括 AI 助手、编码环境或代理应用程序。
主机管理整体的 AI 体验,并可以创建连接到服务器的 MCP 客户端连接。
什么是 MCP 客户端?MCP 客户端是负责与 MCP 服务器通信的组件。
你可以将其视为主机应用程序内部的连接器。
一个主机可以通过 MCP 客户端潜在地连接到多个 MCP 服务器。
什么是 MCP 服务器?MCP 服务器暴露 AI 应用程序可以使用的能力。
这些能力可能涉及:
- 调用外部 API
- 搜索文档
- 读取数据
- 查询数据库
- 访问文件
- 执行操作
- 提供可重用的提示词
MCP 服务器不必是一个庞大的云平台。它可以是一个相对较小的程序,暴露出一组有用的功能。
Anthropic 的初始 MCP 生态系统包括了针对 GitHub、Google Drive、Slack、Postgres、Git 和 Puppeteer 等系统的示例。

MCP 工具、资源和提示词
理解 MCP 最重要的部分之一是了解 MCP 服务器可以暴露什么。
MCP 工具 工具是 AI 应用程序可以调用的操作。
- 搜索 GitHub 问题
- 创建日历事件
- 查询数据库
- 搜索知识库
- 发送消息
- 创建工单
工具对于代理工作流尤为重要,因为它们允许 AI 系统超越文本生成,真正与外部系统进行交互。
例如,OpenAI 当前的文档支持将代理连接到远程 MCP 服务器,并让这些服务器发布代理可以调用的工具定义。
MCP 资源
资源为 AI 应用程序提供信息或上下文。
可以将它们视为应用程序可以通过协议访问的数据。
资源可以代表来自文档系统、数据库、文件系统或其他来源的信息。
关键区别很简单:
工具通常让代理执行某些操作。
资源通常让代理访问信息。
MCP 提示词
MCP 还可以暴露可重用的提示词。
这有助于标准化 AI 应用程序处理特定任务的方式。
例如,组织可能会为以下情况创建可重用的提示词:
- 审查代码
- 总结客户反馈
- 分析支持工单
- 审查文档
这使得某些工作流更容易在应用程序之间复用。

MCP 传输与通信
还有另一层开发者需要理解的内容:客户端和服务器如何通信。
根据服务器的部署方式和客户端的连接方式,MCP 实现可以在本地或远程环境中运行。
例如,OpenAI 当前的 MCP 文档描述了使用 HTTP 以及用于在应用程序环境中运行的进程的 stdio 连接。
对于本地开发者工作流,MCP 服务器可以作为你机器上的进程运行。
对于生产应用程序,MCP 服务器可能在远程托管并通过网络访问。
当你开始考虑以下问题时,这种区分变得重要:
- 身份验证
- 授权
- 网络安全
- 部署
- 监控
- 扩展
- 延迟
- 可靠性
因此,MCP 不仅仅是编写一个服务器。该服务器的托管方式会对其周围的架构产生巨大影响。
MCP 与 API 相同吗?
这是最常见的 MCP 误解之一。
API 是一种允许软件系统通信的通用机制。
MCP 是一种专门围绕 AI 应用程序与外部上下文/能力之间的标准化交互而设计的协议。
传统 API 可能会暴露如下端点:
相比之下,MCP 服务器可以暴露面向 AI 的能力,例如工具、资源和提示词。
两者也可以协同工作。
AI 智能体 → MCP 服务器 → REST API → CRM
在这种架构中,MCP 服务器充当面向 AI 的接口,而现有的 API 则位于底层。
因此,采用 MCP 并不意味着要抛弃你现有的 API。
在许多情况下,MCP 可以建立在现有服务之上。

MCP 与函数调用
这是开发者经常感到困惑的另一个领域。
函数调用允许模型请求你的应用程序执行已定义的函数。

MCP 解决的是一个更广泛的互操作性问题。
与其让每个 AI 应用程序独立实现每种工具集成,否则 MCP 服务器可以暴露标准化的能力,供兼容的客户端发现和使用。
一种有用的思考方式是:
函数调用 = 模型请求工具执行的机制。
MCP = 连接 AI 应用程序与外部工具和上下文的标准化协议。
它们并非互斥。
事实上,现代 AI 平台可以同时使用这两者。OpenAI 的文档列出了多种开发者扩展模型能力的方式,其中包括函数调用和远程 MCP。

MCP 与 API 与函数调用

重要的启示是,这些技术可以协同工作而非相互竞争。
现实世界中的 MCP 用例
当你不再纠结于协议本身,而是关注它能实现什么时,MCP 会变得更容易理解。
- AI 编程助手 AI 编程助手可以使用 MCP 与以下对象进行交互:
- GitHub
- 文档
- 问题追踪器
- 数据库
- 本地开发工具
这可以将助手从单纯的代码生成器转变为能够与真实开发环境协作的工具。
- 企业知识助手 想象一下这样的提问:
“查找我们最新的产品需求并总结变更内容。”
通过 MCP 连接的助手可以访问组织批准的来源,而不是仅依赖提示词中包含的信息。

- 数据库智能体 AI 智能体可以使用 MCP 服务器与数据库进行交互。
“显示上个月销量最高的产品。”
智能体可以使用 MCP 工具来检索相关信息。
这非常强大——但也说明了为什么权限和安全至关重要。
- 客户支持 AI 支持智能体可以潜在地访问:
- 客户记录
- 知识库
- 订单信息
- 工单
模型负责推理,而连接的系统提供必要的信息和操作。
- 开发者自动化 智能体可以协调多个开发工具:
GitHub → CI/CD → 文档 → 问题追踪器
智能体可以将连接的工具作为工作流的一部分,而不是手动在系统之间复制信息。
MCP 工作流程是什么样的?

考虑以下请求:
“查找我们 GitHub 仓库中未修复的身份验证漏洞,查阅相关文档,并总结需要修复的内容。”
简化的工作流程可能如下所示:
用户
AI 智能体
MCP 客户端
GitHub MCP 服务器
检索问题
文档 MCP 服务器
检索相关文档
分析信息
最终响应
有趣的部分在于,并不期望模型能神奇地知晓一切。
当需要时,它可以利用外部能力。
这也是现代智能体 AI 背后的主要理念之一。

MCP 安全吗?
不应将 MCP 本身视为万能的保护层。
将 AI 系统连接到外部工具会带来新的安全考量。
MCP 的实现应仔细考虑:
- 身份验证
- 授权
- 最小权限访问
- 凭据管理
- 输入验证
- 输出验证
- 工具权限
- 审计日志记录
- 速率限制
- 敏感操作的人工审批
例如,赋予 AI 代理对数据库的只读访问权限,与允许其执行任意破坏性 SQL 语句有着本质的区别。
同样的原则也适用于其他系统。
能够读取 GitHub 问题的 AI 代理,与能够删除仓库或合并生产代码的代理相比,具有不同的风险特征。
这就是为什么 MCP 部署应围绕明确的权限和信任边界进行设计。
生态系统也在向更具生产导向的基础设施发展,包括身份认证、异步操作、无状态架构以及官方注册表。
如何开始使用 MCP 如果你是 MCP 的新手,不要试图一开始就构建一个庞大的多代理平台。
第一步:理解架构 了解以下概念之间的区别:
- 主机(Host)
- 客户端(Client)
- 服务器(Server)
- 工具(Tool)
- 资源(Resource)
- 提示词(Prompt)
一旦这些概念变得清晰易懂,MCP 就不再那么令人望而生畏。
第二步:运行现有的 MCP 服务器 使用现有服务器通常比立即构建自己的服务器更容易。
这能让你理解客户端与服务器之间的交互方式。
第三步:构建一个简单的 MCP 服务器 创建一个有用的功能。
search_documents
get_customer
search_github_issues
从一个小型且定义明确的任务开始。
第四步:将其连接到 AI 应用程序 使用兼容的 AI 客户端或代理框架,并测试完整的工作流程。
第五步:添加安全性 当基本工作流程正常运行后,考虑身份验证、权限、验证、日志记录和故障处理。
第六步:迈向生产环境 对于生产系统,请考虑:
- 远程部署
- HTTPS
- 身份验证
- 授权
- 监控
- 速率限制
- 错误处理
- 工具发现
- 性能
- 密钥管理
现代 AI 平台已将 MCP 直接整合到代理工作流中。例如,OpenAI 当前的文档支持通过其 Responses API 和 Agents 生态系统使用远程 MCP 服务器。
关于 MCP 的常见问题
MCP 代表什么?
MCP 代表模型上下文协议(Model Context Protocol)。它是一个开放协议,旨在标准化 AI 应用程序与外部工具和数据的连接方式。
什么是 MCP 服务器? MCP 服务器是一个程序或服务,它向兼容的 MCP 客户端暴露诸如工具、资源和提示词等功能。
MCP 是一种 API 吗?不完全是。MCP 是一种面向 AI 的互操作性协议。不过,MCP 服务器可以连接或封装现有的 API。
MCP 与函数调用相同吗?不同。函数调用是模型请求执行函数的机制。MCP 提供了一种标准化的协议,用于将 AI 应用程序与外部工具和上下文连接起来。
MCP 能连接到数据库吗?可以。根据服务器的实现和安全措施,MCP 服务器可以暴露与数据库相关的功能,例如查询已批准的数据。
MCP 能与远程服务器配合使用吗?可以。MCP 可用于远程服务器部署。例如,当前的 OpenAI 文档支持通过 HTTP 进行远程 MCP 连接。
MCP 会取代 REST API 吗?不会。REST API 在通用软件集成中仍然有用。相反,MCP 可以提供一种对 AI 友好的互操作性层,与现有服务和 API 协同工作。
MCP 仅适用于 Claude 吗?不是。MCP 起源于 Anthropic,但它是一个开放协议,并已扩展到 Anthropic 的产品之外。目前的 OpenAI 开发者文档也支持 MCP 连接。
为什么 MCP 对 AI 代理很重要? AI 代理越来越需要访问外部工具、数据和系统。MCP 提供了一种标准化的方式来暴露这些功能,减少了每个 AI 应用程序独立构建每种集成的需求。
是否每个 AI 应用都需要使用 MCP?并非如此。当标准化访问外部工具和上下文能够带来价值时,MCP 才具有实用性。一个简单的应用可能并不需要这种额外的架构。
最终结论
MCP 最好被理解为 AI 应用的连接性和互操作性层。
它并不替代 AI 模型。
它也不替代 API。
它甚至不仅仅是函数调用的另一个名称。
相反,MCP 为开发者提供了一种标准化的方式,将 AI 应用与外部工具、资源和提示词连接起来。
随着 AI 系统从回答问题转向实际执行任务,这一点变得越来越有价值。

MCP 是助力实现这一过渡的协议之一。
而这正是开发者应当关注它的根本原因:AI 越智能,它与现实世界的连接就越重要。
本文最初发表于 https://techthrilled.com/mcp-explained-model-context-protocol/
译文已达到本站中文翻译的字数上限,剩余内容请查看原文。