F

FastAPI模型上下文协议服务器发送事件

@panz2018/fastapi_mcp_sse
0 Stars 576 次浏览 panz2018 更新于 2026-08-23

使用FastAPI框架实现的服务器发送事件(Server-Sent Events),集成了模型上下文协议(MCP),允许AI模型访问外部工具和数据源,例如天气信息。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

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 功能之间的清晰职责分离

架构

该项目展示了以下模块化架构:

  1. 将 MCP SSE 端点 (/sse/messages/) 集成到 FastAPI 应用程序中
  2. 提供标准 Web 路由 (/, /about, /status, /docs, /redoc)
  3. 演示如何在 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

  1. 打开 MCP Inspector:http://localhost:5173
  2. 配置连接:
    • 将传输类型设置为 SSE
    • 输入 URL: http://localhost:8000/sse
    • 点击 Connect

测试功能

  1. 导航到 Tools 部分
  2. 点击 List Tools 查看可用功能:
    • get_alerts : 获取天气警报
    • get_forcast : 获取天气预报
  3. 选择一个功能
  4. 输入所需参数
  5. 点击 Run Tool 执行

扩展应用程序

添加自定义路由

应用程序结构使得通过 FastAPI 的 APIRouter 添加新路由变得容易:

  1. 在 routes.py 中使用 APIRouter 定义新的路由处理程序:

    @router.get("/new-route")
    async def new_route():
        return {"message": "This is a new route"}
    
  2. 使用路由器定义的所有路由将自动包含在主应用程序中

自定义 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"
        }
      }
    ]
  }
}

相关 MCP 服务