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

第三章:Transport Mechanisms

Chapter 3: Transport Mechanisms


🌟 从上一章到本章

在第二章:MCP服务器分类中,我们学会了如何根据需求选择不同类别的服务器(如文件系统、数据库等)。现在想象这样一个场景:你有一个本地文件服务器和一个云端数据库服务器,但它们的通信方式完全不同!这时候问题来了——如何让LLM灵活地与这些服务器“对话”?

本章将揭秘传输机制,它就像“翻译官”的沟通方式,决定服务器与LLM如何高效传递信息。我们将通过一个具体案例,学习如何选择和配置通信协议!


🎯 中心用例:让LLM同时操作本地文件和云端数据

假设你要开发一个AI助手,需要同时完成以下任务:

  1. 读取本地PDF文件(通过文件系统服务器)
  2. 查询云端数据库中的用户信息(通过Third-Party服务器)
  • 挑战:本地服务器可能使用STDIO协议,而云端服务器可能使用Server-Sent Events(SSE)。如何让LLM同时兼容这两种通信方式?

🔍 两种核心传输机制

MCP定义了两种主要通信协议,像“普通话”和“方言”一样解决不同场景的通信需求:

1. STDIO(标准输入输出)

  • 类比:打电话时直接对话,一问一答
  • 适用场景:简单快速的单次请求(如文件读写)
  • 特点
    LLM 客户端 STDIO服务器 请求"读取合同.pdf" 通过命令行启动服务器并传递指令 返回文件内容 LLM 客户端 STDIO服务器
    • 代码示例:启动STDIO文件服务器
      # 使用npx直接运行服务器命令
      npx -y @modelcontextprotocol/server-filesystem /my/data/folder
      

2. Server-Sent Events(SSE)

  • 类比:观看直播,持续接收更新
  • 适用场景:需要实时推送数据(如监控日志、股票行情)
  • 特点
    LLM 客户端 SSE服务器 订阅"实时股票价格" 建立长连接 每隔5秒推送最新价格 实时更新数据流 LLM 客户端 SSE服务器
    • 代码示例:配置SSE数据库服务器
      {"mcpServers": {"数据库": {"command": "npx","args": ["@thirdparty/server-postgres"],"transport": "sse"  // 明确指定协议}}
      }
      

🛠️ 如何用传输机制解决用例?

步骤1:配置双协议服务器

在客户端配置文件中同时注册两种服务器:

{"mcpServers": {"本地文件": {  // STDIO协议"command": "npx","args": ["@modelcontextprotocol/server-filesystem", "/data"]},"云端数据库": {  // SSE协议"command": "npx","args": ["@aws/server-postgres"],"transport": "sse"}}
}

步骤2:让LLM同时操作

用户:请读取合同.pdf并查询张三的订单记录  
LLM内部操作:  
1. 调用本地文件服务器(STDIO)读取PDF  
2. 调用云端数据库服务器(SSE)实时获取订单数据  

🕵️ 内部实现揭秘

时序图:两种协议对比

LLM MCP客户端 STDIO服务器 SSE服务器 发送两个请求 通过命令行启动文件服务器 返回文件内容(单次响应) 建立长连接并订阅数据库 持续推送订单数据(实时流) 合并结果返回用户 LLM MCP客户端 STDIO服务器 SSE服务器

关键代码片段(简化版)

STDIO服务器启动逻辑(文件系统)
// server-filesystem.ts
class FilesystemServer {async handleSTDIO() {const stdin = process.stdin; // 监听标准输入const request = await readRequest(stdin);if (request.action === "read") {const fileContent = readFile(request.path);process.stdout.write(fileContent); // 通过标准输出返回}}
}
SSE服务器响应逻辑(数据库)
// server-postgres.js
const http = require('http');server.on('request', (req, res) => {res.writeHead(200, {'Content-Type': 'text/event-stream','Cache-Control': 'no-cache','Connection': 'keep-alive'});// 每隔5秒推送新数据setInterval(() => {const data = getRealtimeData();res.write(`data: ${JSON.stringify(data)}\n\n`);}, 5000);
});

💡 总结与展望

本章我们学到:

  1. 两种协议的“方言”差异:STDIO适合单次问答,SSE适合实时流
  2. 如何配置混合服务器环境:在同一个项目中同时使用不同协议
  3. 选择标准:根据需求场景决定使用STDIO还是SSE

接下来,我们将深入探索MCP服务集成抽象,学习如何将多个服务器整合成“超级工具”——例如让文件服务器和数据库服务器协同完成复杂任务!

🚀 尝试在你的项目中混合使用STDIO和SSE协议,比如同时操作本地文件和实时监控云端数据!

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

相关文章:

  • 单 例 模 式
  • 【前端】CSS 基础
  • 多维时序 | LightGBM多变量时序预测(Matlab完整源码和数据,适合基础小白研究)
  • CAS(Compare And Swap)
  • Ubuntu服务器上如何监控Oracle数据库
  • 电子削铅笔刀顺序图详解:从UML设计到PlantUML实现
  • 几种查看PyTorch、cuda 和 Python 版本方法
  • 关于Qt对Html/CSS的支持
  • 全链路数据仓建设指南:从构建流程到应用场景
  • Vue+Flask豆瓣LSTM影评+推荐算法大数据可视化平台深度学习系统源码
  • 文件上传--WAF绕过干货
  • 【网络入侵检测】基于Suricata源码分析NFQ IPS模式实现
  • Python torchvision.transforms 下常用图像处理方法
  • maven工程中引入外部jar
  • 数据分析之技术干货业务价值​​ powerquery 分组排序后取TOP
  • 《AI大模型应知应会100篇》 第36篇:RAG技术入门:检索增强生成原理及实现
  • 【hadoop】HBase分布式数据库安装部署
  • PyTorch生成式人工智能实战(2)——PyTorch基础
  • 13、性能优化:魔法的流畅之道——React 19 memo/lazy
  • Websocket自动发送消息客户端工具
  • LeetCode每日一题4.24
  • 硬核解析!电动汽车能耗预测与续驶里程的关键技术研究
  • 多模态大模型 Qwen2.5-VL 的学习之旅
  • 立錡科技优化 HDD、LPDDR、SoC 供电的高性能降压转换器
  • 6 种AI实用的方法,快速修复模糊照片
  • 负环-P3385-P2136
  • 让Docker端口映射受Firewall管理而非iptables
  • LVGL在VScode的WSL2中仿真
  • R 语言科研绘图第 41 期 --- 桑基图-基础
  • .NET Framework 4.0可用EXCEL导入至DataTable