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

什么是 MCP(模型上下文协议)

大家读完觉得有意义及帮助记得及时关注!!!

1 什么是 MCP?

1.1 命名

MCP 是 Model Context Protocol 的缩写。从名称中,我们可以看到

  • 首先,它是一个通信协议
  • 然后,它用于模型 (LLM),
  • 最后,它用于交换/传递模型上下文

1.2 为什么选择 MCP?

在 LLM 上构建代理或复杂工作流时,通常需要与外部数据或工具(例如外部 MySQL、Google Maps)集成。 MCP 提供了一种标准化的方法来执行此作。

让我们用一个类比来更好地解释它。

1.3 类比

传统上,个人电脑有多种硬件连接器,如 USB、HDMI、DP、RJ45 等。

各种硬件连接器。图片来源

计算机设计人员必须决定他们想要在期间支持哪些设备 设计阶段,然后在主板上预装相应的硬件接口。 当新型硬件连接器出现时,无法支持它们 无需更换主板,也无需引入新型硬件 适配器。

1.3.1 电脑 USB type-c

随着 USB type-c 规范的推出,情况发生了变化。USB Type-c 端口 正在成为大多数设备的标准连接器。如下图所示,

无花果。使用适配器连接到计算机的 USB type-c 集线器的外围设备。

当电脑需要连接很多外设时,首先要插上一个 USB type-c 集线器(实际的集线器一般支持多个接口,而不仅仅是 type-c) 以及这些外围设备

  • 如果他们已经是 type-c,他们可以直接连接到集线器;
  • 否则,例如它们是一些旧设备或专业设备 特定字段,可以先通过适配器转换为 Type-C,然后再连接到 Hub。

所以,只要设备支持(直接或通过转换器)type-c 接口, 它可以很容易地集成到计算机中。

1.3.2 AI 应用的 MCP

MCP 就像 AI 应用的 USB-C 端口。就像 USB-C 一样 提供一种标准化的方式将您的设备连接到各种外围设备,并且 配件,MCP 提供了一种标准化的方式将 AI 模型连接到不同的 数据源和工具。

一个类比如下所示,

无花果。使用 MCP 将外部服务集成到 AI 应用程序。注意 MCP 还支持连接到本地服务(与 AI 共存 application) 的 Package。

从左到右,

个人电脑外壳AI App 案例笔记
外围设备,例如显示器外部数据或服务,例如 Google 翻译集成到 AI 应用程序中。他们可以使用各种协议,例如 HTTP、WebSocket、gRPC、Redis 协议等。
连接器适配器Protocol adaptation layer (server-side)每个外部服务一个 MCP 服务器,为 MCP 客户端提供标准化接口 (JSON-RPC)。
USB Type-c 集线器Protocol adaptation layer (client-side)每个外部服务一个 MCP 客户端,使用标准协议连接相应的 MCP 服务器。
个人电脑AI 应用程序主要部分是将外部服务与 MCP 客户端集成。
LLM 层AI 应用程序依赖 LLM 服务通过 MCP 对外部服务进行函数调用

1.4 总结

MCP 是一种开放协议,它标准化了应用程序如何为 LLM 提供上下文。将 MCP 想象成 AI 应用程序的 USB-C 端口。就像 USB-C 一样 提供一种标准化的方式将您的设备连接到各种外围设备,并且 配件,MCP 提供了一种标准化的方式将 AI 模型连接到不同的 数据源和工具。

2 架构和规格

MCP 遵循经典的客户端-服务器架构

2.1 基本协议

  • JSON-RPC 消息格式
  • 有状态连接
  • 服务器和客户端功能协商

2.2 服务器端

MCP 基元

MCP 协议定义了服务器可以实现的三个核心原语:

原始控制描述示例使用
提示用户控制由用户选择调用的交互式模板斜杠命令、菜单选项
资源应用程序控制由客户端应用程序管理的上下文数据文件内容、API 响应
工具模型控制向 LLM 公开以执行作的函数API 调用、数据更新

服务器功能

MCP 服务器在初始化期间声明功能:

