MCP 初学者完全指南
从零学习 Model Context Protocol,理解 Claude 如何通过 MCP 扩展能力。是学习 AI agent 开发的必读基础。
从零学习 Model Context Protocol,理解 Claude 如何通过 MCP 扩展能力。是学习 AI agent 开发的必读基础。
Anthropic 在 2024 年 11 月为其 Claude AI 创建的 MCP(Model Context Protocol,模型上下文协议)已经风靡整个 AI 领域。从 OpenAI 和 Neon,到 Cloudflare 和 Sentry,每家公司都在尝试构建自己的 MCP Server。让我们深入了解一下 MCP 或模型上下文协议的快速概览。
模型(MODEL):指大语言模型或 AI 模型
上下文(CONTEXT):提供给 AI 模型的数据或相关信息
协议(PROTOCOL):一套规则或标准
因此,MCP 成为了一套标准,我们用它来向大语言模型提供上下文或相关信息。Anthropic 将其比作 AI 模型的 USB-C 接口——一种通用的连接和交互方式。
还记得我们曾经用过的各种不同充电器和数据线的混乱状况吗?USB-C 简化了所有这些。一个接口连接几乎所有东西——电源、数据、显示器等等。这是一个通用标准。
MCP 的目标是为 AI 做同样的事情。与其让每个 AI 工具都需要一种独特的、定制的连接方式来连接每个单一数据源(想象一下试图将 10 个不同的 AI 模型连接到 20 个不同的工具——那就是 200 个定制集成!),MCP 为它们创建了一种标准的对话方式。这将"M × N"问题转化为更简单的"M + N"设置。
Host(主机):通常是你的 AI 应用程序,比如 IDE(想象 Zed、VS Code 或 Cursor)或桌面 AI 应用程序(如 Claude Desktop)。Host 是管理器,监督一切。
Host(主机):通常是你的 AI 应用程序,比如 IDE(想象 Zed、VS Code 或 Cursor)或桌面 AI 应用程序(如 Claude Desktop)。Host 是管理器,监督一切。
MCP Clients(MCP 客户端):在 Host 内部,你有 Clients。可以把它们看作专用的通信线路。每个 Client 连接到一个特定的 MCP Server。
MCP Clients(MCP 客户端):在 Host 内部,你有 Clients。可以把它们看作专用的通信线路。每个 Client 连接到一个特定的 MCP Server。
MCP Servers(MCP 服务器):这些是网关。服务器位于特定数据源之前,例如你公司的文档驱动、代码仓库、数据库,或像网络搜索函数这样的工具。它知道如何与该特定系统交互,并使用 MCP 规则暴露其功能。
MCP Servers(MCP 服务器):这些是网关。服务器位于特定数据源之前,例如你公司的文档驱动、代码仓库、数据库,或像网络搜索函数这样的工具。它知道如何与该特定系统交互,并使用 MCP 规则暴露其功能。
这些组件使用 JSON-RPC 2.0 进行通信,这只是一种使用 JSON 来回发送消息的结构化方式。这确保了无论 Client 或 Server 由谁构建,通信都清晰一致。
MCP 使用三个主要构建块(称为"原语")标准化了往返传递的内容:
Resources(资源):这是 Server 可以提供给 AI 的结构化数据。想象代码片段、文档的一部分或数据库结果——任何能提供事实背景的东西。通常,应用程序控制何时提供资源。
Resources(资源):这是 Server 可以提供给 AI 的结构化数据。想象代码片段、文档的一部分或数据库结果——任何能提供事实背景的东西。通常,应用程序控制何时提供资源。
Prompts(提示词):这些是 Server 可以提供的预制指令或模板。想象拥有用于总结文本或以特定风格生成代码的保存提示词。通常,用户选择何时使用这些。
Prompts(提示词):这些是 Server 可以提供的预制指令或模板。想象拥有用于总结文本或以特定风格生成代码的保存提示词。通常,用户选择何时使用这些。
Tools(工具):这些是 AI 可以要求 Server 执行的实际操作(通常需要你的批准!)。这些包括查询数据库、搜索网络,甚至发送电子邮件。AI 模型通常决定何时需要一个工具。
Tools(工具):这些是 AI 可以要求 Server 执行的实际操作(通常需要你的批准!)。这些包括查询数据库、搜索网络,甚至发送电子邮件。AI 模型通常决定何时需要一个工具。
通过标准化这些,任何使用 MCP 的 AI 都可以理解如何通过任何兼容的 MCP Server 请求数据(Resources)、使用预设指令(Prompts)或执行操作(Tools)。
现在,这些 MCP Servers 在哪里运行?有两种方式:
Local MCP Servers(本地 MCP 服务器):这些在你的计算机上运行,通常与 Host 应用程序(如你的 IDE)一起。你可能自己设置它们,给它们一个 API 密钥,它们会直接从你机器上的 Client 监听请求。它们通常使用直接通信管道(stdio——标准输入/输出)。非常适合本地工作的开发人员。
Local MCP Servers(本地 MCP 服务器):这些在你的计算机上运行,通常与 Host 应用程序(如你的 IDE)一起。你可能自己设置它们,给它们一个 API 密钥,它们会直接从你机器上的 Client 监听请求。它们通常使用直接通信管道(stdio——标准输入/输出)。非常适合本地工作的开发人员。
Remote MCP Servers(远程 MCP 服务器):这些存在于云中。你通常在线连接到它们,通常使用安全的登录方法,比如 OAuth。它们使用网络协议进行通信(SSE/HTTP——Server-Sent Events 和标准网络请求)。
Remote MCP Servers(远程 MCP 服务器):这些存在于云中。你通常在线连接到它们,通常使用安全的登录方法,比如 OAuth。它们使用网络协议进行通信(SSE/HTTP——Server-Sent Events 和标准网络请求)。
为什么要用 Remote?最终用户不需要设置——只需登录!它们很容易更新,更重要的是,它们允许基于网络的 AI agent 访问工具和数据,而不仅仅是本地桌面应用程序。
为什么要用 Remote?最终用户不需要设置——只需登录!它们很容易更新,更重要的是,它们允许基于网络的 AI agent 访问工具和数据,而不仅仅是本地桌面应用程序。
Vercel 和 Cloudflare 提供远程或基于服务器的 MCPs 的托管,使部署和根据需要进行更改变得更容易。
Vercel 和 Cloudflare 提供远程或基于服务器的 MCPs 的托管,使部署和根据需要进行更改变得更容易。
Client 和 Server 之间的消息实际上是如何传输的?这就是"传输层"。MCP 在这里很灵活(传输无关),但两种常见方式与我们的本地与远程概念相关:
Standard Input/Output(标准输入/输出,stdio):完美适合本地服务器。消息在运行在同一机器上的 Client 和 Server 进程之间直接传递。简单、直接、无需网络。
Standard Input/Output(标准输入/输出,stdio):完美适合本地服务器。消息在运行在同一机器上的 Client 和 Server 进程之间直接传递。简单、直接、无需网络。
Server-Sent Events(SSE)/ HTTP:远程服务器的首选。Server 使用高效的 SSE 流式传输向 Client 发送消息,Client 使用标准 HTTP 请求向 Server 发送消息。可以跨互联网和防火墙工作。
Server-Sent Events(SSE)/ HTTP:远程服务器的首选。Server 使用高效的 SSE 流式传输向 Client 发送消息,Client 使用标准 HTTP 请求向 Server 发送消息。可以跨互联网和防火墙工作。
因此,MCP 定义了"什么"(原语)和"如何"(JSON-RPC 结构),而传输层提供了路径(本地的 stdio,远程的 SSE/HTTP)。
Model Context Protocol(MCP)虽然对 AI agent 互操作性很有前景,但存在重大安全挑战,用户和开发人员必须主动解决,因为它在默认情况下缺乏强大的安全治理。
缺乏固有安全性:MCP 本身不强制执行严格的安全措施。责任主要落在实现者身上,需要在其周围构建安全层。
缺乏固有安全性:MCP 本身不强制执行严格的安全措施。责任主要落在实现者身上,需要在其周围构建安全层。
Tool Poisoning(工具投毒):恶意行为者可以通过工具描述或提供给 AI 的上下文数据注入有害指令或命令。在没有适当验证和清理的情况下,AI 可能会无意识地执行这些指令。
Tool Poisoning(工具投毒):恶意行为者可以通过工具描述或提供给 AI 的上下文数据注入有害指令或命令。在没有适当验证和清理的情况下,AI 可能会无意识地执行这些指令。
将敏感数据提供给另一个工具:这是一个重大风险,当 AI 助手可以访问多个工具时。一个恶意的或被破坏的工具可能会欺骗 AI 使用另一个权限更高的工具的权限,以便在没有适当授权或用户意识的情况下访问或窃取敏感数据。
将敏感数据提供给另一个工具:这是一个重大风险,当 AI 助手可以访问多个工具时。一个恶意的或被破坏的工具可能会欺骗 AI 使用另一个权限更高的工具的权限,以便在没有适当授权或用户意识的情况下访问或窃取敏感数据。
Local Servers(本地服务器):风险很高,因为它们通常以用户级权限运行,授予对本地文件、网络和系统资源的访问权限。它们很难有效地沙箱隔离,类似于运行不受信任的桌面应用程序的风险。
Local Servers(本地服务器):风险很高,因为它们通常以用户级权限运行,授予对本地文件、网络和系统资源的访问权限。它们很难有效地沙箱隔离,类似于运行不受信任的桌面应用程序的风险。
Remote Servers(远程服务器):引入基于网络的攻击向量(如中间人攻击)、数据窃取的担忧,以及与安全认证、授权和 API 密钥管理相关的挑战。
Remote Servers(远程服务器):引入基于网络的攻击向量(如中间人攻击)、数据窃取的担忧,以及与安全认证、授权和 API 密钥管理相关的挑战。
解决这些风险需要深思熟虑的策略,比如将每个工具视为具有最小必要权限的不同安全边界。以及为远程服务器实现 OAuth 等健壮控制,并为本地服务器遵循最小权限原则。
虽然 MCP 是一个强大而稳健的基础协议,但它不应该被认为在"开箱即用"时是安全的。开发人员和用户必须保持警惕,并实施综合安全措施来降低固有风险。
Claude Skills 是可重用的、任务特定的能力,为 Claude 提供结构化、程序化的知识来完成定义的工作流。
Claude Skills 不仅仅依赖于一般推理,而是为如何执行特定任务(如资格认证潜在客户、生成结构化报告、对支持工单进行分类或执行多步骤流程)提供分步指令、最佳实践和背景。例如,你可以为市场营销工作流构建 Claude Skills,以自动化诸如潜在客户资格认证、性能报告或内容分发之类的事情。
MCP 处理外部连接,将 Claude 与第三方服务和数据源链接。Skills 封装了程序逻辑,定义了如何执行特定任务或工作流。
IDEs 中更智能的编码助手:MCP 允许集成开发环境(IDEs)中的 AI 编码助手直接连接到你的特定代码库、文档和相关工具。
IDEs 中更智能的编码助手:MCP 允许集成开发环境(IDEs)中的 AI 编码助手直接连接到你的特定代码库、文档和相关工具。
超上下文企业聊天机器人:企业可以构建能够安全地使用内部知识库的助手,而不是通用聊天机器人。
超上下文企业聊天机器人:企业可以构建能够安全地使用内部知识库的助手,而不是通用聊天机器人。
更强大的 AI 助手:AI 应用程序可以使用 MCP 来安全地与你计算机上的本地文件、应用程序和服务交互。
更强大的 AI 助手:AI 应用程序可以使用 MCP 来安全地与你计算机上的本地文件、应用程序和服务交互。
MCP 为连接 AI 模型到数据和工具的世界创建了一种通用语言和即插即用标准。通过简化这些连接、确保它们安全,并标准化信息交换的方式,它为跨桌面、IDEs 和网络的更智能、更强大、真正有益的 AI 助手铺平了道路。
规模化你的集成战略,以创纪录的速度交付客户需要的集成。