FastAPI模型上下文协议服务器发送事件
使用FastAPI框架实现的服务器发送事件(Server-Sent Events),集成了模型上下文协议(MCP),允许AI模型访问外部工具和数据源,例如天气信息。
服务介绍
FastAPI MCP SSE
使用 FastAPI 框架并集成 Model Context Protocol (MCP) 的 Server-Sent Events (SSE) 实现。
什么是 MCP?
Model Context Protocol (MCP) 是一个开放标准,使 AI 模型能够与外部工具和数据源进行交互。MCP 解决了 AI 开发中的几个关键挑战:
- 上下文限制:允许模型访问超出其训练数据的最新信息
- 工具集成:为模型使用外部工具和 API 提供标准化方式
- 互操作性:在不同的 AI 模型和工具之间创建通用接口
- 可扩展性:无需重新训练即可轻松为 AI 系统添加新功能
该项目演示了如何在 FastAPI Web 应用程序中使用 Server-Sent Events (SSE) 实现 MCP。
描述
该项目演示了如何在 FastAPI 框架中实现 Server-Sent Events (SSE),同时集成 Model Context Protocol (MCP) 功能。主要特点是无缝集成了 MCP 的 SSE 功能,并在一个包含自定义路由的全功能 FastAPI Web 应用程序中实现了这些功能。
特性
- 集成 MCP 的 Server-Sent Events (SSE) 实现
- 与自定义路由的 FastAPI 框架集成
- 同时具有 MCP 和标准 Web 端点的统一 Web 应用程序
- 可自定义的路由结构
- MCP 功能和 Web 功能之间的清晰职责分离
架构
该项目展示了以下模块化架构:
- 将 MCP SSE 端点 (
/sse和/messages/) 集成到 FastAPI 应用程序中 - 提供标准 Web 路由 (
/,/about,/status,/docs,/redoc) - 演示如何在 MCP 功能和 Web 路由之间保持分离
安装与使用选项
前提条件
安装 UV 包管理器 - 一个用 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
- 标准网页路由:
- 首页: 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
- 打开 MCP Inspector:http://localhost:5173
- 配置连接:
- 将传输类型设置为
SSE - 输入 URL: http://localhost:8000/sse
- 点击
Connect
- 将传输类型设置为
测试功能
- 导航到
Tools部分 - 点击
List Tools查看可用功能:get_alerts: 获取天气警报get_forcast: 获取天气预报
- 选择一个功能
- 输入所需参数
- 点击
Run Tool执行
扩展应用程序
添加自定义路由
应用程序结构使得通过 FastAPI 的 APIRouter 添加新路由变得容易:
-
在 routes.py 中使用 APIRouter 定义新的路由处理程序:
@router.get("/new-route") async def new_route(): return {"message": "This is a new route"} -
使用路由器定义的所有路由将自动包含在主应用程序中
自定义 MCP 集成
MCP SSE 功能通过以下方式集成在 server.py 中:
- 创建 SSE 传输
- 设置 SSE 处理程序
- 向 FastAPI 应用程序添加 MCP 路由
与 Continue 集成
要使用 Continue VS Code 扩展与此 MCP 服务器,需在您的 Continue 设置中添加以下配置:
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"name": "weather",
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
]
}
}