MCP三大核心通信模式
MCP(Model Context Protocol)模型上下文协议提供三种核心的通信模式:STDIO、SSE和Streamable HTTP,在不同的场景中为开发者提供了灵活且高效的数据传输方式。今天,我们将一起深入分析这三种模式,探讨它们的应用场景与差异。
STDIO 模式
STDIO(Standard Input and Output)是最基本的输入输出方式,广泛应用于命令行工具、脚本编程以及本地调试过程中。它通过标准输入、输出和错误流来进行数据的传输。
:接收用户或系统输入的数据
:将处理后的数据输出到终端或文件
:输出错误信息,便于调试
适用场景:面向传统命令行式交互,强调顺序性与确定性,通常用于命令行工具、自动化脚本等短期交互场景。它是最基础的数据传输方式,适合单次的、低延迟的交互任务,适合本地开发与调试。
from mcp.server.fastmcp import FastMCP
# 初始化FastMCP server,创建一个MCP服务器实例
mcp = FastMCP("mcpserver")
# @MCP.tool()装饰器将这个函数注册为MCP工具
@mcp.tool()
def add(x: int, y: int) -> int:
return x * y
if __name__ == "__main__":
mcp.run(transport="stdio")
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
SSE 模式
SSE(Server-Sent Events)是一种基于HTTP协议的单向数据流传输方式。它允许服务器主动向客户端推送实时数据。SSE通过保持一个持久的HTTP连接,将数据流式传输到客户端,特别适合需要持续更新的实时场景。
服务器向客户端推送数据。
如果连接中断,客户端会自动重新连接。
与Web应用的兼容性良好。
适用场景:SSE非常适合实时推送应用,如新闻更新、社交媒体通知、股票行情等。它适用于服务器向多个客户端实时推送数据的场景。
from flask import Flask, Response, request
app = Flask(__name__)
# SSE事件流端点 (核心功能)
@app.route('/sse')
def sse_endpoint():
def event_stream():
# 1. 发送POST端点地址 (MCP规范要求)
yield "event: endpoint\ndata: /post\n\n"
# 2. 发送示例消息
for i in range(3):
yield f"data: 消息 {i+1}\n\n"
time.sleep(1)
return Response(event_stream(), mimetype='text/event-stream')
# 消息接收端点 (核心功能)
@app.route('/messages', methods=['POST'])
def receive_message():
print(f"收到客户端消息: {request.data.decode()}")
return "OK"
if __name__ == '__main__':
# 绑定本地地址 (安全要求)
app.run(host='127.0.0.1', port=5000)
Streamable HTTP 模式
Streamable HTTP(是一种基于HTTP协议的流式传输技术,专门用于大文件(如视频、音频)的分段传输。与SSE不同,Streamable HTTP允许文件在传输的同时被处理,使客户端可以边接收数据边处理,避免等待整个文件加载完成。
文件被切割成若干小块,逐步传输。
主要用于视频、音频、图像等多媒体文件的流式传输。
数据可以在客户端接收到部分内容时立即开始处理。
适用场景:Streamable HTTP非常适合大文件的流式传输,尤其在在线视频、音频流和其他大数据量内容的传输中,能极大地提高用户体验。
from flask import Flask, request, Response
import json
app = Flask(__name__)
@app.route('/add', methods=['POST'])
def stream_add():
# 流式处理函数
def generate():
# 1. 逐行读取流式输入
for line in request.stream:
try:
# 2. 解析JSON数据
data = json.loads(line)
a = data['a']
b = data['b']
# 3. 计算并返回结果(流式输出)
result = a + b
yield f"data: {json.dumps({'result': result})}\n\n"
except:
yield "data: {\"error\": \"无效输入\"}\n\n"
# 4. 返回SSE流响应
return Response(generate(), mimetype='text/event-stream')
if __name__ == '__main__':
app.run(host='127.0.0.1', port=5000)
三大通信模式差异
特性 |
STDIO |
SSE |
Streamable HTTP |
通信方向 |
单向(请求-响应) |
单向(服务端→客户端) |
双向流 |
协议基础 |
操作系统内建功能 |
基于HTTP协议 |
基于HTTP协议 |
连接方式 |
本地进程之间,通常为短连接 |
持久HTTP连接,自动重连 |
持久HTTP连接 |
数据形式 |
纯文本 |
富媒体(图/JSON/视频) |
任意二进制/文本流 |
延迟要求 |
低(同步阻塞) |
中(实时推送) |
低(流式传输) |
适用场景 |
命令行工具、脚本交互 |
实时数据推送 |
音视频流、大文件传输 |
浏览器支持 |
不适用(主要为本地程序) |
支持大部分现代浏览器 |
支持所有现代浏览器 |
并发能力 |
低(单线程) |
中(依赖服务器配置) |
高(无状态化) |
安全性 |
高(本地隔离) |
中(依赖HTTPS) |
高(支持HTTPS、会话隔离) |
无论你是开发者、架构师还是运维工程师,理解这三种核心模式,都将成为你在智能化升级路上的关键竞争力。
我在一线互联网企业工作十余年里,指导过不少同行后辈。帮助很多人得到了学习和成长。
我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;
第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;
第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;
第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;
第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;
第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;
第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。
学会后的收获:
• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;
• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;
• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;
• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。
1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集
获取方式:
有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】