###全文阅读
2 BACKGROUND AND MOTIVATION
2.1 AI Tooling
图1. 有和没有MCP的工具调用。
在引入 MCP 之前,AI 应用程序依赖于各种方法,例如手动 API 连接、基于插件的接口和代理框架,来与外部工具进行交互。这些方法需要将每个外部服务与特定的 API 集成,从而导致复杂性增加和可扩展性有限。MCP 通过提供一个标准化协议来解决这些挑战,该协议能够实现与多个工具的无缝和灵活交互。
2.1.1 Manual API Wiring. 手动 API 连接。
此过程需要为每个集成进行自定义身份验证、数据转换和错误处理。 随着API数量的增加,维护负担变得显著,通常会导致紧密耦合和脆弱的系统,难以扩展或修改.MCP通过提供统一的接口消除了这种复杂性,允许AI模型动态地连接到多个工具,而无需自定义API布线。
2.1.2 Standardized Plugin Interfaces.标准化插件接口。
这些交互通常是单向的,无法保持状态或协调任务中的多个步骤。有些平台扩展了可用的工具选项,但它们创建了孤立的生态系统,其中插件是特定于平台的,限制了跨平台兼容性,并且需要重复的维护工作。MCP 通过开源和平台无关性脱颖而出,使 AI 应用程序能够与外部工具进行丰富的双向交互,促进复杂的工作流程。
2.1.3 AI Agent Tool Integration. AI代理工具集成。
集成和维护这些工具在很大程度上仍然是手动的,需要自定义实现,并且随着工具数量的增加,复杂性也会增加。MCP 通过提供一个标准化的协议来简化这个过程,该协议使 AI 代理能够通过统一的接口无缝调用、交互和链接多个工具。这减少了手动配置并增强了任务灵活性,使代理能够在没有大量自定义集成的情况下执行复杂操作。
2.1.4 Retrieval-Augmented Generation (RAG) and Vector Database.检索增强生成 (RAG) 和矢量数据库。
方法解决了知识截止的问题,提高了模型的准确性,但仅限于被动检索信息。它本质上不允许模型执行主动操作,例如修改数据或触发工作流。MCP 通过使 AI 模型能够主动与外部数据源和工具进行交互,从而超越了被动信息检索,从而在统一的工作流程中促进检索和操作。
2.2 Motivation动机
虽然MCP在业界得到了快速采用,但在学术界仍然很大程度上未被探索。 本篇论文是第一个分析当前MCP格局,检查其新兴生态系统,并确定潜在的安全风险。
3 MCP ARCHITECTURE
3.1 Core Components核心组件
MCP架构由三个核心组件组成:MCP主机、MCP客户端和MCP服务器: MCP host, MCP client, and MCP server.
图2. MCP的工作流程。
如图2所示,在典型的工作流程中,用户向MCP客户端发送提示,客户端分析意图,通过MCP服务器选择适当的工具,并调用外部API来检索和处理所需的信息,然后通知用户结果
3.1.1 MCP Host.MCP主机。
MCP 主机是一个 AI 应用程序,它在运行 MCP 客户端的同时提供执行基于 AI 的任务的环境。它集成了交互式工具和数据,以实现与外部服务的顺畅通信。 例如:Cursor(一个用于代码完成和软件开发的AI驱动的IDE)等。MCP 主机承载 MCP 客户端,并确保与外部 MCP 服务器的通信。
3.1.2 MCP Client. MCP客户端。
MCP 客户端在主机环境中充当中介,管理 MCP 主机和一个或多个 MCP 服务器之间的通信。
- 向MCP服务器发起请求,查询可用功能,并检索描述服务器功能的响应。
- 处理来自 MCP 服务器的通知,提供有关任务进度和系统状态的实时更新。
- 执行采样以收集有关工具使用和性能的数据,从而实现优化和明智的决策。
MCP客户端通过传输层与MCP服务器进行通信,促进主机和外部资源之间安全、可靠的数据交换和流畅的交互。
3.1.3 MCP Server.MCP服务器。
MCP 服务器使 MCP 主机和客户端能够访问外部系统并执行操作,提供三种核心功能:工具、资源和提示。
Tools: Enabling external operations.工具:启用外部操作。
工具允许 MCP 服务器调用外部服务和 API,以代表 AI 模型执行操作。当客户端请求操作时,MCP 服务器会识别适当的工具,与服务交互,并返回结果。
与传统的函数调用不同,传统的函数调用需要多个步骤,并且将调用与执行分开,MCP 服务器的工具通过允许模型根据上下文自主选择和调用适当的工具来简化此过程。
Resources: Exposing data to AI models.资源:向 AI 模型公开数据。
资源提供对结构化和非结构化数据集的访问,MCP 服务器可以将这些数据集暴露给 AI 模型
当 AI 模型请求特定数据时,MCP 服务器会检索和处理相关信息,使模型能够做出数据驱动的决策。
Prompts: Reusable templates for workflow optimization.提示:可重复使用的模板,用于工作流优化。
提示是MCP服务器生成和维护的预定义模板和工作流,用于优化AI响应并简化重复性任务。他们确保响应的一致性并提高任务执行效率。
3.2 Transport Layer and Communication传输层和通信
传输层确保安全的双向通信,允许主机环境和外部系统之间进行实时交互和高效的数据交换。
传输层管理来自客户端的初始请求的传输、服务器响应的交付,详细说明可用功能,并交换通知,使客户端了解正在进行的更新。
MCP 客户端和 MCP 服务器之间的通信遵循一个结构化的过程,从客户端向服务器查询功能的初始请求开始。在收到请求后,服务器会响应一个初始响应,列出可用的工具、资源,并提示客户端可以利用这些工具和资源。一旦连接建立,系统将保持持续的通知交换,以确保服务器状态的变化或更新能够实时传达给客户端。
3.3 MCP Server LifecycleMCP服务器生命周期
图3. MCP服务器组件和生命周期。
由三个关键阶段组成: creation, operation, and update.创建、操作和更新。
3.3.1 MCP Server Components. MCP服务器组件。
关键组件:
- metadata元数据包括有关服务器的基本信息,例如其名称、版本和描述,允许客户端识别并使用适当的服务器进行交互。
- Configuration配置涉及源代码、配置文件和清单,它们定义了服务器的操作参数、环境设置和安全策略。
- toollist工具列表存储了可用工具的目录,详细说明了它们的功能、输入输出格式和访问权限,确保适当的工具管理和安全性。
- Resources list资源列表控制对包括Web API、数据库和本地文件在内的外部数据源的访问,指定允许的端点及其关联权限。
- Prompts and Templates提示和模板包括预配置的任务模板和工作流,可提高 AI 模型执行复杂操作的效率。
3.3.2 Creation Phase.创建阶段。
创建阶段是 MCP 服务器生命周期的初始阶段,在此阶段,服务器被注册、配置并准备运行。
三个关键步骤:
- Server registration:服务器注册为 MCP 服务器分配一个唯一的名称和身份,允许客户端发现并连接到适当的服务器实例。
- Installer deployment安装程序部署涉及安装MCP服务器及其相关组件,确保正确的配置文件、源代码和清单到位。
- Code integrity verification代码完整性验证在服务器运行之前验证服务器代码库的完整性,以防止未经授权的修改或篡改
3.3.3 Operation Phase.操作阶段。
操作阶段是MCP服务器主动处理请求、执行工具调用并促进AI应用程序与外部资源之间无缝交互的阶段。
- Tool execution工具执行允许 MCP 服务器根据 AI 应用程序的请求调用适当的工具,确保所选工具执行其预期的操作。
- Slash command handling斜杠命令处理使服务器能够解释和执行多个命令,包括通过用户界面或 AI 代理发出的命令,同时管理潜在的命令重叠以防止冲突。
- Sandbox mechanism沙箱机制的执行确保了执行环境是隔离和安全的,防止未经授权的访问并减轻潜在的风险。
3.3.4 Update Phase.更新阶段。
更新阶段确保MCP服务器保持安全、最新,并且能够适应不断变化的需求。
三个任务:
- Authorization management授权管理验证更新后的访问权限是否仍然有效,防止更新后未经授权使用服务器资源
- Version control版本控制在不同服务器版本之间保持一致性,确保新更新不会引入漏洞或冲突。
- Old version management旧版本管理会停用或删除过时的版本,以防止攻击者利用先前版本中的已知漏洞
4 CURRENT LANDSCAPE当前的情景
4.1 Ecosystem Overview生态系统概述
4.1.1 Key Adopters.关键采用者。
表1. MCP生态系统采用概述。
表1展示了MCP如何在不同领域获得显著的吸引力,这表明它在实现无缝AI-to-tool交互方面的重要性日益增加。
这一趋势表明,人们正在转向将MCP嵌入到开发人员环境中,以提高生产力并减少手动集成工作。MCP 有望成为人工智能驱动工作流程的关键推动者,推动跨行业的更安全、可扩展和高效的 AI 生态系统。
4.1.2 Community-Driven MCP Servers.社区驱动的 MCP 服务器。
表2. MCP服务器集合和部署模式概述(截至2025年3月27日)。
MCP.so [35]、Glama [20] 和 PulseMCP [15] 等平台托管了数千台服务器,允许用户发现和集成各种工具和服务。 社区驱动的MCP服务器生态系统的兴起反映了人们对MCP日益增长的热情,并突显了对正式化市场的需要。
4.1.3 SDKs and Tools. SDK和工具。
官方SDK有多种语言版本, 为开发人员提供多种选择,以便在不同环境中实施MCP。除了官方的SDK之外,社区还贡献了许多框架和实用程序,简化了MCP服务器的开发。
Tools
- EasyMCP and FastMCP提供基于轻量级 TypeScript 的解决方案,以快速构建 MCP 服务器
- FastAPI to MCP Auto Generator使 FastAPI 端点作为 MCP 工具的无缝暴露成为可能。
- Foxy Contexts 提供了一个基于 Golang 的库来构建 MCP 服务器
- Higress MCP Server Hosting 将 API 网关(基于 Envoy)扩展到使用 wasm 插件托管 MCP 服务器。
- Mintlify, Speakeasy, and Stainless通过自动化 MCP 服务器生成、提供精选的 MCP 服务器列表以及实现更快的部署,同时将人工干预降至最低,进一步增强生态系统。
4.2 Use Cases用例
3个集成了MCP的key platform
4.2.1 OpenAI: MCP Integration in AI Agents and SDKs. MCP在AI代理和SDK中的集成。
OpenAI 在其 Agent SDK 中引入了 MCP 支持,使开发人员能够创建与外部工具无缝交互的 AI 代理。在典型的工作流程中,开发人员使用 Agent SDK 来定义需要调用外部工具的任务。当 AI 代理遇到从 API 检索数据或查询数据库等任务时,SDK 会通过 MCP 服务器路由请求。该请求通过 MCP 协议传输,确保正确格式化并实时响应交付给代理。
4.2.2 Cursor: Enhancing Software Development with MCP-Powered Code Assistants. 使用MCP驱动的代码助手增强软件开发。
Cursor 允许 AI 代理与外部 API 进行交互,访问代码存储库,并在集成开发环境中直接自动化工作流。当开发人员在 IDE 中发出命令时,AI 代理会评估是否需要外部工具。如果是,则代理向 MCP 服务器发送请求,该服务器识别适当的工具并处理任务,例如运行 API 测试、修改文件或分析代码。 然后将结果返回给代理以进行进一步操作。
4.2.3 Cloudflare: Remote MCP Server Hosting and Scalability.远程MCP服务器托管和可扩展性。
这种方法消除了与本地配置 MCP 服务器相关的复杂性,允许客户端无缝连接到安全的云托管 MCP 服务器。工作流程从 Cloudflare 在安全的云环境中托管 MCP 服务器开始,这些服务器可以通过经过身份验证的 API 调用访问。AI 代理使用基于 OAuth 的身份验证启动对 Cloudflare MCP 服务器的请求,确保只有授权实体可以访问服务器。一旦通过身份验证,代理就会通过 MCP 服务器动态调用外部工具和 API,执行数据检索、文档处理或 API 集成等任务。
5 SECURITY AND PRIVACY ANALYSIS安全和隐私分析
在本节中,我们分析了不同阶段的安全威胁:创建、操作和更新。 creation, operation, and update
5.1 Security Risks in the Creation Phase创建阶段的安全风险
MCP 服务器的创建阶段包括注册服务器、部署安装程序和验证代码完整性。
三个key risks:name collision, installer spoofing, and code injection/backdoor名称冲突、安装程序欺骗和代码注入/后门
5.1.1 Name Collision.名称冲突。
risk发生情形:当恶意实体注册一个与合法服务器名称相同或具有欺骗性相似性的MCP服务器时,会发生服务器名称冲突,在安装阶段欺骗用户。
risk发生原因:由于MCP客户端在选择服务器时主要依赖于服务器的名称和描述,因此它们容易受到此类冒充攻击。
risk发生危害:一旦安装了受损服务器,它可能会误导 AI 代理和客户端调用恶意服务器,从而可能暴露敏感数据、执行未经授权的命令或破坏工作流程。
risk类似攻击:此外,随着MCP市场的发展以支持公共服务器列表,供应链攻击可能成为一个关键问题,恶意服务器可以替换合法服务器。
risk解决建议:未来的研究可以专注于建立严格的命名空间策略,实施加密服务器验证,并设计基于声誉的信任系统,以确保 MCP 服务器注册的安全性。
5.1.2 Installer Spoofing.安装程序欺骗。
risk发生情形:安装程序欺骗发生在攻击者分发修改后的MCP服务器安装程序时,这些安装程序在安装过程中引入恶意代码或后门。
表3. 非官方MCP自动安装程序(截至2025年3月27日)。
risk发生原因:这些非官方安装程序通常来自未经验证的存储库或社区驱动的平台,它们可能会无意中使用户面临安全风险,例如安装篡改的服务器或错误配置的环境。
risk发生危害:攻击者可以通过嵌入恶意软件来利用这些自动安装程序,从而获得未经授权的访问权限、修改系统配置或创建持久后门。
risk解决建议:解决这些挑战需要为 MCP 服务器开发一个标准化、安全的安装框架,强制执行软件包完整性检查,并建立基于声誉的信任机制,以评估 MCP 生态系统中自动安装程序的可信度。
5.1.3 Code Injection/Backdoor.代码注入/后门。
risk发生情形:代码注入攻击发生在创建阶段,恶意代码被偷偷嵌入到MCP服务器的代码库中,通常会绕过传统的安全检查。
risk发生危害:这些后门允许攻击者在不被察觉的情况下控制服务器,从而执行未经授权的数据外泄、权限提升或命令操纵等操作。
risk发生原因:代码注入特别阴险,因为它可以通过受破坏的依赖项、易受攻击的构建管道或对服务器源代码的未经授权的修改引入。 MCP 服务器通常依赖于社区维护的组件和开源库,确保这些依赖项的完整性至关重要。
risk解决建议:应实施严格的代码完整性验证、严格的依赖关系管理和定期的安全审计,以检测未经授权的修改并防止引入恶意代码。 采用可重现的构建并在部署期间强制执行校验和验证,可以进一步保护 MCP 服务器免受基于注入的威胁。
5.2 Security Risks in the Operation Phase操作阶段的安全风险
操作阶段是MCP服务器主动执行工具、处理斜杠命令并与外部API交互的阶段。
三个重要风险:three major risks: tool name conflicts, slash command overlap, and sandbox escape.工具名称冲突、斜杠命令重叠和沙箱逃逸。
5.2.1 Tool Name Conflicts.工具名称冲突。
risk发生情形:当 MCP 生态系统中的多个工具共享相同或相似的名称时,就会出现工具名称冲突,从而导致在工具选择和执行过程中产生歧义和混淆。
risk发生危害:这可能导致 AI 应用程序意外调用错误的工具,从而可能执行恶意命令或泄露敏感信息。
risk发生原因:恶意行为者可以通过在工具描述中嵌入欺骗性短语来进一步操纵工具选择。
risk类似风险:toolflow hijacking工具流劫持 :攻击者可以利用误导性描述来影响工具选择并控制关键工作流程。
risk解决建议:这强调了研究人员需要开发先进的验证和异常检测技术,以识别和减轻欺骗性工具描述,确保准确和安全的人工智能工具选择。
5.2.2 Slash Command Overlap.斜杠命令重叠。
risk发生情形:当多个工具定义相同或类似的命令时,就会发生斜杠命令重叠,从而导致命令执行期间出现歧义。
risk发生危害:这种重叠引入了执行意外操作的风险,特别是当 AI 应用程序根据上下文线索动态选择和调用工具时。 恶意行为者可以通过引入操纵工具行为的冲突命令来利用这种模糊性,从而可能危及系统完整性或暴露敏感数据。
risk发生原因:由于斜杠命令通常在客户端界面中作为面向用户的快捷方式显示,因此错误解释或冲突的命令可能会导致危险的结果,
risk解决建议:MCP 客户端应建立上下文感知命令解析,应用命令消歧技术,并根据验证的工具元数据优先执行。
5.2.3 Sandbox Escape.沙箱逃逸。
沙箱隔离了 MCP 工具的执行环境,限制了它们对关键系统资源的访问,并保护主机系统免受潜在有害操作的影响。
risk发生情形:当攻击者利用沙箱实现中的缺陷时,就会出现沙箱逃逸漏洞,使他们能够突破受限环境并获得对主机系统的未经授权的访问。
risk发生危害:一旦跳出沙箱,攻击者就可以执行任意代码、操纵敏感数据或提升权限,从而破坏MCP生态系统的安全性和稳定性。
risk发生原因:利用系统调用中的弱点、处理不当的异常以及第三方库中的漏洞。
risk类似风险:side-channel attacks侧信道攻击可能会允许攻击者提取敏感数据,破坏沙箱的预期隔离。
risk解决建议:在MCP环境中检查真实世界的沙箱逃逸场景,可以为加强沙箱安全和防止未来的利用提供有价值的见解。
5.3 Security Risks in the Update Phase更新阶段的安全风险
更新阶段涉及管理服务器版本、修改配置和调整访问控制。
三个关键风险:三个关键风险:post-update privilege persistence, redeployment of vulnerable versions, and configuration drift.更新后权限持续存在、重新部署易受攻击的版本以及配置漂移。
5.3.1 Post-Update Privilege Persistence.更新后权限持久性。
更新后权限持久性是指在 MCP 服务器更新后,过时或被撤销的权限仍然有效,允许以前授权的用户或恶意行为者保留提升的权限。
risk发生情形: 当特权修改(如 API 密钥撤销或权限更改)未在服务器更新后正确同步或失效时。
risk发生危害:利用它们来维持对敏感资源的未经授权的访问或执行恶意操作。
risk发生原因:当服务器更新后,特权修改(如 API 密钥撤销或权限更改)未正确同步或失效时,就会出现此漏洞。
risk解决建议:强制执行严格的特权撤销策略,确保特权更改在所有服务器实例中一致传播,并实施 API 密钥和会话令牌的自动过期,对于降低特权持久性的可能性至关重要。对特权修改进行全面的日志记录和审计进一步提高了可见性,并有助于检测可能表明特权持久性的不一致之处。
5.3.2 Re-deployment of Vulnerable Versions.易受攻击版本的重新部署。
risk发生情形:
- 人们下载MCPserver包没有正式的审查流程。这种分散式模型增加了重新部署易受攻击版本的风险,这可能是由于更新延迟、版本回滚或依赖未经验证的软件包源。
- 当用户更新 MCP 服务器时,他们可能会无意中回滚到较旧的易受攻击版本,以解决兼容性问题或保持稳定性。
- 另外非官方的自动下载器简化服务器安装,可能默认为缓存或过时版本,使系统暴露于先前修补的漏洞。
- 不主动跟踪更新或安全公告的用户可能会在不知不觉中继续使用易受攻击的版本,从而为攻击者利用已知漏洞创造机会。
risk发生原因:MCP 服务器是开源的,由个人开发人员或社区贡献者维护,缺乏用于审计和强制执行安全更新的集中平台。 由于 MCP 生态系统中的安全补丁依赖于社区驱动的维护,因此漏洞披露和补丁可用性之间的延迟很常见。
risk解决建议:建立一个官方的包管理系统,为MCP服务器提供标准化的打包格式,并建立一个集中的服务器注册表,以方便安全地发现和验证可用的MCP服务器。
5.3.3 Configuration Drift.配置漂移。
risk发生情形:当系统配置中随着时间的推移累积了意外更改时,就会发生配置漂移,从而偏离原始安全基线。
risk发生原因:由于手动调整、忽略更新或不同工具或用户所做的冲突修改。
risk发生危害:在MCP环境中,服务器通常由最终用户本地配置和维护,这种不一致可能会引入可利用的漏洞,并破坏整体安全态势。多租户环境中的错误配置可能会暴露敏感数据,导致权限提升,或无意中授予恶意行为者比预期更广泛的访问权限。
risk解决建议:解决此问题需要实施自动配置验证机制和定期一致性检查,以确保本地和远程 MCP 环境都遵守安全基线配置。
6 DISCUSSION
6.1 Implications影响
对于开发人员:
MCP降低了集成外部工具的复杂性,使创建更通用和功能强大的AI代理成为可能,这些代理可以执行复杂的多步骤任务。通过提供调用工具的标准化接口,MCP 将重点从管理复杂的集成转移到增强代理逻辑和功能上。
对于用户 :
MCP通过在AI代理和外部工具之间实现无缝交互,增强了体验,从而实现了跨平台的工作流自动化,例如企业数据管理和物联网集成。它减少了对人工操作的需求,并提高了处理复杂任务的效率。
对于MCP生态系统维护者 :
MCP服务器开发和分发的分散性引入了碎片化的安全格局。MCP服务器通常托管在开源平台上,更新和补丁由社区驱动,质量和频率可能有所不同。没有集中监督,服务器配置不一致和过时版本可能会引入潜在的漏洞。 随着 MCP 生态系统的发展,以支持远程托管和多租户环境,维护人员必须时刻关注与配置漂移、权限持久性和易受攻击版本重新部署相关的潜在风险。
对于更广泛的AI社区 :
MCP 通过跨系统协调、动态工具调用和协作多代理系统增强代理工作流,从而解锁新的可能性。 MCP 标准化代理和工具之间交互的能力有可能加速各行各业对 AI 的采用,推动医疗保健、金融和企业自动化等领域的创新。人工智能社区必须解决新兴的道德和运营问题 ,确保MCP的利益得到广泛分配,同时在人工智能生态系统中保持问责制和信任。
6.2 Challenges挑战
Lack of centralized security oversight.缺乏集中的安全监督。
- 由于MCP服务器由独立的开发人员和贡献者管理,因此没有集中的平台来审计、执行或验证安全标准。
- MCP 服务器没有统一的包管理系统,这使得安装和维护过程变得复杂,并增加了部署过时或配置错误版本的可能性。
- 在不同的MCP客户端上使用非官方安装工具进一步引入了服务器部署的可变性,使得保持一致的安全标准变得更加困难。
Authentication and authorization gaps.身份验证和授权差距。
- 如果没有统一的机制来验证身份和规范访问,就很难强制执行粒度权限,特别是在多租户环境中,多个用户和代理可能与同一 MCP 服务器进行交互。
- 缺乏强大的身份验证协议会增加未经授权的工具调用的风险,并将敏感数据暴露给恶意行为者。
- 不同MCP客户端处理用户凭据的方式不一致,进一步加剧了这些安全挑战,使得在部署中保持一致的访问控制策略变得困难
Insufficient debugging and monitoring mechanisms.调试和监控机制不足。
- 这使得开发人员很难诊断错误、跟踪工具交互,并在调用工具时评估系统行为。
- 由于MCP客户端和服务器独立运行,错误处理和日志记录的不一致可能会掩盖关键的安全事件或操作故障。
- 识别异常、防止系统故障和减轻潜在的安全事件变得具有挑战性,阻碍了更具弹性的MCP生态系统的开发。
Maintaining consistency in multi-step, cross-system workflows.在多步骤、跨系统的工作流程中保持一致性。
- 由于这些系统的分布式特性,确保连续工具交互之间的一致性本质上是困难的。
- 如果没有有效的状态管理和错误恢复机制,MCP 会传播错误或丢失中间结果,导致工作流不完整或不一致。
- 此外,跨不同平台的动态协调可能会引入延迟和冲突,进一步使 MCP 环境中的工作流无缝执行复杂化。
Scalability challenges in multi-tenant environments.多租户环境中的可扩展性挑战。
如果没有强大的资源管理和特定于租户的配置策略机制,错误配置可能会导致数据泄露、性能问题和权限提升。
Challenges in embedding MCP in smart environments.在智能环境中嵌入MCP的挑战。
- 实时响应、互操作性和安全性!
- 这些环境中的MCP服务器必须处理来自多个传感器和设备的连续数据流,同时保持低延迟响应。
- 此外,确保AI代理与异构设备生态系统之间的无缝交互通常需要自定义适配,从而增加了开发复杂性。
- 智能环境中的受损MCP服务器可能会导致对关键系统的未经授权的控制,威胁到安全性和数据完整性。
6.3 Recommendations for MCP stakeholders 对MCP利益相关者的建议
对MCP维护者的建议。
- 应建立正式的包管理系统,强制执行严格的版本控制,并确保仅向用户分发经过验证的更新。
- 引入一个集中式服务器注册表将使用户能够更安全地发现和验证 MCP 服务器,从而降低与恶意或配置错误的服务器交互的风险。
- 应促进采用加密签名来验证 MCP 包,并鼓励定期进行安全审计以识别和缓解漏洞。
- 实施安全的沙箱框架可以帮助防止权限提升,并保护主机环境免受恶意工具执行的影响。
对开发人员的建议。
- 应通过遵守安全编码实践和维护详尽的文档来优先考虑安全性和弹性。
- 强制执行版本管理策略可以防止回滚到易受攻击的版本,而彻底的测试则确保在部署之前可靠地集成MCP。
- 应自动化配置管理并采用基础架构即代码 (IaC) 实践。
- 实施强大的工具名称验证和消歧技术可以防止导致意外行为的冲突。
- 利用运行时监控和日志记录有助于跟踪工具调用、检测异常并有效缓解威胁。
对研究人员的建议。
- 应侧重于进行系统安全分析,以发现工具调用、沙箱实现和权限管理中的潜在漏洞。
- 研究人员应调查分散式生态系统中更有效的版本控制和包管理方法,以降低重新部署易受攻击版本的可能性。
- 通过开发自动漏洞检测方法和提出安全更新管道,保持对新兴威胁的领先。
- 在多工具环境中的上下文感知代理编排的探索。随着MCP越来越多地支持多步骤、跨系统的工作流,确保状态一致性和防止工具调用冲突变得至关重要
- 探索动态状态管理、错误恢复和工作流验证技术,以确保在复杂环境中无缝运行。
最终用户的建议。
- 对安全风险保持警惕,并采取措施保护其环境。
- 应优先使用经过验证的MCP服务器,并避免使用可能引入漏洞的非官方安装程序 🔤
- 定期更新MCP服务器并监控配置更改可以防止错误配置并减少对已知漏洞的暴露。
- 正确配置访问控制策略有助于防止权限提升和未经授权的工具使用
- 选择遵循严格安全标准的提供商可以最大限度地降低多租户环境中的风险。
- 提高用户意识并鼓励最佳实践将增强整体安全性和弹性。
7 RELATED WORK
7.1 Tool Integration in LLM Applications LLM应用程序中的工具集成
7.2 Security Risks in LLM-Tool InteractionsLLM-工具交互中的安全风险
8 CONCLUSION
- 本文首次对MCP生态系统进行了全面分析。
- 我们研究了其架构、核心组件、操作工作流和服务器生命周期阶段。
- 此外,我们还探讨了采用情况、多样性和用例,并确定了在创建、操作和更新阶段可能存在的安全威胁。
- 我们还强调了与MCP采用相关的含义和风险,并为利益相关者提出了可操作的建议,以增强安全性和治理。
- 此外,我们还概述了未来的研究方向,以应对新兴风险并提高MCP的弹性。
- 随着MCP继续受到OpenAI和Cloudflare等行业领导者的青睐,解决这些挑战对于其长期成功以及实现与各种外部工具和服务的安全、高效交互至关重要。
PS
AI agent
AI Agent 是一个具备目标导向、自主行为能力的人工智能系统,能够接收输入、做出推理、调用工具、执行动作,并根据反馈调整行为。
构成要素(从技术角度)
常见类型的 AI Agents
Workflow
工作流是将一个任务拆解成多个可执行步骤,并按照规则自动流转的过程,它能帮助提高效率、减少人工干预,并清晰地管理任务流向
构成要素(从技术角度)
工作流在 AI 和编程中的含义
Transport Layer and Communication
Model Context Protocol (MCP) 中的传输层为 clients 和 servers 之间的通信提供基础。传输层处理消息发送和接收的底层机制。
MCP 目前定义了两种标准的客户端-服务端通信传输机制:
注:客户端和服务端可以根据需要实现额外的自定义传输机制。MCP 协议与传输方式无关,可以在任何支持双向消息交换的通信通道上实现。
stdio 传输
stdio 传输通过标准输入和输出流进行通信。这对于本地集成和命令行工具特别有用。
- 客户端将 MCP 服务端作为子进程启动。
- 服务端通过标准输入(stdin)接收 JSON-RPC 消息,并通过标准输出(stdout)写入响应。
- 消息以换行符分隔,且不得包含嵌入的换行符。
- 服务端可以将 UTF-8 字符串写入标准错误(stderr)以用于日志记录。客户端可以选择捕获、转发或忽略这些日志。
- 服务端不得向 stdout 写入任何非法的 MCP 消息。
- 客户端不得向服务端的 stdin 写入任何非法的 MCP 消息。
在以下情况下使用 stdio:
HTTP with SSE 传输
SSE 传输通过 HTTP POST 请求实现服务器到客户端的流式通信。
在 SSE 传输中,服务端作为独立进程运行,可以处理多个客户端连接。
服务端必须提供两个端点:
当客户端连接时,服务端必须发送一个包含 URI 的 endpoint 事件,客户端使用该 URI 发送消息。所有后续客户端消息必须通过 HTTP POST 请求发送到此端点。
服务端消息以 SSE 消息事件的形式发送,消息内容以 JSON 编码在事件数据中。
在以下情况下使用 SSE: