MCP 架构全解析:Host、Client 与 Server 的协同机制

目录

🏗️ MCP 架构全解析:Host、Client 与 Server 的协同机制

📌 引言

🧩 核心架构组件

1. Host(主机)

2. Client(客户端)

3. Server(服务器)

🔧 三大核心能力

1. Tools(工具)

2. Resources(资源)

3. Prompts(提示)

🔄 通信机制

🧠 工作流程示例

🚀 应用场景



🏗️ MCP 架构全解析:Host、Client 与 Server 的协同机制

📌 引言

在人工智能应用日益复杂的今天,如何高效地将大型语言模型(LLM)与外部数据源和工具集成,成为了开发者面临的重要挑战。模型上下文协议(MCP)应运而生,提供了一种标准化的方式,简化了这一集成过程。

🧩 核心架构组件

MCP 采用了典型的客户端-服务器架构,主要包括以下三个核心组件: (Model Context Protocol)

1. Host(主机)

Host 是运行 MCP 客户端的应用程序,通常是用户直接交互的界面,如 Claude Desktop、集成开发环境(IDE)或其他 AI 工具。它负责管理 MCP 客户端的生命周期,并协调与服务器的通信。

2. Client(客户端)

Client 嵌入在 Host 中,负责与 MCP Server 建立连接并进行通信。每个 Client 与一个 Server 建立一对一的连接,处理能力协商,并在自身和服务器之间协调消息传递。 (MCP 核心概念 -- Resources(上),官方原文分析 - 知乎, 模型上下文协议MCP - AiFly - 博客园)

3. Server(服务器)

Server 是外部程序,通过标准 API 向 AI 模型暴露工具、资源和提示。它连接内部或外部资源,按照 MCP 协议对外提供服务。

🔧 三大核心能力

MCP Server 可以提供以下三种类型的标准能力:

1. Tools(工具)

Tools 是模型可调用的函数或服务,用于执行特定任务。例如,模型可以调用一个天气查询工具,获取指定城市的天气信息。

2. Resources(资源)

Resources 是供模型读取的数据源,如文件数据或 API 响应内容。它们为模型提供了丰富的上下文信息,增强了模型的理解能力。

3. Prompts(提示)

Prompts 是预定义的模板,用于指导模型生成特定内容。它们可以接受动态参数,包含资源上下文,链式多个交互,引导特定工作流程,并作为用户界面元素(如斜杠命令)呈现。 (Prompts - Model Context Protocol)

🔄 通信机制

MCP 支持两种通信机制:

  • 标准输入输出(stdio):适用于本地通信,客户端通过启动 Server 子进程,通过标准输入输出进行消息交换。

  • HTTP + SSE(Server-Sent Events):适用于远程通信,客户端通过 HTTP POST 发送请求,Server 通过 SSE 推送响应。

消息传输采用 JSON-RPC 2.0 格式,支持请求(Request)、结果(Result)、错误(Error)和通知(Notification)等消息类型。

🧠 工作流程示例

以下是 MCP 的典型工作流程:

  1. 初始化:Host 应用启动时,创建 MCP Client,并与 Server 进行能力协商。 (Model Context Protocol (MCP) an overview - Philschmid)

  2. 能力发现:Client 请求 Server 提供的 Tools、Resources 和 Prompts,Server 返回相应的列表和描述。 (Model Context Protocol (MCP) an overview - Philschmid)

  3. 上下文提供:Host 应用将资源和提示提供给用户,或将工具解析为 LLM 兼容的格式,如 JSON 函数调用。 (Model Context Protocol (MCP) an overview - Philschmid)

  4. 调用执行:如果 LLM 需要使用某个工具(例如,根据用户请求“获取 X 仓库的未解决问题”),Host 指示 Client 向相应的 Server 发送调用请求。 (Model Context Protocol (MCP) an overview - Philschmid)

  5. 结果返回:Server 执行请求的操作(例如,调用 GitHub API 获取问题列表),并将结果返回给 Client。 (Model Context Protocol (MCP) an overview - Philschmid)

  6. 响应生成:Client 将结果传递给 Host,Host 将其纳入 LLM 的上下文中,生成最终的响应。 (Model Context Protocol (MCP) an overview - Philschmid)

