模型上下文协议(MCP)在人工智能(AI)领域引起了广泛关注。这个由 Anthropic 牵头的开源标准,旨在简化大型语言模型(LLM)与外部数据源的连接。虽然这一发展为 AI 开发者带来了显著的益处,但也引入了潜在的安全漏洞。本综合指南解答了关于 MCP 的常见问题,阐明了其功能、优势和安全考量。
什么是模型上下文协议 (MCP)?
从本质上讲,模型上下文协议 (MCP) 充当通用桥梁,促进 LLM 与外部资源之间的交互。它为 LLM 建立了一种标准化的方法,使其能够有效地识别和利用可用的资源。这使得 LLM 能够辨别何时以及为何应该利用这些资源来完成任务或增强其理解能力。
可以通过 MCP 访问的外部数据范围非常广泛,包括本地文件系统、数据库、API 和软件即服务 (SaaS) 应用程序等。
本质上,MCP 授权 LLM 发出对数据或操作的确定性请求,使其能够利用超出其预先存在的训练数据集的信息来提供准确和全面的答案。
MCP 的广泛采用正在迅速改变 AI 格局,许多 AI 公司正将其集成到其平台中。
为什么 MCP 的兴趣激增?
MCP 日益普及的驱动力在于其能够标准化 LLM 与外部数据源的连接。这种标准化为开发者提供了一个显著的优势:他们可以为 LLM 创建一个单一的集成,并将其无缝部署到支持 MCP 的各种工具和 LLM 上。这种“一次编写,随处使用”的方法极大地简化了集成过程。
此外,“应用商店”和“市场”的出现,以 MCP 服务器为特色,进一步简化了集成过程,使开发者能够快速将其集成到他们的环境中。专门创建定制 MCP 服务器的服务也已推出,以满足特定的需求和要求。
这是 LLM 与外部数据交互的第一个实例吗?
具备自主操作和与外部资源交互能力的 Agentic AI 的概念已经存在一段时间了。然而,以前的实现通常是每个工具独有的,缺乏标准化。像 LangFlow 这样的解决方案试图通过标准化一些工具并在特定框架内实现与多个 LLM 的交互来解决这个问题。
MCP 将标准化提升到了一个新的水平,允许创建可以跨多个解决方案使用的集成,打破了之前存在的孤岛。
如何开始使用 MCP
要开始使用 MCP,您需要一个宿主应用程序(称为“客户端”)和一个服务器。宿主应用程序充当中心协调器,管理 LLM 和连接到 MCP 服务器的接口之间的通信。
一个基本的例子是使用 Claude Desktop 添加一个文件系统 MCP 服务器,这在 Claude Desktop 用户快速入门指南中有详细介绍。这演示了将文件系统服务器添加到 Claude Desktop 的过程,使其能够向 Claude.ai 提供本地文件系统信息。虽然 Claude Desktop 可以作为 MCP 服务器的试验场,但许多其他客户端提供了增强的用户体验。
在线 MCP 客户端和服务器目录正在涌现,例如 MCP Clients | Glama 和 Open-Source MCP Servers | Glama,为开发者提供了宝贵的资源。
MCP 如何运作?
MCP 基于客户端/服务器架构运行,使 LLM 能够无缝地与外部数据交互。这种架构由三个主要组件组成:
宿主(Host): 宿主应用程序管理 LLM 与多个 MCP 客户端之间的交互。流行的 MCP 宿主包括 Claude Desktop、Claude Code、Cursor、Windsurf 以及像 Cline 和 Continue 这样的编辑器集成。
客户端(Client): 客户端充当宿主应用程序中的一个接口,促进 LLM 与服务器之间的交互。它与服务器保持一对一的连接。
服务器(Server): 服务器是一个小型应用程序,它使用 MCP 协议与客户端通信。它提供标准化的流程来列出功能并响应对相关数据或操作的请求。
虽然这些组件通常被讨论为独立的实体,但它们可以集成到一个单一的应用程序中,或者作为单独的应用程序存在。目前,最常见的配置是客户端集成到宿主应用程序中,并通过使用 JSON-RPC 的安全传输方式与服务器通信。
MCP 服务器提供哪些功能?
MCP 服务器为客户端提供了一系列功能,以支持数据检索和对数据执行的操作。这些功能包括:
资源(Resources): LLM 可以跟踪的数据存储,例如文件、数据库模式信息和控制台日志。资源在聊天会话开始时加载,以避免重复请求静态数据。
工具(Tools): 可以执行的操作,例如从文件中检索内容、将数据插入数据库或回复电子邮件。
提示词(Prompts): 服务器向客户端提供的有用且可重复使用的提示词。许多宿主应用程序允许用户使用“快速列表”功能列出可用的提示词,通常通过键入“/”来触发。这些提示词也可以充当可以动态填充用户输入的模板。
目前,“工具”是 MCP 提供的最具影响力的功能,也是最受关注的功能。
MCP 服务器的使用安全吗?
MCP 在很大程度上依赖于信任,包括:
- 信任宿主应用程序有效地控制对客户端的访问。
- 信任客户端在使用安全传输方式与服务器通信时。
- 信任服务器在访问资源时实施安全措施。
用户应优先考虑来自信誉良好来源的 MCP 服务器,并且始终通过在安装前验证软件的完整性来谨慎行事。
MCP 宿主如何实施安全措施?
宿主应用程序应实施控制,允许用户在使用工具之前批准它们。主流应用程序通常具有验证工具使用可接受性的机制。例如,当首次调用工具时,Claude Desktop 会提示用户在“使用一次”或“在整个聊天会话中使用”之间进行选择。其他应用程序,如 Cline,可能具有自动批准某些工具或应用程序的方法。在这些验证对话框中呈现给用户的信息级别可能会有所不同。
有哪些传输安全控制可用?
使用了两种主要的传输机制:STDIO 和服务器发送事件 (SSE)。
当客户端和服务器位于同一台计算机上时,首选 STDIO。它将客户端的输出定向到服务器的输入,反之亦然。只有在本地系统被破坏时,传输才会被泄露。
当客户端和服务器位于不同的计算机上时,使用 SSE。它通过 HTTP 连接传输 JSON 消息,从而可以使用标准的 HTTP 安全选项,如 SSL 传输和开放认证 (OAuth) 授权。
使用 MCP 的最大风险是什么?
与 MCP 相关的最大风险是注入恶意服务器。由于所有注册的服务器在宿主应用程序和 LLM 中都有一个单一的参考点,因此恶意服务器可能会污染 LLM 或利用合法服务器的工具。随着 MCP 生态系统的成熟,预计 MCP 安全认证、服务器完整性监控和用于监控的日志记录标准化等概念将被正式化。MCP“应用商店”也可能会出现,为将 MCP 服务器轻松集成到现有工具中提供集中式存储库。
虽然 MCP 规范强烈建议对远程服务器进行身份验证和授权,但它并未强制执行。MCP 服务器的开发者可能会忽略网络安全方面,而未能实施这些建议。
远程可访问的 MCP 服务器容易受到中间人攻击和远程漏洞利用。因此,任何使用基于网络的传输的 MCP 服务器都必须实施强大的身份验证和授权机制。
使用 MCP 时如何保护我的信息?
随着用于保护 MCP 解决方案的技术解决方案和能力的不断发展,目前的建议是遵守已建立的网络安全最佳实践。关键步骤包括:
检测和清点您环境中所有 MCP 安装和配置。 鉴于 MCP 的早期采用阶段,这需要更注重实践的方法,即仔细检查端点的配置文件,而不是依赖集中式监控。理解和批准 MCP 的使用对于维护环境完整性至关重要。
控制访问并监控 MCP 服务器正在访问的资源。 无论资源是端点本地资源还是 SaaS 应用程序,通过日志记录和审计监控访问权限都至关重要。
培训在工作中正在使用 MCP 的人员。 确保他们在授权使用工具之前了解其影响。MCP 规范强调用户在执行操作之前必须征得同意和授权。培训提供了做出明智决策所需的理解。