
mcp-transport-prototype

2025.04.23
0
PythonMCP 服务器原型数据传输其它
mcp-transport-prototype 是一个用于理解如何构建自定义 MCP 服务器的原型实现,支持通过 stdio 和 SSE 传输访问。其主要目标是理解 SSE 和 stdio 传输机制。
### 核心功能
1. **SSE 传输**:使用 Server-Sent Events (SSE) 通过 HTTP 从服务器向客户端推送实时更新,适用于需要单向数据流的场景,如实时更新、通知或流式响应。
2. **Stdio 传输**:通过标准输入/输出(stdio)进行通信,适用于进程内工具或子进程场景,如命令行工具、LLM 代理或后台脚本。
### 适用场景
1. **SSE 传输**:适用于需要实时数据推送的 Web 仪表盘或基于浏览器的应用程序。
2. **Stdio 传输**:适用于需要高效结构化数据交换的进程内工具或脚本。
View on GitHub
Overview
基本能力
核心功能
- SSE 传输:
- 使用 Server-Sent Events (SSE) 通过 HTTP 从服务器向客户端推送实时更新。
- 适用于单向数据流场景,如实时更新、通知或流式响应。
- 客户端通过 POST API 发送请求,通过 SSE 流接收响应。
- Stdio 传输:
- 通过标准输入/输出(stdio)进行通信。
- 适用于进程内工具或子进程场景,如命令行工具、LLM 代理或后台脚本。
- 从
stdin
读取请求,通过stdout
返回响应。
适用场景
- SSE 传输:适用于需要实时数据推送的 Web 仪表盘或基于浏览器的应用程序。
- Stdio 传输:适用于需要高效结构化数据交换的进程内工具或脚本。
工具列表
- sse_transport.py:
- 功能:设置基于 HTTP 和 SSE 的 MCP 服务器。
- 客户端通过 POST API 发送请求,通过 SSE 流接收响应。
- stdio_transport.py:
- 功能:设置基于 stdio 的 MCP 服务器。
- 从
stdin
读取请求,通过stdout
返回响应。
常见问题解答
- SSE 和 WebSocket 的区别:
- SSE 是单向的,服务器向客户端推送数据;WebSocket 是双向的。
- SSE 基于 HTTP,WebSocket 基于独立的协议。
- Stdio 传输的优势:
- 适用于进程内通信,无需网络开销。
- 适合高效结构化数据交换。
使用教程
使用依赖
- 安装 Python 3.7+。
- 安装 FastAPI 和 Uvicorn:
bash pip install fastapi uvicorn
安装教程
- 克隆项目仓库:
bash git clone https://github.com/Amishk599/mcp-sse-prototype.git cd mcp-sse-prototype
- 安装依赖:
bash pip install -r requirements.txt
调试方式
- SSE 传输调试: ```bash # 启动 FastAPI 服务器 uvicorn main:app --reload --transport sse
# 打开 SSE 连接 curl http://localhost:8000/stream/test
# 发送 POST 请求
curl -X POST http://localhost:8000/send/test \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"params": {
"name": "Amish"
}
}'
2. **Stdio 传输调试**:
bash
# 启动 MCP 服务器
uvicorn main:app --reload --transport stdio
# 发送请求 {"jsonrpc": "2.0", "id": 1, "params": {"name": "Amish"}} ```