🚀 应用场景

MCP 的标准化设计使其在多个领域具有广泛的应用前景,包括:

  • 企业数据集成:通过 MCP,AI 模型可以访问企业内部的数据库和工具,实现智能化的数据分析和业务决策支持。

  • 智能助手开发:构建功能丰富的 AI 助手,能够根据用户的需求调用不同的工具和资源,提供个性化的服务。

  • 跨平台应用:MCP 的标准化设计使得 AI 应用可以在不同的平台和环境中部署,提升了系统的灵活性和可移植性。


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/78893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

记录一次无界微前端的简单使用

记录一次无界微前端使用 无界微前端主应用子应用nginx配置 无界微前端 https://wujie-micro.github.io/doc/ 因为使用的是vue项目主应用和次应用都是 所以用的封装的。 https://wujie-micro.github.io/doc/pack/ 主应用 安装 选择对应的版本 # vue2 框架 npm i wujie-vue2…

LLM应用于自动驾驶方向相关论文整理(大模型在自动驾驶方向的相关研究)

1、《HILM-D: Towards High-Resolution Understanding in Multimodal Large Language Models for Autonomous Driving》 2023年9月发表的大模型做自动驾驶的论文,来自香港科技大学和人华为诺亚实验室(代码开源)。 论文简介: 本文…

FTP-网络文件服务器

部署思路 单纯上传下载ftp系统集成间的共享 samba网络存储服务器 NFS 网络文件服务器:通过网络共享文件或文件夹,实现数据共享 NAS ( network append storage):共享的是文件夹 FTP:文件服务器samba:不同系统间的文件…

在 Ubuntu 22.04 x64 系统安装/卸载 1Panel 面板

一、 1Panel 是什么? 1Panel 是一款基于 Go 语言开发的现代化开源服务器管理面板(类似宝塔面板),专注于容器化(Docker)和云原生环境管理,提供可视化界面简化服务器运维操作。 1. 1Panel主要功…

Redis | Redis集群模式技术原理介绍

关注:CodingTechWork Redis 集群模式概述 Redis 集群(Cluster)模式是 Redis 官方提供的分布式解决方案,旨在解决单机 Redis 在数据量和性能上的限制。它通过数据分片、高可用性和自动故障转移等特性,提供了水平扩展和…

Servlet小结

视频链接:黑马servlet视频全套视频教程,快速入门servlet原理servlet实战 什么是Servlet? 菜鸟教程:Java Servlet servlet: server applet Servlet是一个运行在Web服务器(如Tomcat、Jetty)或应用…

数据库进阶之MySQL 程序

1.目标 1> 了解mysqlId服务端程序 2> 掌握mysql客户端程序的使用 3> 了解工具包中的其他程序 2. MySQL程序简介 本章介绍 MySQL 命令⾏程序以及在运⾏这些程序时指定选项的⼀般语法(如:mysql -uroot -p)。 对常⽤程序进⾏详细的讲解(实用工具的使用方法)&#xf…

VS2022 设置 Qt Project Settings方法

本文解决的问题:创建完成后,如需要用到Sql或者Socket等技术,需要设置Qt Project Settings; 1、打开VS2022编译器,创建QT项目工程 2、创建完成后,点击 解决方案 →右键属性 3、选择 Qt Project Settings →…

React:封装一个评论回复组件

分析 用户想要一个能够显示评论列表,并且允许用户进行回复的组件。可能还需要支持多级回复,也就是对回复进行再回复。然后,我要考虑组件的结构和功能。 首先,数据结构方面,评论应该包含id、内容、作者、时间&#xf…

wx读书某sign算法详解

未加固 版本&#xff1a;9.2.3 前置知识&#xff1a; (v41 & 0xFFFFFFFFFFFFFFFELL) 是一种高效的奇偶检查方法&#xff0c;用于判断数值 v41 是否为奇数。 std::sort<std::lessstd::string,std::string &,std::string>(a1, v6, s); 排序算法 # 完全等价的字…

