Gradio全解13——MCP协议详解(1)——MCP协议介绍与架构组件

发布于:2025-06-29 ⋅ 阅读:(21) ⋅ 点赞:(0)

前言

本系列文章主要介绍WEB界面工具Gradio。Gradio是Hugging Face发布的简易WebUI开发框架,它基于FastAPI和svelte,可以使用机器学习模型、python函数或API开发多功能界面,并可部署人工智能模型,是当前非常热门且易于展示机器学习大语言模型LLM及扩散模型DM的WebUI框架。
本系列文章分为四部分:Gradio介绍、Gradio基础功能实战、Gradio高级功能实战和Gradio与其它应用结合。第一部分Gradio介绍,方便读者对Gradio整体把握,包括三章内容:第一章先介绍Gradio的概念,包括详细技术架构、历史、应用场景、与其他框架Gradio/NiceGui/StreamLit/Dash/PyWebIO的区别,然后详细讲述Gradio的安装与运行,安装包括Linux/Win/Mac三类系统安装,运行包括普通方式和热重载方式;第二章介绍Gradio的4种部署方式,包括本地部署launch()、huggingface托管、FastAPI挂载和Gradio-Lite浏览器集成;第三章介绍Gradio的三种客户端(Client),包括python客户端、javascript客户端和curl客户端。第二部分实战Gradio基础功能,进入本系列文章的核心,包括四章内容:第四章讲解Gradio库的模块架构和环境变量,第五章讲解Gradio高级抽象界面类Interface,第六章讲解Gradio底层区块类Blocks,第七章讲解补充特性Additional Features。第三部分讲解并实战Gradio的高级功能,包括四章内容:第八章讲解融合大模型的多模态聊天机器人组件Chatbot,第九章讲解Gradio Tools工具库的使用及构建方法,第十章讲述讲述数据科学与绘图Data Science And Plots;第十一章讲述流式传输Streaming的多模态应用。第四部分讲解Gradio与其它应用结合,包括三章内容:第十二章讲述由Gradio App创建Discord Bot/Slack Bot/Website Widget;第十三章讲述MCP协议详解;第十四章使用Gradio构建MCP的客户端与服务器。
本系列文章讲解细致,涵盖Gradio及相关框架的大部分组件和功能,代码均可运行并附有大量运行截图,方便读者理解并应用到开发中,Gradio一定会成为每个技术人员实现各种奇思妙想的最称手工具。

本系列文章目录如下:

  1. 《Gradio全解1——Gradio简介:大模型WebUI框架(上)》
  2. 《Gradio全解1——Gradio简介:大模型WebUI框架(下)》
  3. 《Gradio全解2——Gradio的四种部署方式(上)》
  4. 《Gradio全解2——Gradio的四种部署方式(下)》
  5. 《Gradio全解3——Gradio三种客户端:python、javascript与curl(一)——python》
  6. 《Gradio全解3——Gradio三种客户端:python、javascript与curl(二)——javascript》
  7. 《Gradio全解3——Gradio三种客户端:python、javascript与curl(三)——curl》
  8. 《Gradio全解4——Gradio库的模块架构和环境变量》
  9. 《Gradio全解5——Interface:高级抽象界面类(上)》
  10. 《Gradio全解5——Interface:高级抽象界面类(下)》
  11. 《Gradio全解6——Blocks:底层区块类(上)》
  12. 《Gradio全解6——Blocks:底层区块类(下)》
  13. 《Gradio全解7——Additional Features:补充特性(上)》
  14. 《Gradio全解7——Additional Features:补充特性(下)》
  15. 《Gradio全解8——Chatbot:融合大模型的多模态聊天机器人》
  16. 《Gradio全解9——Gradio Tools:工具库》
  17. 《Gradio全解10——Data Science And Plots:数据科学与绘图》
  18. 《Gradio全解11——Streaming:流式传输的多模态应用》
  19. 《Gradio全解12——由Gradio App创建Discord Bot/Slack Bot/Website Widget》
  20. 《Gradio全解13——MCP协议详解》
  21. 《Gradio全解14——使用Gradio构建MCP的客户端与服务器》

