
MCP Streamable HTTP Server

2025.05.11
1
PythonHTTP服务开发服务框架开发效率
`mcp-streamable-http-server` 是一个基于 Model Context Protocol (MCP) 的 Streamable HTTP 服务开发模板,旨在提供一个功能完善的服务框架。它支持灵活的鉴权机制、上下文感知的用户识别、动态服务注册与启动、可定制的中间件以及便捷的工具配置。适用于需要快速构建和扩展 HTTP 服务的开发场景。
View on GitHub
Overview
基本能力
产品定位
mcp-streamable-http-server
是一个基于 Model Context Protocol (MCP) 的 Streamable HTTP 服务开发模板,旨在提供一个功能完善的服务框架。
核心功能
- 灵活的鉴权机制:支持通过 URL query 及 JWT token 进行参数传递与鉴权。
- 上下文感知的用户识别:能够通过上下文向工具内部传递
session_id
,确保工具能够快速识别请求用户。 - 动态服务注册与启动:支持在系统运行时热注册并启动新的服务,增强了系统的灵活性和可扩展性。
- 可定制的中间件:允许开发者在项目中自定义中间件,轻松实现 IP 拦截、高级鉴权等定制化逻辑。
- 便捷的工具配置:支持通过 YAML 文件定义工具方法的输入参数,简化了配置流程,提升了开发效率。
适用场景
- 需要快速构建和扩展 HTTP 服务的开发场景。
- 需要灵活鉴权和用户识别的服务开发。
- 需要动态注册和启动服务的场景。
- 需要定制中间件以实现特定逻辑的场景。
工具列表
- demo.py:演示工具,用于获取
session_id
和处理用户输入。 - notify.py:通知工具,用于发送日志/通知消息。
常见问题解答
- 如何调试服务? 可以使用 MCP Inspector 工具进行可视化调试。
- 如何安装依赖? 推荐使用
uv
或pip
安装依赖。 - 如何配置环境变量? 复制
.env.example
文件为.env
,并根据需求修改配置项。
使用教程
使用依赖
- 环境要求:
- Python >= 3.13
- uv (推荐) 或 pip
-
Git
-
克隆项目:
bash git clone https://github.com/purity3/mcp-streamable-http-server.git cd mcp-streamable-http-server
-
创建并激活虚拟环境 (推荐):
-
使用 venv:
bash python -m venv .venv source .venv/bin/activate # Linux/macOS # .venv\Scripts\activate # Windows
-
安装依赖:
- 使用 uv (推荐):
bash uv pip install -e .[dev] # 安装项目及其开发依赖
-
或者使用 pip:
bash pip install -e .[dev] # 安装项目及其开发依赖
-
环境配置:
- 复制
.env.example
文件为.env
,并根据您的本地环境需求修改其中的配置项 (例如DATABASE_URL
,HOST
,PORT
等)。
安装教程
- 启动服务:
- 完成上述所有配置和安装步骤后,使用以下命令启动 MCP 服务器:
bash uv run server
- 启动成功后,您可以根据
.env
文件中的HOST
和PORT
配置 (默认为http://0.0.0.0:3000
或http://localhost:3000
) 访问服务。
调试方式
-
运行
mcp-streamable-http-server
: 参照"安装"部分的步骤 6 启动您的本地服务器 (默认http://localhost:3000
)。 -
启动 MCP Inspector: 在新的终端中执行:
bash npx @modelcontextprotocol/inspector
Inspector UI 默认运行在http://localhost:6274
。 -
连接服务器:
- 打开 Inspector UI (
http://localhost:6274
)。 - 设置 Transport Type:
streamable-http
。 - 设置 Server URL: 您的服务器地址,例如
http://localhost:3000/mcp
(具体路径如/mcp
可能需根据服务器路由调整)。 -
如服务器有鉴权,请在 UI 中填写凭证。
-
开始调试: 连接成功后,即可在 Inspector UI 中查看和调用服务器的 Tools, Resources, Prompts。