当前位置: 首页 > news >正文

MCP之一_MCP协议解析

1 简介

MCP(Model Context Protocol,模型上下文协议)是 Anthropic 在 2024 年底推出的一种开放协议,旨在实现大语言模型(LLM)与外部数据源、工具和应用程序之间的安全、高效互动。

MCP 使得不同 AI 模型能够轻松连接到外部工具和数据源,而无需单独整合多个 API。传统上,整合外部工具需要处理各个 API 的代码、文档、认证方式、错误处理以及后续维护,增加了开发复杂度。MCP 的特点在于其“即插即用”功能,工具只需封装一次,即可与多种大模型 API 组合使用。

2 现有方法的问题

常用方法:

  • 方法一:将数据上传到服务器
  • 将数据存储在他人服务器中,存在安全风险。
  • 上传过程中,数据大小和类型受到严格限制。
  • 方法二:给予大模型本地管理员权限,自动处理本地数据。
  • 同样存在安全隐患。
  • 例如:Open Interpreter、CUA。

MCP 的优势:

  • 统一协议:MCP 作为统一接口,只需一次集成即可连接多个服务。
  • 动态发现:AI 模型能够自动识别并使用可用工具,无需提前固定每个接口。
  • 双向通信:支持数据拉取和操作触发。
  • 安全性:确保只有授权用户才能访问特定资源。

总之,传统 API 更加可靠,但复杂且开发周期长。MCP 类似于当今大模型,虽然能解决更多问题,但可能不够完善。

3 原理

3.1 整个流程

问题 -> Claude Desktop -> LLM 模型 ->需要数据 ->MCP Client -> MCP Server->执行操作 ->执行结果 -> MCP Client->Claude 根据结果生成回答 ->显示在 Claude Desktop 上。

MCP 的职责是协调 AI 模型与工具之间的信息流,并不具体处理功能实现。

3.2 主图说明

  • MCP 主机(Host):发起 LLM 应用请求的设备或程序(如 Claude Desktop、IDE 或 AI 工具)。
  • MCP 客户端(Client):与 MCP 服务器建立稳定的一对一连接。
  • MCP 服务器(Server):为 MCP 客户端提供三大功能:
  • 资源(Resources):可被客户端读取的数据文件,如 API 响应或文件内容。
  • 工具(Tools):可由 LLM 调用的函数,执行时需用户批准。
  • 提示(Prompts):预设模板,协助用户完成特定任务。
  • 本地资源(Local Resources):MCP 服务器可安全访问的本地资源(如文件或数据库)。
  • 远程资源(Remote Resources):MCP 服务器可连接的远程资源,如 API 或互联网服务。

3.3 通信机制

MCP 协议支持两种主要通信机制:本地通信通过标准输入输出进行;远程通信利用 SSE(Server-Sent Events)。两者均采用 JSON-RPC 2.0 格式传输消息,确保了通信的标准化和可扩展性。

3.4 大模型的角色

  • 无需工具时:模型直接生成自然语言回复。
  • 需要工具时:模型输出结构化的 JSON 格式工具调用请求。host 通过 client 连接相应 server 调用工具。

3.5 服务器实现

  • 明确功能:定义 MCP 服务器的核心功能。
  • 开发 MCP 层:遵循协议标准进行实现。
  • 选择通信方式:本地(标准输入输出)或远程(如 WebSockets)。
  • 实现功能:开发或集成数据源和工具。
  • 测试连接:确保 MCP 服务器与客户端的连接安全稳定。

4 使用难度

  • 首先下载并安装最新版本的 Claude Desktop 应用。
  • 修改 Claude 的配置文件。
  • 通过聊天调用功能。
  • MCP 目前支持的数据服务包括 GitHub、Google Drive、Slack 等,也可自建 MCP 服务。官网提供了相应的 Python 和 Typescript 教程。

5 问题与解答

  • 与之前的 agent 实现有何不同?
  • 许多代码和结构与以前的 agent 和 tools 非常相似(定义了可提供的功能信息,包括名字、具体功能、参数和返回值),仅仅进行了封装和协议化,并提供远程调用。
  • 解决了哪些问题?
  • 数据安全问题:确保对机器上数据的访问是权限可控且操作透明的。
  • 避免重复造轮子的问题(工具不用完全自己做,可以调别人做好的)。
  • 除了 Claude,还有哪些模型支持 MCP?
  • 理论上,如果自行实现客户端,所有模型都可以支持 MCP,但需要具备工具调用、JSON 构建等基本能力。经过测试,OpenAI 系的模型肯定可以支持。
  • 我们要实现哪个部分?
  • 开发 MCP Client,使我们的程序能接入大型模型和 MCP Server。
  • 通过 MCP Server 提供本地数据或自开发工具。
  • 目标用户是谁?
  • 目前的配置和成熟度适合普通程序员,普通用户可能无法使用。
  • 应用开发者:通过实现客户端,将其嵌入到我们的应用中并使用现成的 Server。
  • 服务提供者:通过实现 Server,为客户提供服务并支持更大的功能集成。

相关文章:

  • 邦芒秘籍:面试时自我介绍主要包含四个方面
  • PyCharm 2023升级2024 版本
  • 线下CPG零售的核心:POG与销量的循环优化
  • 回归问题常用模型以及优缺点和使用场景
  • TP5兼容达梦国产数据库
  • JAVA EE_网络原理_UDP与TCP
  • DeepSearch复现篇:QwQ-32B ToolCall功能初探,以Agentic RAG为例
  • SAP /SDF/SMON配置错误会导致HANA OOM以及Disk Full的情况
  • 【TS入门笔记3---接口(interface)、 函数与泛型 、类与面向对象 】
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: 跨平台开发同样支持retain()引用计数器处理.
  • 【Spark入门】Spark RDD基础:转换与动作操作深度解析
  • 爬虫学习笔记(三)--Http协议
  • 厚铜PCB如何兼顾质量与成本?供应商设计规范执行的黄金平衡点
  • 【行业特化篇2】金融行业简历特化指南:合规性要求与风险控制能力的艺术化呈现
  • 软考-软件设计师中级备考 6、数据结构 图
  • 鸿蒙NEXT开发组件截图和窗口截图工具类SnapshotUtil(ArkTs)
  • 榕壹云信用租赁系统:基于ThinkPHP+MySQL+UniApp的全链路免押租赁解决方案
  • 声纹监测技术在新能源汽车的应用场景解析
  • FPGA-数字时钟
  • 深入浅出限流算法(一):简单但有“坑”的固定窗口计数器
  • 我国成功发射卫星互联网低轨卫星
  • 君亭酒店:2024年营业收入约6.76亿元, “酒店行业传统增长模式面临巨大挑战”
  • 光明网评论员:手机“二次放号”,需要重新确认“你是你”
  • 国家发改委答澎湃:将建立和实施育儿补贴制度,深入实施提振消费专项行动
  • 王一博赛车故障退赛冲上热搜,工作室回应:下次再战
  • 宜家上海徐汇商场明天恢复营业,改造后有啥新变化?