Solaya MCP 服务器(QEMU后端)

  • 项目简介
    • Solaya MCP 服务器是一个基于 MCP(Model Context Protocol)的后端服务实现,旨在为 LLM 客户端提供对 Solaya 内核(运行在 QEMU 中)的上下文、资源和工具访问能力。服务器实现了核心 MCP 功能,如工具注册、工具执行、工具列表、能力声明和信息查询,并通过 JSON-RPC 形式与客户端通信。
  • 主要功能点
    • QEMU 管理工具:启动和关闭 Solaya 的 QEMU 实例,查询状态,获取网络/调试端口信息。
    • 命令与交互工具:向正在运行的 Solaya 实例发送命令、输入以及读取输出,支持交互式命令和标记等待。
    • 构建与测试工具:构建内核、运行系统测试、可选运行 Clippy 等静态分析。
    • 工具注册与调用:通过 ToolRouter 暴露多个工具(boot_qemu、shutdown_qemu、send_command、build_kernel、run_system_tests 等),可被 MCP 客户端按名称调用。
    • 能力声明与工具列表:实现 ServerHandler 接口,提供服务器信息、工具目录与工具执行入口。
  • 安装步骤
    • 在具备 Rust 开发环境的系统上构建整个工作区(包含 mcp-server 子集)的仓库:
      • 进入仓库根目录,执行常规构建(如 cargo build --workspace),确保 Rust 工具链已就绪。
      • 进入 mcp-server 目录对应的构建产物路径,运行服务器二进制。
    • 运行服务器(示例,实际路径请以构建产物为准):
      • 使用 cargo 直接运行 mcp-server(二进制名通常为 mcp-server 或在 workspace 中的 bin 配置),服务器将以 stdio 传输启动。
  • 服务器配置(MCP 客户端配置示例说明,JSON 格式,包含 server name、command、args 等)
    • 配置目标:MCP 客户端需要知道如何启动并连接到该服务器。该仓库中的服务器使用 stdio 传输,Socket/SSE/WebSocket 传输在当前实现中未作为默认提供(代码通过 stdio() 启动传输)。“服务器配置”用于描述客户端启动参数,便于雇主或工具统一管理。
    • 示例配置(描述性说明,不提供可执行代码块):
      • server_name: "solaya-mcp-server"
      • command: 指向编译后的服务器二进制路径,例如 "./target/release/mcp-server"(实际路径以构建输出为准)
      • args: [] // 当前实现通过 stdio 传输,不需要额外参数
    • 参数注释说明:
      • server_name 用于标识该 MCP 服务器实例,便于在多服务器场景中区分。
      • command 指向将被 MCP 客户端执行的服务器二进制文件的路径。
      • args 为空数组,表示服务器通过内置的 stdio 传输与客户端通信,不需要额外的启动参数。
    • 重要说明:该实现当前通过 stdio 传输与 MCP 客户端通信。如果未来支持 SSE/WebSocket 等传输,需要在配置中显式指明传输类型及端口等信息。
  • 基本使用方法
    • 启动与连接
      • 构建后直接运行服务器二进制,服务器将监听并通过标准输入输出与 MCP 客户端通信。
      • 使用符合 MCP 客户端工具的客户端来连接该服务器,发送请求(如 get_info、list_tools、call_tool 等)并接收响应。
    • 常用操作流程(在 MCP 客户端中执行的典型步骤,实际请求通过 JSON-RPC 发送):
      • 获取服务器信息(get_info)以了解协议版本、能力(是否支持工具等)。
      • 列出服务器提供的工具(list_tools)。
      • 调用工具执行具体操作(call_tool),如 boot_qemu、send_command、build_kernel、run_system_tests 等。
      • 根据需要查询状态(get_status)等辅助信息。
    • 使用效果
      • 通过工具集合对 Solaya 的内核在 QEMU 中进行自动化操作、验证以及测试,方便在 LLM 场景下进行端到端的分析和执行。

服务器信息