【超详细】Claude MCP 大模子上下文协议全面先容(架构、协议、优缺点)
大家好,我是 同砚小张,+v: jasper_8017 一起交流,连续学习AI大模子应用实战案例,连续分享,接待大家点赞+关注,订阅我的大模子专栏,共同砚习和进步。https://i-blog.csdnimg.cn/direct/bcdfd49253d0413baf22f52cfa5b6bcc.png
随着人工智能技能的飞速发展,大模子(LLMs)在各个范畴的应用越来越广泛。然而,怎样安全、高效地将这些大模子集成到应用程序中,成为了一个亟待办理的问题。Model Context Protocol (MCP) 应运而生,它提供了一种标准化的客户端-服务器架构,用于在应用程序中集成 AI 功能,同时确保安全性和可扩展性。本文将详细先容 MCP 的架构、底子协议、生命周期、传输机制、安全性以及优缺点。
1. MCP 架构
MCP 遵循客户端-主机-服务器架构,每个主机可以运行多个客户端实例。这种架构不仅使用户可以或许在应用程序中集成 AI 功能,还保持了明确的安全边界和隔离关注点。MCP 基于 JSON-RPC,提供了一个有状态的会话协议,专注于上下文交换和客户端与服务器之间的采样协调。
https://i-blog.csdnimg.cn/direct/d91214ad4db845f196975c41c625cb6b.png
1.1 核心组件
[*] 主机(Host):主机历程充当容器和协调者,负责创建和管理多个客户端实例,控制客户端连接权限和生命周期,实行安全计谋和同意要求,处理用户授权决策,协调 AI/LLM 集成和采样,以及管理跨客户端的上下文聚合。
[*] 客户端(Client):每个客户端由主机创建,并维护一个隔离的服务器连接。客户端为每个服务器创建一个有状态的会话,处理协议协商和功能交换,双向路由协议消息,管理订阅和通知,维护服务器之间的安全边界。
[*] 服务器(Server):服务器提供专门的上下文和功能,通过 MCP 原语公开资源、工具和提示,独立运行,具有明确的职责,通过客户端接口请求采样,必须服从安全约束,可以是本地历程或长途服务。
1.2 设计原则
MCP 的设计基于以下几个关键原则:
[*] 服务器应该非常容易构建:主机应用程序处理复杂的编排职责,服务器专注于特定的、明确的功能,简单的接口最小化实现开销,明确的分离使代码易于维护。
[*] 服务器应该高度可组合:每个服务器在隔离中提供专注的功能,多个服务器可以无缝组合,共享协议实现互操作性,模块化设计支持可扩展性。
[*] 服务器不应读取整个对话,也不应“看到”其他服务器:服务器仅吸收须要的上下文信息,完整的对话历史保留在主机中,每个服务器连接保持隔离,跨服务器交互由主机控制,主机历程实行安全边界。
[*] 功能可以逐步添加到服务器和客户端:核心协议提供最少的必须功能,需要时可以协商额外的功能,服务器和客户端独立演进,协议设计为将来可扩展,保持向后兼容性。
2. 底子协议
所有 MCP 客户端和服务器之间的消息必须遵循 JSON-RPC 2.0 规范。该协议定义了三种基本类型的消息:
[*] 请求(Requests):用于启动操作的消息,必须包含唯一 ID 和方法名称。
[*] 响应(Responses):复兴请求的消息,必须包含与请求雷同的 ID,进一步分为成功结果或错误。
[*] 通知(Notifications):无需复兴的单向消息,不得包含 ID。
MCP 由多个关键组件组成,这些组件协同工作:
[*]底子协议:核心 JSON-RPC 消息类型。
[*]生命周期管理:连接初始化、功能协商和会话控制。
[*]服务器功能:服务器公开的资源、提示和工具。
[*]客户端功能:客户端提供的采样和根目录列表。
[*]实用工具:跨范畴关注点,如日记记录和参数完成。
所有实现必须支持底子协媾和生命周期管理组件,其他组件可以根据应用程序的具体需求实现。
3. 生命周期
MCP 定义了一个严格的客户端-服务器连接生命周期,确保正确的功能协商和状态管理。生命周期分为三个阶段:
[*] 初始化:功能协商和协议版本协商。客户端通过发送包含支持的协议版本、客户端功能和客户端实现信息的 initialize 请求来启动此阶段。服务器以其自己的功能和信息举行响应。成功初始化后,客户端发送 initialized 通知以表示其准备开始正常操作。
[*] 操作:正常的协议通信。客户端和服务器根据协商的功能交换消息,双方应恭敬协商的协议版本,仅使用成功协商的功能。
[*] 关闭:优雅地停止连接。没有定义特定的关闭消息,应使用底层传输机制来表示连接停止。
https://i-blog.csdnimg.cn/direct/3319156eda3c4c3fba566bf787c2db72.png
4. 传输
MCP 目前定义了两种用于客户端-服务器通信的标准传输机制:
[*]Stdio:通过标准输入和标准输出举行通信。客户端将 MCP 服务器作为子历程启动,服务器在其标准输入 (stdin) 上吸收 JSON-RPC 消息,并将响应写入其标准输出 (stdout)。消息以换行符分隔,不得包含嵌入的换行符。
https://i-blog.csdnimg.cn/direct/b42930a710ad4775bb16b878814a39d0.png
[*]HTTP with Server-Sent Events (SSE):服务器作为独立历程运行,可以处理多个客户端连接。服务器必须提供两个端点:一个 SSE 端点,供客户端创建连接并吸收来自服务器的消息;一个常规的 HTTP POST 端点,供客户端向服务器发送消息。
https://i-blog.csdnimg.cn/direct/465b2f5d141945078ef1d5d78cdb1bd4.png
客户端和服务器也可以以可插拔的方式实现自定义传输机制,以满意其特定需求。选择支持自定义传输的实现者必须确保它们保留 MCP 定义的 JSON-RPC 消息格式和生命周期要求。
5. 安全性
5.1 数据安全与隐私保护
[*] 制止敏感数据上传:MCP 通过本地服务器与数据源创建双向连接,制止了将敏感数据上传到第三方平台,最大限度地保障了数据隐私。例如,用户可以直接让 AI 模子分析本地数据库中的数据,而无需将数据文件上传至云端。
[*] 受控本领:MCP 服务器仅袒露特定且受控的功能,确保数据访问既可控又可审计。服务器自己控制资源,无需将 API 密钥等敏感信息提供给 LLM 提供商,纵然 LLM 提供商受到攻击,攻击者也无法获取到这些敏感信息。
5.2 传输安全
[*] 加密传输:MCP 协议支持多种加密算法,以确保数据在传输过程中的安全性。对于长途连接,建议使用 TLS 加密网络传输,保护敏感数据。
[*] 消息验证:MCP 协议要求验证所有传入消息,清理输入数据,查抄消息大小限制,并验证 JSON-RPC 格式。这有助于防止恶意内容和数据泄露。
5.3 身份验证与授权
[*] 用户授权机制:MCP 通过用户授权机制确保安全使用,控制 AI 模子的权限范围。用户可以决定哪些上下文被发送到 LLM,何时实行操作,以及怎样使用工具和资源。
[*] 自定义认证计谋:固然 MCP 核心规范目前不包括认证和授权,但客户端和服务器可以协商自己的自定义认证和授权计谋。
5.4 资源保护与访问控制
[*] 访问控制:MCP 服务器实现访问控制,确保只有颠末验证的请求才能访问特定资源。服务器可以验证资源路径,监控资源使用,并限制请求速率。
[*] 防止滥用:MCP 协议设计了防止滥用的机制,包括实施速率限制、设置合适的超时时间、处理拒绝服务(DoS)攻击场景等。
5.5 安全审计与监控
[*] 日记记录:MCP 协议建议记录协议事件、跟踪消息流、监控性能和记录错误。这有助于举行安全审计和监控,实时发现和处理安全问题。
[*] 错误处理:MCP 协议定义了标准错误代码,并要求在错误时不泄露敏感信息,记录安全干系错误,实现适当的清理。
5.6 模块化与可扩展性
[*] 模块化设计:MCP 的架构允许模块化开辟,多个 MCP 服务器可以连接到单个主机,每个服务器处理不同的资源。这种设计使得安全机制可以针对不同的资源和功能举行定制和扩展。
[*] 向后兼容性:MCP 协议设计为将来可扩展,保持向后兼容性。这确保了在添加新功能或更新协议时,不会破坏现有的安全机制。
6. 优缺点
长处
[*]安全性:MCP 提供了明确的安全边界和隔离关注点,确保了客户端和服务器之间的安全通信。
[*]可扩展性:通过模块化设计和功能协商,MCP 支持服务器和客户端的独立演进,保持向后兼容性。
[*]灵活性:MCP 支持多种传输机制,包括标准的 stdio 和 HTTP with SSE,以及自定义传输机制,满意不同应用场景的需求。
[*]易用性:服务器专注于特定的功能,简单的接口最小化实现开销,明确的分离使代码易于维护。
缺点
[*]行业标准竞争剧烈
[*] 面临众多竞争对手:在数据连接和交互范畴,众多标准竞相角逐,MCP 协议只是其中之一。其他雷同协议或技能的不停涌现,可能会分散市场关注和资源,从而对 MCP 协议的推广和普及构成一定停滞。
[*] 生态建设难度大:要在众多标准中脱颖而出,成为行业通用标准,MCP 需要降服技能兼容性、市场认可度等多方面的困难,这可能需要大量的时间和资源投入,以及行业内的广泛合作和共识。
[*]兼容性挑战
[*]数据源和 AI 应用的多样性:鉴于数据源和 AI 应用的广泛多样性,某些数据源或 AI 应用在与 MCP 协议集成时可能会出现不兼容现象。例如,一些老旧系统或特殊定制的数据源可能难以与 MCP 协议顺遂对接,需要额外的适配工作,这在一定水平上限制了 MCP 协议的广泛应用。
[*]协议本质的质疑
[*]工程优化方案的质疑:部门观点以为,MCP 协议本质上更像是一个工程优化方案,且并非完善的优化方案。例如,有人指出,在极度情况下,直接为 LLM 提供 HTTP 接口,识别 JSON 并调用,与 MCP 协议并无本质区别,质疑其是否能称为真正的协议,以为它更像是 FunctionCall 与 Proxy 的组合。
[*]应用范围受限
[*]本地运行限制:目前,MCP 协议仅支持本地运行,服务器需摆设在本地呆板上,这在一定水平上限制了其在更广泛场景下的应用。尽管官方计划推出具有企业级身份验证的长途服务器支持,但在该功能完善之前,MCP 协议在多设备或分布式环境下的数据交互本领仍存在不敷,难以满意部门应用场景的需求。
7. 总结
Model Context Protocol (MCP) 为在应用程序中集成 AI 功能提供了一种安全、高效、可扩展的办理方案。通过其客户端-主机-服务器架构、底子协议、生命周期管理和传输机制,MCP 确保了客户端和服务器之间的安全通信和功能协商。尽管 MCP 在某些方面可能存在一定的复杂性和性能开销,但其在安全性和可扩展性方面的优势使其成为一种值得保举的 AI 集成协议。
参考:
[*] https://model-context-protocol.github.io/specification/architecture/
[*] https://model-context-protocol.github.io/specification/basic/
[*] https://model-context-protocol.github.io/specification/basic/messages/
[*] https://model-context-protocol.github.io/specification/basic/lifecycle/
[*] https://model-context-protocol.github.io/specification/basic/transports/
[*] https://www.claudemcp.com/zh/docs/introduction
如果觉得本文对你有帮助,麻烦点个赞和关注呗 ~~~
[*]大家好,我是 同砚小张,连续学习C++进阶、OpenGL、WebGL知识和AI大模子应用实战案例
[*]接待 点赞 + 关注
页:
[1]