模型上下文协议 (MCP) 初学者指南
由 Anthropic 于 2024 年 11 月为其 Claude AI 启动。MCP(模型上下文协议)已占领人工智能世界。
从 OpenAI 和 Neon 到 Cloudflare 和 Sentry ,每个人都在尝试构建自己的MCP 服务器。让我们深入了解一下 MCP(模型上下文协议)。
- 模型:指大型语言模型或人工智能模型
- 上下文:数据或相关信息(提供给人工智能模型)
- 协议:一组规则或标准。
因此,MCP 成为了一套标准,我们用它来为大型语言模型提供上下文或相关信息。Anthropic 将其描述为 AI 模型的 USB-C 端口——一种通用的连接和交互方式。
为什么是 USB-C?
还记得以前各种充电器和线缆带来的杂乱吗?USB-C 让这一切变得简单。一个端口几乎可以连接所有东西——电源、数据、显示器等等。它是一项通用标准。
MCP 旨在为 AI 实现同样的目标。每个 AI 工具都无需为每个数据源建立独特的定制连接(想象一下,将 10 个不同的 AI 模型连接到 20 个不同的工具——那将需要 200 个自定义集成!),MCP 为这些工具创建了一种标准的通信方式。这将“M x N”问题简化为更简单的“M + N”设置。
MCP 如何工作?
- 主机: 这通常是你的 AI 应用程序,例如 IDE(例如 Zed、VS Code 或 Cursor)或桌面 AI 应用(例如 Claude Desktop)。主机是管理者,负责监督一切。
- MCP 客户端: 在主机内部,您拥有客户端。您可以将它们视为专用的通信线路。每个客户端连接到 一个 特定的 MCP 服务器。
- MCP 服务器: 这些是网关。服务器位于特定数据源(例如公司的文档驱动器、代码存储库、数据库或 Web 搜索功能等工具)之前。它知道如何与特定系统通信,并使用 MCP 规则公开其功能。
这些组件使用 JSON-RPC 2.0 进行通信,这是一种使用 JSON 来回发送消息的结构化方式。无论客户端或服务器由谁构建,这都能保持通信的清晰和一致。
他们之间能交换什么样的“语境”?
MCP 使用三个主要构建块(称为“原语”)来标准化来回传递的内容:
- 资源:这是服务器可以提供给AI的结构化 数据 。例如代码片段、文档的某些部分或数据库结果——任何能够提供事实背景的信息。通常,应用程序控制何时提供资源。
- 提示:这些是服务器提供的预制指令或模板。想象一下,保存一些用于总结文本或生成特定样式代码的提示。通常, 用户 会选择何时使用这些提示。
- 工具:这些是 AI可以请求服务器执行的 实际 操作(通常需要先获得您的同意!)。这些操作包括查询数据库、搜索网页,甚至发送电子邮件。AI模型 通常会决定何时需要工具。
通过标准化这些,任何使用 MCP 的 AI 都可以了解如何通过任何兼容的 MCP 服务器请求数据(资源)、使用预设指令(提示)或执行操作(工具)。
本地设置与云访问:本地和远程服务器
那么,这些 MCP 服务器在哪里运行呢?有两种方式:
- 本地 MCP 服务器: 这些服务器在您的计算机上运行,通常与主机应用程序(例如您的 IDE)一起运行。您可以自行设置它们,并为其提供 API 密钥,它们会直接监听来自您计算机上客户端的请求。它们通常使用直接通信管道(stdio - 标准输入/输出)。非常适合本地工作的开发者。
- 远程 MCP 服务器: 这些服务器位于云端。您通常使用 OAuth 等安全登录方式在线连接它们。它们使用 Web 协议(SSE/HTTP - 服务器发送事件和标准 Web 请求)进行通信。
- 为什么要使用远程?最终用户无需设置——只需登录!它们易于更新,而且至关重要的是,它们允许基于 Web 的 AI 代理访问工具和数据,而不仅仅是本地桌面应用程序。
- Vercel 和 Cloudflare 允许托管远程或基于服务器的 MCP,从而更容易根据需要进行部署和更改。
沟通渠道:传输类型
消息 实际上是如何 在客户端和服务器之间传输的?这就是“传输层”。MCP 在这里非常灵活(与传输无关),但两种常见的传输方式与我们的本地和远程思想息息相关:
- 标准输入/输出 (stdio):非常适合 本地 服务器。消息直接在同一台机器上运行的客户端和服务器进程之间传递。简单、直接,无需网络。
- 服务器发送事件 (SSE) / HTTP :远程服务器的首选 。服务器使用高效的 SSE 流向客户端发送消息 , 客户端 使用标准 HTTP 请求向 服务器发送消息。可跨互联网和防火墙工作。
因此,MCP 定义了 什么 (原语)和 如何 (JSON-RPC 结构),而传输层提供了 路径 (本地的 stdio,远程的 SSE/HTTP)。
MCP 中的安全性
模型上下文协议 (MCP) 虽然有望实现 AI 代理互操作性,但也带来了重大的安全挑战,用户和开发人员必须主动应对,因为它默认缺乏强大的安全治理。
核心安全问题:
- 缺乏固有安全性:MCP 本身并未强制执行严格的安全措施。构建安全层的责任主要落在实施者身上。
- 工具中毒:恶意行为者可以通过提供给AI的工具描述或上下文数据注入有害指令或命令。如果没有适当的验证和清理,AI可能会在不知情的情况下执行这些指令。
- 将敏感数据提供给其他工具:当AI助手可以访问多个工具时,这是一个重大风险。恶意或受感染的工具可能会诱骗AI使用其他更高权限工具的权限,在未经适当授权或用户不知情的情况下访问或窃取敏感数据。
本地与远程服务器风险:
- 本地服务器:由于它们通常以用户级权限运行,授予对本地文件、网络和系统资源的访问权限,因此风险较高。有效地对它们进行沙盒管理可能具有挑战性,类似于运行不受信任的桌面应用程序所带来的风险。
- 远程服务器:引入基于网络的攻击媒介(如中间人)、数据泄露问题以及与安全身份验证、授权和 API 密钥管理相关的挑战。
应对这些风险需要深思熟虑的策略,例如将每个工具视为具有最低必要权限的独特安全边界。此外,还要实施像 OAuth 这样的强健控制措施,尤其要针对远程服务器,并遵循本地服务器的最小特权原则。
虽然 MCP 是一个强大且稳健的基础协议,但它不应被视为“开箱即用”的安全协议。开发人员和用户必须保持警惕,并实施全面的安全措施来降低其固有风险。
MCP 的一些用例
- IDE 中的更智能的编码助手:MCP 允许集成开发环境 (IDE) 中的 AI 编码助手直接连接到您的特定代码库、文档和相关工具。
- 超语境企业聊天机器人:企业可以构建能够安全利用内部知识库的助手,而不是通用聊天机器人。
- 更强大的 AI 助手:AI 应用程序可以使用 MCP 安全地与计算机上的本地文件、应用程序和服务进行交互。
总结
MCP 正在创建一种通用语言和即插即用的标准,用于将 AI 模型连接到数据和工具世界。通过简化这些连接、确保其安全并标准化信息交换方式,它为在桌面、IDE 和 Web 上实现更智能、更强大、更实用的 AI 助手铺平了道路。
了解有关 MCP 的更多信息的额外资源:
- https://modelcontextprotocol.io/docs/
- https://www.apideck.com/blog/unlocking-ai-potential-how-to-quickly-set-up-a-cursor-mcp-server
- https://neon.tech/blog/bringing-mcp-to-the-cloud
- https://blog.christianposta.com/the-updated-mcp-oauth-spec-is-a-mess/
- https://www.layered.dev/breaking-down-mcp-an-architectural-analysis
您可以在此处了解如何在 Cursor 中设置 MCP:
感谢您的阅读
我真心希望这些对你有用。我正在写更多类似的帖子,也正在构思一些更有趣的想法,期待很快与大家分享。
我不断分享内容,帮助您发现新工具、开源项目、人工智能工具、人工智能概念分解等。
再次感谢您的阅读!
鏂囩珷鏉ユ簮锛�https://dev.to/apideck/beginners-guide-to-the-model-context-protocol-mcp-323h