本章目录如下:

  1. 《Gradio全解13——MCP详解(1)——MCP协议介绍与架构组件》
  2. 《Gradio全解13——MCP详解(2)——MCP能力协商与通信机制》
  3. 《Gradio全解13——MCP详解(3)——TypeScript介绍》
  4. 《Gradio全解13——MCP详解(4)——TypeScript包命令:npm与npx》
  5. 《Gradio全解13——MCP详解(5)——Python包命令:uv与uvx实战》
  6. 《Gradio全解13——MCP详解(6)——MCP服务器》
  7. 《Gradio全解13——MCP详解(7)——MCP客户端》
  8. 《Gradio全解13——MCP详解(8)——MCP六大​功能特性》
  9. 《Gradio全解13——MCP详解(9)——MCP Inspector》

第13章 MCP详解

MCP是当前人工智能领域最热门技术之一,是实现大模型快速应用的捷径。本章将基于MCP最新方案修订版:2025-06-18,详细讲解MCP协议细节,并实战如何通过Gradio构建MCP客户端与服务器。

13.1 MCP协议介绍与架构组件

本节将详细介绍MCP协议,包括概念及优势、架构、核心组件及功能协商机制,通过本节,读者可以迅速理解MCP的用途和构成要素。

13.1.1 ​MCP入门

下面通俗的解释MCP概念及其优势,理解其重要性,并知晓哪些厂商和个体在开发并维护MCP服务器。

1. MCP概念及其优势

MCP(Model Context Protocol,模型上下文协议)是一种用于标准化应用程序向大语言模型(LLM)提供上下文的方式。它是开源协议,可以使AI应用和代理(Claude Desktop、LibreChat或Goose)连接并操作数据源(如本地文件、数据库或内容仓库)与工具(如GitHub、Google Maps或Puppeteer)。简单地说,MCP在AI应用与各种数据源或工具间通过标准协议构建桥梁,如图13-1:
在这里插入图片描述

图13-1

MCP可以被视为AI应用的USB-C接口——正如USB-C为机器连接外设提供了标准化方案,MCP则为AI模型连接数据源和工具建立了统一标准。在USB-C出现前,不同设备连接需要不同线缆;类似地,在MCP问世前,开发者必须为其AI应用需要的每个数据源或工具定制连接方案——这一耗时过程往往导致功能受限。如今借助MCP,开发者能轻松为AI应用添加各种连接资源,从而让应用从诞生之初就具备更强大的能力。

MCP帮助开发者在LLM之上构建智能体和复杂工作流,当LLM需要集成数据和工具时,MCP的优势有:

  • 预置不断增长的集成库以供LLM直接调用;
  • 可以在不同LLM供应商之间灵活切换;
  • 在设备中实现最佳的数据安全。
2. MCP为何至关重要?

对AI应用用户而言,MCP意味着AI应用能够访问日常使用的信息和工具,从而大幅提升其实用性,使AI不再受限于既有知识,而是能理解特定文档、数据及工作上下文。例如,通过MCP服务器,应用程序可访问用户Google Drive中的个人文档,或从GitHub获取代码库相关数据,提供更个性化且上下文相关的支持。

设想向AI助手发出指令:“总结上周团队会议记录,并安排与所有人的后续会议。”借助MCP驱动的数据源连接,该AI助手能够执行以下操作:

  • 通过MCP服务器连接用户Google Drive读取会议记录。
  • 基于记录内容识别需安排跟进的人员。
  • 通过另一MCP服务器连接日历应用自动安排会议。

对开发者而言,当构建需接入多数据源的AI应用时,MCP能显著降低开发时间和复杂度。因而借助MCP,开发者可专注于打造卓越的AI体验,而无需重复创建特定连接器。

例如传统模式下,连接应用与数据源时,需为每个数据源和每个应用单独构建定制化连接方案,这导致大量重复劳动——任何希望将其AI应用接入Google Drive或Slack的开发者,都必须自行构建专属连接。MCP通过以下方式实现简化:使开发者为数据源构建的MCP服务器被不同应用重复使用。例如利用开源的Google Drive MCP服务器,不同应用皆可访问Google Drive数据,而无需额外单独构建特定连接。

此类MCP服务器形成的开源生态,意味着开发者能复用现有成果而非从零开始,从而更轻松地构建强大的AI应用——这些应用能与用户现有工具及数据源实现无缝集成。

3. MCP服务器的创建与维护主体

