FastAPI MCP SSE

# FastAPI MCP SSE <p align="center"> <a href="/README.md">English</a> | <strong>简体中文</strong> </p> 这是一个使用 FastAPI 框架实现的服务器推送事件(SSE)项目,集成了 [模型上下文协议 (MCP)](https://modelcontextprotocol.io/)。 ## 什么是 MCP? [模型上下文协议 (MCP)](https://modelcontextprotocol.io/) 是一个开放标准,使 AI 模型能够与外部工具和数据源交互。MCP 解决了 AI 开发中的几个关键挑战: - **上下文限制**:允许模型访问超出其训练数据的最新信息 - **工具集成**:为模型使用外部工具和 API 提供标准化方式 - **互操作性**:在不同 AI 模型和工具之间创建通用接口 - **可扩展性**:便于在无需重新训练的情况下为 AI 系统添加新功能 本项目展示了如何在 FastAPI Web 应用中使用服务器推送事件 (SSE) 实现 MCP。 ## 描述 本项目展示了如何使用 FastAPI 框架实现服务器推送事件 (SSE),同时集成模型上下文协议 (MCP) 功能。其核心特点是将 MCP 的 SSE 功能无缝集成到一个包含自定义路由的完整 FastAPI Web 应用中。 ## 功能 - 基于 MCP 的服务器推送事件 (SSE) 实现 - 与 FastAPI 框架集成,支持自定义路由 - 统一 Web 应用,同时支持 MCP 和标准 Web 端点 - 可自定义的路由结构 - MCP 功能与 Web 功能的清晰分离 ## 架构 本项目展示了一个模块化架构,包括: 1. 将 MCP SSE 端点(`/sse` 和 `/messages/`)集成到 FastAPI 应用中 2. 提供标准 Web 路由(`/`、`/about`、`/status`、`/docs`, `/redoc`) 3. 展示如何保持 MCP 功能与 Web 路由的分离 ## 安装与使用选项 ### 前置条件 安装 [UV 包管理器](https://docs.astral.sh/uv/) - 一个用 Rust 编写的快速 Python 包安装工具: ```cmd powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" ``` ### 选项 1:无需安装直接运行 使用 UV 的执行工具直接运行应用,无需克隆仓库: ```cmd uvx --from git+https://github.com/panz2018/fastapi_mcp_sse.git start ``` ### 选项 2:完整安装 #### 创建虚拟环境 为项目创建一个隔离的 Python 环境: ```cmd uv venv ``` #### 激活虚拟环境 激活虚拟环境以使用它: ```cmd .venv\Scripts\activate ``` #### 安装依赖 安装所有必需的包: ```cmd uv pip install -r pyproject.toml ``` #### 启动集成服务器 启动集成了 MCP SSE 功能的 FastAPI 服务器: ```cmd python src/server.py ``` 或 ```cmd 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 Inspector 测试和调试 MCP 功能: ```cmd mcp dev ./src/weather.py ``` ### 连接到 MCP Inspector 1. 打开 MCP Inspector:http://localhost:5173 2. 配置连接: - 设置传输类型为 `SSE` - 输入 URL:http://localhost:8000/sse - 点击 `Connect` ### 测试功能 1. 导航到 `Tools` 部分 2. 点击 `List Tools` 查看可用功能: - `get_alerts`:获取天气警报 - `get_forecast`:获取天气预报 3. 选择一个功能 4. 输入所需参数 5. 点击 `Run Tool` 执行 ## 扩展应用 ### 添加自定义路由 应用结构便于使用 FastAPI 的 APIRouter 添加新路由: 1. 在 routes.py 中使用 APIRouter 定义新的路由处理程序: ```python @router.get("/new-route") async def new_route(): return {"message": "这是一个新路由"} ``` 2. 使用 router 定义的所有路由将自动包含到主应用中 ### 自定义 MCP 集成 MCP SSE 功能通过以下方式在 server.py 中集成: - 创建 SSE 传输 - 设置 SSE 处理程序 - 将 MCP 路由添加到 FastAPI 应用 ## 与 [Continue](https://www.continue.dev/) 集成 要将此 MCP 服务器与 Continue VS Code 扩展一起使用,请在 Continue 设置中添加以下配置: ```json { "experimental": { "modelContextProtocolServers": [ { "transport": { "name": "weather", "type": "sse", "url": "http://localhost:8000/sse" } } ] } } ```