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

图解MCP:Model Context Protocol

🧠 向所有学习者致敬!

“学习不是装满一桶水,而是点燃一把火。” —— 叶芝


我的博客主页: https://lizheng.blog.csdn.net

🌐 欢迎点击加入AI人工智能社区!

🚀 让我们一起努力,共创AI未来! 🚀


直白点说,MCP 就像是 AI 应用的 USB-C 接口。

就跟 USB-C 能以标准化的方式把各种设备和配件连接起来一样,MCP 也把 AI 应用连接到不同数据源和工具的方式给标准化了。

咱们再深入一点,从技术角度瞅瞅。

说到底,MCP 采用的是客户端 - 服务器架构,一个宿主应用可以连接到多个服务器。

它有三个关键组成部分:

  • 宿主
  • 客户端
  • 服务器

在深入之前,先大致瞅瞅它们的概览👇

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

MCP 客户端 在宿主内部运行,用来和 MCP 服务器进行通信。

最后,MCP 服务器 暴露特定的能力,并提供对数据的访问,比如:

  • 工具:让 LLM(大型语言模型)能够通过你的服务器执行操作。
  • 资源:将服务器上的数据和内容暴露给 LLM。
  • 提示模板:创建可复用的提示模板和工作流。

搞清楚客户端和服务器之间的通信,对于构建自己的 MCP 客户端 - 服务器来说至关重要。

那咱们就瞅瞅它们是怎么通信的。

在一步步拆解之前,先看看下面这张图…

首先,是能力交换:

  • 客户端发送一个初始请求,去了解服务器的能力。
  • 然后服务器回复它的能力详情。
  • 比如说,一个天气 API 服务器被调用时,就可以回复可用的“工具”、“提示模板”以及任何其他资源,供客户端使用。

完成这个交换后,客户端就会确认连接成功,之后就可以继续进一步的消息交换了。

这玩意儿厉害的地方就在于:

在传统的 API 设置里:

  • 假如你的 API 最初需要两个参数(比如天气服务的 locationdate),用户就得按照这些精确的参数来集成他们的应用。

  • 后来,要是你决定再加一个必填的参数(比如温度单位的 unit,是摄氏度还是华氏度),API 的契约就变了。

  • 这就意味着,所有使用你 API 的用户都得更新他们的代码,把新参数加进去。要是他们不更新,请求可能就会失败,报错,或者返回不完整的结果。

MCP 的设计是这样解决这个问题的:

  • MCP 引入了一种动态且灵活的方法,和传统的 API 形成鲜明对比。
  • 比如说,当一个客户端(比如像 Claude Desktop 这样的 AI 应用)连接到一个 MCP 服务器(比如你的天气服务)时,它会发送一个初始请求,去了解服务器的能力。
  • 服务器会回复它可用的工具、资源、提示和参数的详情。比如,要是你的天气 API 最初支持 locationdate,服务器就会把这些作为它的能力的一部分进行沟通。

  • 要是后来你加了一个 unit 参数,MCP 服务器可以在下一次交换时动态更新它的能力描述。客户端不需要硬编码或者预先定义参数——它只需要查询服务器当前的能力,然后相应地调整就行。

  • 这样一来,客户端就可以在运行时调整自己的行为,使用更新后的能力(比如在请求中加上 unit),而不需要重写或者重新部署代码。

希望这能帮你搞清楚 MCP 是干啥的。

本专栏将继续探索创建自定义的 MCP 服务器,并且动手搞一些演示,记得关注哦!

http://www.xdnf.cn/news/595.html

相关文章:

  • 从零开始用Pytorch实现LLaMA 4的混合专家(MoE)模型
  • 【Java】接口interface学习
  • 国际数据加密算法(IDEA)详解
  • CentOS 10 /root 目录重新挂载到新分区槽
  • 【数据结构入门训练DAY-18】信息学奥赛一本通T1331-后缀表达式的值
  • URLDNS链构造
  • Android Studio 中 Drawable 详细全解
  • Android Drawable 目录下的 XML 图形文件详解
  • 在 Linux 上部署 .NET Core 应用并配置为开机自动启动
  • [操作系统] 信号
  • GO语言入门:常用数学函数2
  • rollup使用讲解
  • JUC复习及面试题学习
  • SpringBoot 统一功能处理
  • 智谱开源新一代GLM模型,全面布局AI智能体生态
  • 墙面刷完乳胶漆之后就有裂缝,有根治的办法吗?
  • Java面向对象进阶
  • BEVDet: High-Performance Multi-Camera 3D Object Detection in Bird-Eye-View
  • 年化26.9%的稳健策略|polars重构因子计算引擎(python策略下载)
  • AI——神经网络以及TensorFlow使用
  • 《汽车理论》第四章作业MATLAB部分
  • 传统深度学习架构和Transformer结构的区别
  • 从0开始搭建一套工具函数库,发布npm,支持commonjs模块es模块和script引入使用
  • uniapp-商城-29-vuex 关于系统状态的管理
  • 嵌入式单片机开发问题:Undefined symbol _HAL_RCC_GPIOB_CLK_ENABLE
  • Matlab 基于模型参考自适应法和SVPWM的异步电机控制
  • Kubernetes(k8s)学习笔记(二)--k8s 集群安装
  • 机器学习(神经网络基础篇)——个人理解篇6(概念+代码)
  • 【实战中提升自己】内网安全部署之dot1x部署 本地与集成AD域的主流方式(附带MAC认证)
  • UE5的BumpOffset节点