SSE服务实现

一个使用FastAPI框架实现服务器发送事件(SSE)并集成模型上下文协议(MCP)的项目,适用于AI模型与外部工具和数据源的交互。

  • by panz2018
  • Python
  • 本地部署
  • 51 星标
  • 更新于
在 GitHub 查看 panz2018/fastapi_mcp_sse

使用说明

FastAPI MCP SSE

English | 简体中文

使用FastAPI框架的服务器发送事件(SSE)实现 模型上下文协议(MCP) 整合。

什么是MCP?

这 模型上下文协议(MCP) 是一个开放标准,使人工智能模型能够与外部工具和数据源进行交互。MCP解决了人工智能开发中的几个关键挑战:

  • 上下文限制:允许模型访问其训练数据之外的最新信息
  • 工具集成:为模型使用外部工具和API提供了一种标准化的方法
  • 互操作性:在不同的AI模型和工具之间创建通用接口
  • 可扩展性:无需重新培训,即可轻松为人工智能系统添加新功能

本项目演示了如何在FastAPI web应用程序中使用服务器发送事件(SSE)实现MCP。

描述

该项目演示了如何使用FastAPI框架实现服务器发送事件(SSE),同时集成模型上下文协议(MCP)功能。关键功能是将MCP的SSE功能无缝集成到功能齐全的FastAPI web应用程序中,该应用程序包括自定义路由。

特性

  • 使用MCP实现服务器发送事件(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检查器进行调试

要测试和调试MCP功能,请使用MCP检查器:

mcp dev ./src/weather.py

连接到MCP检查器

  1. 在 打开 MCP Inspectorhttp://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. 使用APIRouter在routes.py中定义新的路由处理程序:

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

定制MCP集成

MCP SSE功能通过以下方式集成在server.py中:

  • 创建SSE传输
  • 设置SSE处理程序
  • 将MCP路由添加到FastAPI应用程序

与集成 继续

要将此MCP服务器与Continue VS Code扩展一起使用,请将以下配置添加到您的Continue设置中:

{
  "experimental": {
    "modelContextProtocolServers": [
      {
        "transport": {
          "name": "weather",
          "type": "sse",
          "url": "http://localhost:8000/sse"
        }
      }
    ]
  }
}