使用说明

项目简介

本项目是一个基于 Python 和 Starlette 框架构建的 MCP (Model Context Protocol) 服务器,它使用 Server-Sent Events (SSE) 技术实现与客户端的实时通信。该服务器旨在为大型语言模型 (LLM) 应用提供上下文数据、工具执行和 Prompt 管理等核心功能,遵循 MCP 协议标准,确保与兼容 MCP 协议的客户端进行有效交互。

主要功能点

  • 资源管理: 支持托管和管理各种资源,并通过标准化的资源路径进行访问。示例中提供了 'greeting://{name}' 资源,可以根据名称动态生成问候语。
  • 工具注册与执行: 允许注册和执行外部工具,扩展 LLM 的能力边界。示例中内置了 'add(a, b)' 和 'get_metrics(question)' 工具,分别用于数值加法和获取指标数据。
  • SSE 实时通信: 使用 Server-Sent Events 技术实现服务器向客户端的实时数据推送,适用于需要实时更新的应用场景。
  • CORS 支持: 默认启用 CORS 中间件,允许跨域请求,方便前端应用集成。
  • JSON-RPC over HTTP: 通过 HTTP POST 请求接收客户端的 JSON-RPC 格式消息,并返回 JSON-RPC 响应。

安装步骤

  1. 创建并激活 Python 虚拟环境 (推荐):
    python -m venv venv
    source venv/bin/activate  # Linux / macOS
    .\venv\Scripts\activate  # Windows
  2. 安装项目依赖:
    pip install -r requirements.txt

服务器配置

MCP 服务器通过命令行启动,以下是启动 'server_sse.py' 的配置信息,客户端需要配置服务器的启动命令才能连接:

{
  "serverName": "mcp-python-sse",
  "command": "uvicorn",
  "args": [
    "server_sse:starlette_app",
    "--host",
    "0.0.0.0",
    "--port",
    "8000",
    "--reload"
  ],
  "description": "启动 MCP Python SSE 服务器,监听 8000 端口,支持热重载(开发环境推荐)。",
  "notes": "生产环境请移除 '--reload' 参数,并考虑使用更稳定的部署方案。"
}

参数说明:

  • 'serverName': 服务器名称,自定义即可。
  • 'command': 启动服务器的命令,这里使用 'uvicorn'。
  • 'args': 传递给 'uvicorn' 命令的参数列表:
    • '"server_sse:starlette_app"': 指定要运行的 ASGI 应用,'server_sse.py' 文件中的 'starlette_app' 实例。
    • '--host "0.0.0.0"': 指定服务器监听的 IP 地址,'0.0.0.0' 表示监听所有可用的网络接口。
    • '--port "8000"': 指定服务器监听的端口号为 '8000'。
    • '--reload': 启用热重载,修改代码后服务器自动重启,仅用于开发环境。

基本使用方法

  1. 启动服务器: 在终端中执行上述配置中 'command' 和 'args' 拼接的命令。例如,在项目根目录下执行:

    uvicorn server_sse:starlette_app --host 0.0.0.0 --port 8000 --reload

    服务器启动后,将监听 'http://localhost:8000' 地址。

  2. 使用客户端连接服务器: 可以使用提供的 Python 或 JavaScript 客户端示例代码与服务器进行交互。

    • Python 客户端示例: 运行 'client_sse.py' 文件,它会连接到服务器并演示如何列出工具、调用工具和访问资源。
    • JavaScript 客户端示例: 可以直接在浏览器环境中运行 JavaScript 代码,连接到服务器的 SSE 和 Messages 端点,发送请求并接收实时消息。
  3. 通过 MCP Inspector 连接: 可以使用 MCP Inspector 工具,配置服务器地址 'http://localhost:8000',即可图形化地浏览和测试服务器提供的工具和资源。

注意事项

  • 服务器默认开启 DEBUG 日志,日志信息会输出到控制台和 'logs/server_sse.log' 文件中。
  • 服务器提供了 '/mcp/sse' 和 '/sse' 两个 SSE 端点,以及 '/mcp/messages' 和 '/messages' 两个消息端点,'/mcp/' 前缀的路径是推荐的 MCP 标准路径,不带前缀的路径是为了兼容性而保留。

信息

分类

AI与计算