引言
在Model Context Protocol (MCP) 定义了多种传输方式以适应不同场景需求。本文将详细解析MCP的三种主要传输方式:标准输入输出(stdio)、服务器发送事件(SSE)和可流式HTTP(Streamable HTTP),帮助开发者根据实际需求选择最佳实现方案
1. 标准输入输出(stdio)模式
标准输入输出模式是最基础的传输方式,特别适合命令行工具和简单的交互场景。
实现逻辑
# 初始化服务器
app = Server("mcpServer")
async def run_stdio():
"""运行标准输入输出模式的服务器
使用标准输入输出流(stdio)运行服务器,主要用于命令行交互模式
Raises:
Exception: 当服务器运行出错时抛出异常
"""
from mcp.server.stdio import stdio_server
async with stdio_server() as (read_stream, write_stream):
try:
await app.run(
read_stream,
write_stream,
app.create_initialization_options()
)
except Exception as e:
print(f"服务器错误: {str(e)}")
raise
if __name__ == "__main__":
asyncio.run(run_stdio())
核心特点:
-
使用标准输入(stdin)和标准输出(stdout)进行通信
-
实现简单,无需额外网络配置
-
适合本地调试和CLI工具开发
-
通过
stdio_server()上下文管理器管理流资源
适用场景:
-
本地开发调试
-
命令行工具集成
-
简单的进程间通信
2. 服务器发送事件(SSE)模式
SSE模式利用HTTP长连接实现服务器向客户端的单向实时通信。
该传输方式在 2024-11-05 协议版本开始替换为了 HTTP+SSE 传输,及第三中streamableHttp方式
实现逻辑
# 初始化服务器
app = Server("mcpServer")
def run_sse():
"""运行SSE(Server-Sent Events)模式的服务器
启动一个支持SSE的Web服务器,允许客户端通过HTTP长连接接收服务器推送的消息
服务器默认监听0.0

最低0.47元/天 解锁文章
1018

被折叠的 条评论
为什么被折叠?



