返回市场
星lette_mcp_服务器发送事件

星lette_mcp_服务器发送事件

作者:panz20188 星标更新:2025-03-10

项目介绍

Starlette MCP SSE

<p align="center"> <strong>English</strong> | <a href="/README.zh-CN.md">简体中文</a> </p>

这是一个使用Starlette框架并集成模型上下文协议(MCP)实现的服务器发送事件(SSE)。

什么是MCP?

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

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

本项目演示了如何在Starlette网络应用中使用服务器发送事件(SSE)实现MCP。

描述

本项目展示了如何在Starlette框架中实现服务器发送事件(SSE),同时集成模型上下文协议(MCP)的功能。主要特点是将MCP的SSE能力无缝集成到一个完整的Starlette网络应用中,该应用包括自定义路由。

特性

  • 使用MCP实现服务器发送事件(SSE)
  • 将Starlette框架与自定义路由集成
  • 统一的网络应用,包含MCP和标准网络端点
  • 可定制的路由结构
  • 清晰分离MCP和网络功能的关注点

架构

本项目展示了一个模块化架构,它:

  1. 将MCP SSE端点(/sse/messages/)集成到Starlette应用中
  2. 提供标准网络路由(/, /about, /status, /docs)
  3. 展示如何维护MCP功能和网络路由之间的分离

安装及使用选项

预备条件

安装UV包管理器 - 用Rust编写的快速Python包安装器:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

选项1:无需安装快速运行

使用UV的执行工具直接运行应用程序,无需克隆仓库:

uvx --from git+https://github.com/panz2018/starlette_mcp_sse.git start

选项2:完整安装

创建虚拟环境

为项目创建一个隔离的Python环境:

uv venv

激活虚拟环境

激活虚拟环境以使用它:

.venv\Scripts\activate

安装依赖

安装所有必需的包:

uv pip install -r pyproject.toml

启动集成服务器

启动具有MCP SSE功能的集成Starlette服务器:

python src/server.py

uv run start

可用端点

启动服务器后(无论是通过选项1还是选项2),以下端点将可用:

使用MCP Inspector调试

为了测试和调试MCP功能,请使用MCP Inspector:

mcp dev ./src/weather.py

连接到MCP Inspector

  1. http://localhost:5173打开MCP Inspector
  2. 配置连接:

测试功能

  1. 导航至工具部分
  2. 点击列出工具查看可用功能:
    • get_alerts:获取天气警报
    • get_forcast:获取天气预报
  3. 选择一个功能
  4. 输入所需参数
  5. 点击运行工具执行

扩展应用

添加自定义路由

应用结构使得添加新路由变得容易:

  1. 在routes.py中定义新的路由处理器
  2. 在routes.py中添加路由到路由列表
  3. 主应用会自动包含这些路由

自定义MCP集成

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

  • 创建一个SSE传输
  • 设置SSE处理器
  • 将MCP路由添加到Starlette应用

Continue集成

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

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