MCP服务器由以下角色开发维护:

  • Anthropic开发团队:为常用工具及数据源构建服务器。
  • 开源贡献者:为其所用工具创建服务器。
  • 企业开发团队:为企业内部系统构建专属服务器。
  • 软件供应商:使其应用具备即开即用的AI-ready能力而开发的适配服务器。

当为某数据源创建开源MCP服务器后,任何兼容MCP的AI应用皆可使用该连接,从而形成持续扩展的连接生态圈。MCP服务器的更多详情请参阅13.5节。

13.1.2 MCP协议与架构

本节介绍MCP协议组成、架构及核心组件功能。

1. MCP协议组成

模型上下文协议由以下协同工作的关键部分组成:

  • 基础协议:核心JSON-RPC消息类型。
  • 生命周期管理:连接初始化、能力协商和会话控制。
  • 授权:基于HTTP传输的认证与授权框架。
  • 服务端功能:服务器暴露的资源、提示词和工具。
  • 客户端功能:客户端提供的采样、根目录列表和需求获取。
  • 工具组件(Utilities):日志记录和参数补全等横切关注点。

所有实现必须支持基础协议和生命周期管理组件,其他组件可根据应用需求选择实现。

这些协议层既实现了清晰的关注点分离,又能支持客户端与服务端之间的丰富交互,而模块化设计使实现可以精确支持所需功能。

2. client-host-server架构

MCP采用灵活可扩展的客户端-宿主-服务器( client-host-server)架构,该架构使用户拥有跨应用集成AI能力的同时,维持清晰的安全边界并隔离关注点。它基于JSON-RPC构建,提供了一个有状态的会话协议,并专注于客户端与服务器间的上下文交换与采样协作。

MCP的单台宿主可运行多个客户端实例,客户端与服务端一一对应连接,其通用架构如图13-2:
在这里插入图片描述

图13-2

MCP架构组成说明如下:

  • MCP宿主:如Claude、IDE、Tools等需要通过MCP访问数据或工具的应用程序;
  • MCP客户端:与宿主应用绑定并由其运行,同时与服务器保持一对一连接;
  • MCP服务器:轻量级程序,连接数据源与工具(如Google Drive或Slack),通过标准化MCP协议提供特定功能;
  • 本地数据源:MCP服务器可安全访问的本地计算机文件、数据库和功能函数等服务;
  • 远程服务:MCP服务器可通过Web API等连接的外部资源。

当MCP宿主被授予权限后,就能连接相应的MCP服务器,随后可通过这些连接读取本地或远程服务信息并执行操作。MCP客户端主要负责创建界面、建立连接、处理宿主与服务器之间的信息交互等。该模块化系统意味着新增功能时无需修改AI应用本体,如同为计算机添加新外设而无需升级整机。

3. 架构核心组成功能

在MCP架构中,有三类核心组成部分:宿主、客户端和服务端,下面详细说明其功能:

  1. 宿主(Host)。宿主进程充当容器与协调员角色,具体功能如下:
    • 创建并管理多个客户端实例。
    • 初始化客户端连接,控制客户端连接权限及生命周期。
    • 强制执行安全策略与准入请求。
    • 处理用户授权决策。
    • 协调AI/LLM的集成与采样。
    • 管理跨客户端的上下文聚合。
  2. 客户端(Client)。每个客户端由宿主创建,它维持与服务器独立连接,具体功能如下:
    • 为每个服务器建立单条有状态会话。
    • 处理协议协商与功能交换。
    • 双向路由协议消息。
    • 管理订阅及通知。
    • 维护服务器间安全边界。
    • 宿主应用创建并管理多个客户端,每个客户端与特定服务器保持1:1关系。
  3. 服务器(Server)。服务器提供专用上下文及功能:
    • 通过MCP原语暴露资源、工具及提示。
    • 专注某职能独立运行。
    • 通过客户端接口请求采样。
    • 必须遵守安全约束。
    • 可作为本地进程或远程服务运行。

参考文献

  1. Python开发人员,请不要低估TypeScript!
  2. TypeScript“杀疯了”!60% 到 70%YC 创企用它构建 AI Agent,超越 Python 有戏了?
  3. NPM vs. NPX,傻傻分不清楚
  4. uv
  5. Python 包管理工具核心指令uvx解析
  6. MCP Introduction