关于 FastAPI MCP SSE
FastAPI MCP SSE 是一个示例项目,展示如何在 FastAPI 应用中通过 Server-Sent Events 提供 MCP 支持。它适合希望将 MCP 端点与普通 Web 路由集成在同一应用中的开发者。
主要功能
- 01基于 SSE 的 MCP 端点(/sse 与 /messages/)
- 02FastAPI 应用中同时提供 MCP 与普通 Web 路由
- 03支持通过 APIRouter 扩展自定义路由
- 04与 MCP Inspector 联调的天气示例工具
适用场景
- 01学习如何在 FastAPI 中挂载 MCP SSE 端点
- 02在 Continue 扩展中通过 SSE 连接本地 MCP 服务
MCP 相关
该项目是 MCP 服务端示例,通过 SSE 端点向 MCP 客户端暴露天气相关工具,例如 get_alerts 与 get_forcast。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
FastAPI MCP SSE
English | 简体中文
使用 FastAPI 框架并集成 Model Context Protocol (MCP) 的服务器发送事件(SSE)实现。
什么是 MCP?
Model Context Protocol (MCP) 是一项开放标准,可让 AI 模型与外部工具和数据源交互。MCP 解决了 AI 开发中的几个关键挑战:
- 上下文限制:让模型能够访问训练数据之外的最新信息
- 工具集成:为模型使用外部工具和 API 提供标准化方式
- 互操作性:在不同的 AI 模型和工具之间建立通用接口
- 可扩展性:无需重新训练,即可轻松为 AI 系统添加新能力
本项目演示了如何在 FastAPI Web 应用中使用服务器发送事件(SSE)实现 MCP。
描述
本项目演示了如何使用 FastAPI 框架实现服务器发送事件(SSE),同时集成 Model Context Protocol(MCP)功能。其主要特点是在包含自定义路由的全功能 FastAPI Web 应用中,无缝集成 MCP 的 SSE 能力。
功能
- 使用 MCP 实现服务器发送事件(SSE)
- 集成 FastAPI 框架和自定义路由
- 将 MCP 与标准 Web 端点整合到统一的 Web 应用中
- 可自定义的路由结构
- 清晰分离 MCP 功能与 Web 功能
架构
本项目展示了一种模块化架构:
- 将 MCP SSE 端点(
/sse和/messages/)集成到 FastAPI 应用中 - 提供标准 Web 路由(
/、/about、/status、/docs、/redoc) - 演示如何将 MCP 功能与 Web 路由分离
安装和使用选项
前提条件
安装 UV Package Manager——一个使用 Rust 编写的快速 Python 包安装程序:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
选项 1:无需安装,快速运行
使用 UV 的执行工具,无需克隆代码仓库即可直接运行应用:
uvx --from git+https://github.com/panz2018/fastapi_mcp_sse.git start
选项 2:完整安装
创建虚拟环境
为项目创建独立的 Python 环境:
uv venv
激活虚拟环境
激活虚拟环境以使用它:
.venv\Scripts\activate
安装依赖项
安装所有必需的软件包:
uv pip install -r pyproject.toml
启动集成服务
启动集成了 MCP SSE 功能的 FastAPI 服务:
python src/server.py
或
uv run start
可用端点
启动服务后(使用选项 1 或选项 2 均可),以下端点将可用:
- 主服务:http://localhost:8000
- 标准 Web 路由:
- 主页:http://localhost:8000/
- 关于页面:http://localhost:8000/about
- 状态 API:http://localhost:8000/status
- 文档(Swagger UI):http://localhost:8000/docs
- 文档(ReDoc):http://localhost:8000/redoc
- MCP SSE 端点:
- SSE 端点:http://localhost:8000/sse
- 消息提交端点:http://localhost:8000/messages/
使用 MCP Inspector 调试
如需测试和调试 MCP 功能,请使用 MCP Inspector:
mcp dev ./src/weather.py
连接到 MCP Inspector
- 在 http://localhost:5173 打开 MCP Inspector
- 配置连接:
- 将传输类型设为
SSE - 输入 URL:http://localhost:8000/sse
- 点击
Connect
- 将传输类型设为
测试函数
- 转到
Tools部分 - 点击
List Tools查看可用函数:get_alerts:获取天气预警get_forcast:获取天气预报
- 选择一个函数
- 输入必需的参数
- 点击
Run Tool执行
扩展应用
添加自定义路由
该应用的结构便于使用 FastAPI 的 APIRouter 添加新路由:
-
使用 APIRouter 在 routes.py 中定义新的路由处理函数:
@router.get("/new-route") async def new_route(): return {"message": "This is a new route"} -
使用路由器定义的所有路由都会自动添加到主应用中
自定义 MCP 集成
MCP SSE 功能通过以下方式集成在 server.py 中:
- 创建 SSE 传输
- 设置 SSE 处理器
- 将 MCP 路由添加到 FastAPI 应用
与 Continue 集成
若要在 Continue VS Code 扩展中使用此 MCP 服务,请将以下配置添加到 Continue 设置中:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"name": "weather",
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
]
}
}
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。