项目简介
Reboot Durable MCP 是一个用于构建 Model Context Protocol (MCP) 服务器的Python框架。它专为需要高可用性和状态持久性的LLM应用后端设计。该框架利用 Reboot 平台的工作流能力,实现了即使在服务器断开连接或重启后,也能安全地恢复现有请求和会话。这意味着您的LLM客户端可以获得一个稳定、可靠的上下文服务,即使底层服务器发生故障或维护,也能无缝地继续其操作。
主要功能点
- 持久化会话管理:即使服务器重启,也能保留和恢复客户端会话状态,确保长时间交互的连续性。
- 资源托管与访问:支持定义和管理各种上下文资源(如配置、数据等),并提供标准的读取和列出接口供LLM客户端访问。
- 工具注册与调用:允许开发者注册自定义工具(函数或外部API),LLM客户端可以通过标准协议调用这些工具来执行特定任务。
- 进度与日志通知:服务器可以向客户端发送操作进度更新和详细日志信息,增强交互透明度。
- 能力变更通知:当服务器上的资源、工具或提示列表发生变化时,能够及时通知客户端。
- 基于JSON-RPC:与MCP客户端通过JSON-RPC协议进行通信,确保标准化的交互模式。
安装步骤
- 克隆仓库
git clone https://github.com/reboot-dev/mcp-python.git cd mcp-python - 安装依赖
Reboot Durable MCP 使用 'uv' 作为包管理器。
uv sync - 激活虚拟环境
source .venv/bin/activate - 生成代码
Reboot 框架可能需要生成一些代码。
rbt generate - 确保Docker运行
此框架可能依赖Docker进行测试或Reboot平台的运行环境。
(如果Docker未运行,请启动它)docker ps - 运行测试(可选)
pytest tests
服务器配置(供MCP客户端参考)
以下是一个MCP客户端配置示例,用于启动并连接到一个基于Reboot Durable MCP框架构建的服务器应用。请注意,这里的 'command' 和 'args' 是指启动您的MCP服务器应用的命令及其参数,而不是框架本身的命令。
假设您已编写一个名为 'my_mcp_server_app.py' 的Python文件,其中包含了使用 'DurableMCP' 框架构建的MCP服务器逻辑。
{ "serverName": "自定义Reboot MCP应用", "command": "python", "args": [ "my_mcp_server_app.py", "--host", "127.0.0.1", // 服务器监听的IP地址,通常为本地环回地址 "--port", "8000" // 服务器监听的端口号,MCP客户端将通过此端口连接 ], "comment": "这是一个示例MCP客户端配置,用于启动您自己的Reboot Durable MCP服务器应用。MCP客户端将尝试连接到 'http://127.0.0.1:8000/mcp'。请将 'my_mcp_server_app.py' 替换为您的实际MCP应用入口文件。" }
配置说明:
- 'serverName':您为MCP服务器实例定义的易读名称。
- 'command':用于执行您MCP服务器应用的命令,通常是 'python'。
- 'args':传递给 'command' 的参数列表。
- 'my_mcp_server_app.py':这是您实际的Python MCP服务器应用的入口脚本文件名。
- '--host':可选,指定服务器监听的IP地址。
- '--port':可选,指定服务器监听的HTTP端口。
- 'comment':提供关于此配置的额外说明。
MCP客户端在启动服务器后,通常会连接到 'http://<host>:<port>/mcp' 这个URL(这里的 '/mcp' 是 'DurableMCP' 框架默认的MCP协议路径,可以在您的应用代码中修改)。
基本使用方法
- 创建您的MCP服务器应用文件:
创建一个Python文件(例如 'my_mcp_server_app.py'),并使用 'DurableMCP' 框架定义您的资源和工具。
# my_mcp_server_app.py from reboot.aio.applications import Application from reboot.mcp.server import DurableMCP, ToolContext from pydantic import AnyUrl # 实例化 DurableMCP 服务器,并指定MCP协议的URL路径 mcp_server = DurableMCP(path="/mcp", log_level="INFO") @mcp_server.resource("greeting://{name}") def get_greeting(name: str) -> str: """获取个性化问候语""" return f"你好,{name}!欢迎来到Reboot MCP!" @mcp_server.tool() async def add(a: int, b: int, context: ToolContext) -> int: """添加两个数字,并记录操作日志""" await context.info(f"正在计算:{a} + {b}") return a + b # 创建 Reboot 应用程序,并将 MCP 服务器挂载到 HTTP 路径 application = Application(servicers=mcp_server.servicers()) application.http.mount(mcp_server.path, factory=mcp_server.streamable_http_app_factory) if __name__ == '__main__': # 运行 Reboot 应用程序,这将启动一个HTTP服务器,例如在 http://localhost:8000 print("Reboot Durable MCP 服务器正在启动,监听 /mcp 路径...") application.run() - 启动您的MCP服务器:
在命令行中执行上述配置中指定的命令。
服务器将启动并监听指定的地址和端口。python my_mcp_server_app.py --host 127.0.0.1 --port 8000 - MCP客户端连接: 您的MCP客户端(例如一个LLM应用)可以使用上述JSON配置信息来启动此服务器,并连接到 'http://127.0.0.1:8000/mcp' 以便进行资源读取、工具调用等交互。
信息
分类
AI与计算