使用说明
项目简介
本项目是一个基于 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 响应。
安装步骤
- 创建并激活 Python 虚拟环境 (推荐):
python -m venv venv source venv/bin/activate # Linux / macOS .\venv\Scripts\activate # Windows - 安装项目依赖:
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': 启用热重载,修改代码后服务器自动重启,仅用于开发环境。
基本使用方法
-
启动服务器: 在终端中执行上述配置中 'command' 和 'args' 拼接的命令。例如,在项目根目录下执行:
uvicorn server_sse:starlette_app --host 0.0.0.0 --port 8000 --reload服务器启动后,将监听 'http://localhost:8000' 地址。
-
使用客户端连接服务器: 可以使用提供的 Python 或 JavaScript 客户端示例代码与服务器进行交互。
- Python 客户端示例: 运行 'client_sse.py' 文件,它会连接到服务器并演示如何列出工具、调用工具和访问资源。
- JavaScript 客户端示例: 可以直接在浏览器环境中运行 JavaScript 代码,连接到服务器的 SSE 和 Messages 端点,发送请求并接收实时消息。
-
通过 MCP Inspector 连接: 可以使用 MCP Inspector 工具,配置服务器地址 'http://localhost:8000',即可图形化地浏览和测试服务器提供的工具和资源。
注意事项
- 服务器默认开启 DEBUG 日志,日志信息会输出到控制台和 'logs/server_sse.log' 文件中。
- 服务器提供了 '/mcp/sse' 和 '/sse' 两个 SSE 端点,以及 '/mcp/messages' 和 '/messages' 两个消息端点,'/mcp/' 前缀的路径是推荐的 MCP 标准路径,不带前缀的路径是为了兼容性而保留。
信息
分类
AI与计算