mcp-transport-prototype

mcp-transport-prototype

site icon
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

基本能力

核心功能

  1. SSE 传输
  2. 使用 Server-Sent Events (SSE) 通过 HTTP 从服务器向客户端推送实时更新。
  3. 适用于单向数据流场景,如实时更新、通知或流式响应。
  4. 客户端通过 POST API 发送请求,通过 SSE 流接收响应。
  5. Stdio 传输
  6. 通过标准输入/输出(stdio)进行通信。
  7. 适用于进程内工具或子进程场景,如命令行工具、LLM 代理或后台脚本。
  8. stdin 读取请求,通过 stdout 返回响应。

适用场景

  1. SSE 传输:适用于需要实时数据推送的 Web 仪表盘或基于浏览器的应用程序。
  2. Stdio 传输:适用于需要高效结构化数据交换的进程内工具或脚本。

工具列表

  1. sse_transport.py
  2. 功能:设置基于 HTTP 和 SSE 的 MCP 服务器。
  3. 客户端通过 POST API 发送请求,通过 SSE 流接收响应。
  4. stdio_transport.py
  5. 功能:设置基于 stdio 的 MCP 服务器。
  6. stdin 读取请求,通过 stdout 返回响应。

常见问题解答

  1. SSE 和 WebSocket 的区别
  2. SSE 是单向的,服务器向客户端推送数据;WebSocket 是双向的。
  3. SSE 基于 HTTP,WebSocket 基于独立的协议。
  4. Stdio 传输的优势
  5. 适用于进程内通信,无需网络开销。
  6. 适合高效结构化数据交换。

使用教程

使用依赖

  1. 安装 Python 3.7+。
  2. 安装 FastAPI 和 Uvicorn: bash pip install fastapi uvicorn

安装教程

  1. 克隆项目仓库: bash git clone https://github.com/Amishk599/mcp-sse-prototype.git cd mcp-sse-prototype
  2. 安装依赖: bash pip install -r requirements.txt

调试方式

  1. 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"}} ```

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。