Django的异步任务队列管理_Celery

1 基本原理 Celery 是一个异步任务队列&#xff0c;能够将耗时操作&#xff08;如发邮件、处理图片、网络爬虫等&#xff09;从 Django 主线程中分离出来&#xff0c;由后台的 worker 处理&#xff0c;避免阻塞请求。Celery 作为独立运行的后台进程&#xff08;Worker&#xf…

【计算机网络】Linux网络的几个常用命令

&#x1f4da; 博主的专栏 &#x1f427; Linux | &#x1f5a5;️ C | &#x1f4ca; 数据结构 | &#x1f4a1;C 算法 | &#x1f152; C 语言 | &#x1f310; 计算机网络 相关文章&#xff1a;计算机网络专栏 目录 ping&#xff08;检测网络连通性&#xff09;…

全开源、私有化部署!轻量级用户行为分析系统-ClkLog

ClkLog是一款支持私有化部署的全开源埋点数据采集与分析系统&#xff0c;兼容Web、App、小程序多端埋点&#xff0c;快速洞察用户访问路径、行为轨迹&#xff0c;并生成多维用户画像。助力中小团队搭建轻量灵活的用户行为分析平台。 为什么需要一款私有化的埋点分析系统&#x…

golang定时器的精度

以 go1.23.3 linux/amd64 为例。 定时器示例代码&#xff1a; package mainimport ("context""fmt""time" )var ctx context.Contextfunc main() {timeout : 600 * time.Secondctx, _ context.WithTimeout(context.Background(), timeout)dea…

svn 远程服务搜索功能

svn服务器没有远程搜索功能&#xff0c;靠人工检索耗时耗力&#xff0c;当服务器文件过多时&#xff0c;全部checkout到本地检索&#xff0c;耗时太久。 1. TortoiseSVN 安装注意事项 下载官网地址&#xff1a;https://tortoisesvn.en.softonic.com/download 安装时选中 co…

uniapp-商城-39-shop 购物车 选好了 进行订单确认4 配送方式2 地址页面

上面讲基本的样式和地址信息&#xff0c;但是如果没有地址就需要添加地址&#xff0c;如果有不同的地址就要选地址。 来看看处理方式&#xff0c; 1、回顾 在delivery-layout中 methods:{goAddress(){uni.navigateTo({url:"/pagesub/pageshop/address/addrlist"})…

Linux命令-iostat

iostat 命令介绍 iostat 是一个用于监控 Linux 系统输入/输出设备加载情况的工具。它可以显示 CPU 的使用情况以及设备和分区的输入/输出统计信息&#xff0c;对于诊断系统性能瓶颈&#xff08;如磁盘或网络活动缓慢&#xff09;特别有用。 语法&#xff1a; iostat [options…

vue2关于Node.js17及以上报digital envelope错误的解决办法

文章目录 简介错误原因解决方案设置环境变量修改package.json安装旧版本Node.js更新依赖项更改加密设置 简介 digital envelope routines::unsupported错误‌通常发生在Node.js版本升级到17或更高版本后&#xff0c;因为这些版本开始使用OpenSSL 3.0&#xff0c;它对算法和密钥…

LLM - Large Language Model

回顾2024&#xff1a;与LLM又相伴一年的经历与思考 - 知乎万字长文入门大语言模型&#xff08;LLM&#xff09; - 知乎“大模型本质就是两个文件&#xff01;”特斯拉前AI总监爆火LLM科普&#xff0c;时长1小时&#xff0c;面向普通大众 - 知乎大模型本质及趋势剖析&#xff0c…

Linux 内核网络协议栈中的关键数据结构:inet_skb_parm 与 ip_options

在 Linux 内核的网络协议栈中,数据包的高效处理依赖于一系列精心设计的数据结构。这些结构体不仅需要存储网络数据的元信息,还需支持复杂的协议逻辑(如路由、分片、安全策略等)。本文聚焦两个核心结构体 struct inet_skb_parm 和 struct ip_options,解析它们的设计原理、功…