项目简介

Reboot Durable MCP 是一个用于构建 Model Context Protocol (MCP) 服务器的Python框架。它专为需要高可用性和状态持久性的LLM应用后端设计。该框架利用 Reboot 平台的工作流能力,实现了即使在服务器断开连接或重启后,也能安全地恢复现有请求和会话。这意味着您的LLM客户端可以获得一个稳定、可靠的上下文服务,即使底层服务器发生故障或维护,也能无缝地继续其操作。

主要功能点

  • 持久化会话管理:即使服务器重启,也能保留和恢复客户端会话状态,确保长时间交互的连续性。
  • 资源托管与访问:支持定义和管理各种上下文资源(如配置、数据等),并提供标准的读取和列出接口供LLM客户端访问。
  • 工具注册与调用:允许开发者注册自定义工具(函数或外部API),LLM客户端可以通过标准协议调用这些工具来执行特定任务。
  • 进度与日志通知:服务器可以向客户端发送操作进度更新和详细日志信息,增强交互透明度。
  • 能力变更通知:当服务器上的资源、工具或提示列表发生变化时,能够及时通知客户端。
  • 基于JSON-RPC:与MCP客户端通过JSON-RPC协议进行通信,确保标准化的交互模式。

安装步骤

  1. 克隆仓库
    git clone https://github.com/reboot-dev/mcp-python.git
    cd mcp-python
  2. 安装依赖 Reboot Durable MCP 使用 'uv' 作为包管理器。
    uv sync
  3. 激活虚拟环境
    source .venv/bin/activate
  4. 生成代码 Reboot 框架可能需要生成一些代码。
    rbt generate
  5. 确保Docker运行 此框架可能依赖Docker进行测试或Reboot平台的运行环境。
    docker ps
    (如果Docker未运行,请启动它)
  6. 运行测试(可选)
    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协议路径,可以在您的应用代码中修改)。

基本使用方法

  1. 创建您的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()
  2. 启动您的MCP服务器: 在命令行中执行上述配置中指定的命令。
    python my_mcp_server_app.py --host 127.0.0.1 --port 8000
    服务器将启动并监听指定的地址和端口。
  3. MCP客户端连接: 您的MCP客户端(例如一个LLM应用)可以使用上述JSON配置信息来启动此服务器,并连接到 'http://127.0.0.1:8000/mcp' 以便进行资源读取、工具调用等交互。

信息

分类

AI与计算