弥合差距:深入探讨 Model Context Protocol (MCP)
Source: Dev.to
请提供您希望翻译的正文内容,我会按照要求保留链接、格式和技术术语,仅将文本翻译为简体中文。
什么是 MCP?
MCP 提供了模型与“外部世界”之间的统一桥梁,使 AI 拥有超越简单聊天界面的“超能力”。通过标准化模型访问信息和执行任务的方式,MCP 使 AI 工具更加集成、功能更强大且更易于构建。
架构概览
- MCP 主机 – 想要使用外部资源的应用程序(例如 VS Code、Claude Desktop)。
- MCP 服务器 – 提供数据或功能的本地或远程程序。
- MCP 客户端 – 主机内部为每个特定服务器创建的专用连接。
当主机连接到服务器时,它会为该连接实例化一个 MCP 客户端对象。多个客户端对象可以共存(例如,一个用于 Jira 服务器,另一个用于本地文件系统)。
协议层
数据层
定义 说了什么。基于 JSON‑RPC,处理连接生命周期和核心原语(工具、资源和提示)。
传输层
定义 信息如何到达。
| 传输方式 | 用例 | 特点 |
|---|---|---|
| Stdio 传输 | 同一机器上的本地进程(例如 VS Code ↔ 本地文件) | 闪电般快速,零网络开销 |
| 可流式 HTTP 传输 | 远程服务器(例如官方 Jira MCP 服务器) | 使用 HTTP POST + Server‑Sent Events (SSE);支持安全认证(OAuth) |
核心原语
一旦主机连接到服务器,AI 就可以使用以下三类主要原语:
Tools (Executable Functions)
AI 能够执行操作。
{
"method": "create_issue",
"params": {
"title": "Bug in login flow",
"description": "Steps to reproduce..."
}
}
示例: create_issue 用于创建 Jira 任务;add_comment 用于更新任务。
Resources (Data Sources)
为 AI 提供所需的上下文。
示例: 项目模式帮助 AI 将 “Priority Highest” 映射为 “Blocker”;用户档案将姓名映射到 ID。
Prompts (Templates)
可复用的指令模板,用于结构化交互。
示例: Bug Reporter 提示会强制 AI 在创建工单前询问 “复现步骤”。
服务器到客户端的交互
MCP 不是单向的。服务器可以向客户端请求帮助:
| 交互 | 描述 |
|---|---|
| 采样 | 服务器请求 AI 主机完成任务(例如,将 10 条工单总结为发布说明段落)。 |
| 信息获取 | 服务器提示用户提供缺失信息(例如,“此工单应归入哪个项目?”)。 |
| 日志记录 | 服务器向客户端发送调试信息以进行监控。 |
Source: …
通知系统
在动态环境中,工具和数据源会不断变化。MCP 通过基于 JSON‑RPC 2.0 的 通知系统 处理这些变化,使服务器能够 推送 更新给客户端,而无需等待请求。
JSON‑RPC(JavaScript 对象表示法‑远程过程调用)是一种基于 JSON 的远程过程调用协议。它支持通知(发送的数据不需要响应)和异步多调用。
如需了解 JSON‑RPC 规范的更多信息,请点击此处。
客户端只需等待被告知变化——例如数据库离线或新工具可用时,AI 能立即获悉。
为什么 MCP 很重要
随着大型语言模型变得更加强大,它们的实用性越来越依赖于上下文。MCP 标准化了模型获取上下文的方式,简化了开发,并使 AI 应用更加丰富且功能更强大。
入门
越来越多的公司每天都在发布官方 MCP 服务器。 在 Anthropic MCP Gallery 中探索最受欢迎的服务器。