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

【翻译、转载】【译文】图解模型上下文协议(MCP)

原文地址:

https://blog.dailydoseofds.com/p/visual-guide-to-model-context-protocol


图解模型上下文协议(MCP)

…以及理解 API 与 MCP 的对比。
作者:Avi Chawla
2025年3月15日

模型上下文协议 (MCP)

最近,关于模型上下文协议(MCP)的讨论非常热烈。您一定听说过它。

今天,让我们来了解一下它是什么。

直观地说,MCP 就像是您 AI 应用的 USB-C 端口

正如 USB-C 提供了一种将设备连接到各种配件的标准化方式,MCP 也标准化了您的 AI 应用连接到不同数据源和工具的方式。

在这里插入图片描述

让我们更深入地从技术层面探讨一下。

其核心是,MCP 遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器。

它有三个关键组件:

  • 主机 (Host)
  • 客户端 (Client)
  • 服务器 (Server)

在我们深入探讨之前,先看一个概览👇
在这里插入图片描述

主机代表任何 AI 应用(如 Claude 桌面版、Cursor),它提供 AI 交互的环境,访问工具和数据,并运行 MCP 客户端

MCP 客户端在主机内运行,以实现与 MCP 服务器的通信。
在这里插入图片描述

最后,MCP 服务器公开特定的能力并提供对数据的访问,例如:

  • 工具 (Tools):使 LLM 能通过您的服务器执行操作。
  • 资源 (Resources):向 LLM 公开来自您服务器的数据和内容。
  • 提示 (Prompts):创建可重用的提示模板和工作流。

在这里插入图片描述

理解客户端-服务器通信对于构建您自己的 MCP 客户端-服务器至关重要。

那么,让我们来了解客户端和服务器是如何通信的。

在我们逐步分解之前,请看一个图示…

在这里插入图片描述

首先,我们有能力交换 (capability exchange),其中:

  1. 客户端发送初始请求以了解服务器的能力。
  2. 服务器随后响应其能力详情。

例如,一个天气 API 服务器,在被调用时,可以回复其可用的“工具”、“提示模板”以及任何其他供客户端使用的资源。

一旦此交换完成,客户端确认连接成功,后续的消息交换便继续进行。


这就是这种设置如此强大的原因之一:

在传统的 API 设置中:

  1. 如果您的 API 最初需要两个参数(例如,天气服务的地点日期),用户会集成他们的应用程序以发送包含这些确切参数的请求。
    在这里插入图片描述

  2. 后来,如果您决定添加第三个必需参数(例如,温度单位的单位,如摄氏度或华氏度),API 的契约 (contract) 就改变了。
    在这里插入图片描述

  3. 这意味着所有使用您 API 的用户都必须更新他们的代码以包含新参数。如果他们不更新,他们的请求可能会失败、返回错误或提供不完整的结果。
    在这里插入图片描述

MCP 的设计通过以下方式解决了这个问题:

MCP 引入了一种动态且灵活的方法,与传统 API 形成鲜明对比。

  1. 例如,当客户端(如 AI 应用 Claude 桌面版)连接到 MCP 服务器(如您的天气服务)时,它会发送初始请求以了解服务器的能力

  2. 服务器会响应其可用工具、资源、提示和参数的详细信息。例如,如果您的天气 API 最初支持地点和日期,服务器会在其能力中传达这些。
    在这里插入图片描述

  3. 如果您之后添加了一个单位参数,MCP 服务器可以在下一次交换期间动态更新其能力描述。客户端无需硬编码或预定义参数——它只需查询服务器当前的能力并相应地进行调整。
    在这里插入图片描述

  4. 这样,客户端就可以动态调整其行为,使用更新后的能力(例如,在其请求中包含单位),而无需重写或重新部署代码


我们希望这阐明了 MCP 的作用。
在这里插入图片描述
参考来源:
https://blog.dailydoseofds.com/p/visual-guide-to-model-context-protocol

http://www.dtcms.com/a/171745.html

相关文章:

  • Linux线程深度解析:从基础到实践
  • 在两个bean之间进行数据传递的解决方案
  • 【五一培训】Day 4
  • Nginx核心功能 02
  • 《Vue3学习手记8》
  • P1603 斯诺登密码详解
  • C与指针——结构与联合
  • NPP库中libnppist模块介绍
  • Kubernetes 安装 kubectl
  • profile软件开发中的性能剖析与内存分析
  • 牛客周赛91 D题(数组4.0) 题解
  • RPG8.增加武器
  • 什么是右值引用和移动语义?大白话解释
  • Vue 虚拟DOM和DIff算法
  • 学习Linux的第一天
  • 初试C++报错并解决记录
  • 栈Stack
  • Javascript学习笔记1——数据类型
  • 第20节:深度学习基础-反向传播算法详解
  • Linux的时间同步服务器
  • Python 中的 collections 库:高效数据结构的利器
  • node核心学习
  • dpm_sysfs_add
  • 构建良好的 AI 文化:解锁未来的密钥
  • C++日志系统实现(二)
  • 李沐《动手学深度学习》 | Softmax回归 - 分类问题
  • 牛客周赛90 C题- Tk的构造数组 题解
  • 2023年第十四届蓝桥杯省赛B组Java题解【 简洁易懂】
  • Python变量作用域陷阱:为什么函数内赋值会引发_局部变量未定义
  • Day 4:牛客周赛Round 91