能力功能标志描述
promptslistChanged提示模板管理
resourcessubscribe listChanged资源公开和更新
toolslistChanged工具发现和执行
logging-服务器日志记录配置
completion-参数补全建议

2.3 客户端

客户端可以向服务器提供以下功能:

  • 采样:服务器发起的代理行为和递归 LLM 交互

MCP 客户端通过 API 获取服务器的功能,例如 .list_tools

注意,LLM 只负责选择函数,实际的函数调用是在 AI App 内部触发的。

2.4 编程示例

  • https://modelcontextprotocol.io/quickstart/client
  • https://github.com/modelcontextprotocol/python-sdk

3 函数调用与 MCP

从概念上讲,MCP 和 Function call 都是供 AI 应用程序轻松调用 外部服务,但它们的工作方式不同。我们来看看 工作流 —— 访问 Google Translate API —— 并查看 这两种方法之间的区别。

3.1 函数调用

无花果。用于访问 Google Translate 的函数调用工作流。

步骤:

  1. AI app:构建提示音,在提示中包含谷歌翻译 API 的功能信息;
  2. AI 应用程序:使用提示调用 LLM;
  3. LLM: 模型响应,包含所选函数;
  4. AI 应用程序:使用 (HTTP/HTTPS) 调用 Google Translate API;

3.2 MCP

MCP 的相同场景:

无花果。用于访问 Google Translate 的 MCP 工作流程。

步骤:

  1. AI 应用:使用谷歌翻译服务的 MCP 服务器地址初始化 MCP 客户端;
  2. MCP 客户端:通过 MCP 服务器内置的 list_tools API 获取谷歌翻译 MCP 服务器的能力;
  3. AI app:构建提示音,在提示符中包含谷歌翻译 API 的所有功能信息(从第 2 步获取);
  4. AI 应用程序:使用提示调用 LLM;
  5. LLM: 模型响应,包含所选函数;
  6. AI 应用程序:使用 MCP 调用适当的 Google Translate API

3.3 比较

函数调用MCP
AI 应用程序(配置)的先验知识确切的函数名称和参数MCP 服务器地址
AI 应用程序可以使用的函数静态,仅预配置功能动态,所有功能均通过 MCP 服务器通过接口公开list_tools
灵活性
Token 消费高。在构建 Prompt 时,Prompt 中可能包含太多函数的描述

相关文章:

  • 10乱码问题的解释(1)
  • GLPI 在企业 IT 资产全生命周期管理中的价值
  • thinkcmf搭建
  • Thinkpad t14的startup 没有 UEFI/Legacy Boot 选项,如何设为U盘启动
  • 【Easylive】MySQL中LEFT JOIN与INNER JOIN的使用场景对比
  • c# 虚函数、接口、抽象区别和应用场景
  • C语言复习--assert断言
  • 一起学习大语言模型-常用命令及模型介绍
  • 输电线路航空标志球:低空飞行的安全路标 / 恒峰智慧科技
  • WiFi(无线局域网)技术的多种工作模式
  • Nest.js学习路径
  • Linux SDHCI 驱动解析:硬件原理与核心机制全解
  • 实现一个分布式锁需要考虑哪些问题
  • Windows 平台下AnythingLLM本地开发环境运行踩坑记录
  • Git相关笔记1 - 本地文件上传远程仓库
  • rdp,ssh,云主机,虚拟主机,宝塔,远程桌面是什么
  • 2025 年浙江特种设备考试攻略:细节决定成败​
  • Java 大视界 -- 基于 Java 的大数据实时流处理在工业物联网设备状态监测中的应用与挑战(167)
  • 【注解和interface的那点事】
  • 选择省市区
  • 美国考虑让移民上真人秀竞逐公民权,制片人称非现实版《饥饿游戏》
  • 尹锡悦宣布退出国民力量党
  • 广西壮族自治区党委常委会:坚决拥护党中央对蓝天立进行审查调查的决定
  • 温州通报“一母亲殴打女儿致其死亡”:嫌犯已被刑拘
  • 透视社会组织创新实践中的花开岭现象:与乡村发展的融合共进
  • “80后”北京市东城区副区长王智勇获公示拟任区委常委