项目简介

OSVM (Open Solana Virtual Machine) 是一款革命性的区块链基础设施,致力于通过创新的虚拟化技术(MicroVMs 和 Unikernels)提供极致安全、零停机和高性能的运行环境。'osvm-cli' 仓库中的 Unikernel 工具执行器('unikraft_tool_executor')是其核心组件之一,它扮演着一个轻量级服务器的角色,运行在 Unikernel 中。

该工具执行器的主要职责是接收 LLM 客户端(通过宿主机的 'osvm-cli' 代理)发出的 MCP 工具调用请求。它提供一个高度隔离的沙盒环境,确保工具执行的安全性,同时利用 'vsock' 协议实现宿主机与 Unikernel 之间的高速通信。

主要功能点

  • 隔离的工具执行: 将 MCP 工具的实际执行隔离在轻量级的 Unikernel (如 Unikraft) 环境中,显著降低了工具可能引入的攻击面,提升了系统的整体安全性。
  • JSON-RPC 协议支持: Unikernel 工具执行器通过 'vsock' 协议接收和响应符合 JSON-RPC 2.0 规范的工具调用请求(特别是 'tools/call' 和 'tools/list' 方法),确保了与 MCP 客户端的标准化通信。
  • 高速通信: 利用 'vsock' 协议实现宿主机与 Unikernel 之间亚毫秒级的通信延迟,极大提升了工具调用和响应的效率。
  • 错误处理和请求验证: 对接收到的工具调用请求进行格式和参数的初步验证,并能妥善处理工具执行过程中出现的错误,返回标准的 JSON-RPC 错误响应。
  • 低资源消耗: Unikernel 具有极快的启动速度(通常在 50ms 左右)和极低的内存占用(通常为 10MB 左右),非常适合作为按需启动的工具执行环境。

安装步骤

  1. 克隆 OSVM CLI 仓库: 打开您的终端,执行以下命令克隆项目仓库:

    git clone https://github.com/openSVM/osvm-cli.git
    cd osvm-cli
  2. 构建和安装 OSVM CLI: 'osvm-cli' 是宿主侧用于管理和启动 Unikernel 的命令行工具。请确保您已安装 Rust 环境。然后执行:

    cargo build --release
    sudo cp target/release/osvm /usr/bin/osvm

    这将编译 'osvm' 二进制文件并将其复制到系统路径,方便您直接使用 'osvm' 命令。

  3. 验证 OSVM CLI 安装: 运行以下命令检查 'osvm' 命令是否安装成功并显示版本信息:

    osvm --version
  4. 构建 Unikernel 工具执行器镜像: Unikernel 工具执行器本身是一个独立的镜像。您需要按照项目根目录下的 'scripts/build-unikraft-tool-executor.sh' 脚本说明,构建 'unikraft_tool_executor' 镜像。这个过程通常需要 'kraft' CLI 工具和 Unikraft 构建环境。成功构建后,镜像文件会放置在 '~/.osvm/unikernels/unikraft_tool_executor' 路径下。

服务器配置

MCP 客户端需要配置如何启动和连接到 OSVM Unikernel 工具执行器。以下是典型的 MCP 客户端配置示例(JSON 格式):

{
  "server_name": "osvm-unikernel-executor",
  "command": "osvm unikernel run --server-id osvm-unikernel-executor --image unikraft_tool_executor",
  "args": [],
  "description": "通过OSVM Unikernel执行MCP工具的服务器,提供安全隔离的工具调用环境。"
}

参数注释:

  • 'server_name': 此 MCP 服务器的唯一标识符。MCP 客户端将使用此名称来指定要与之交互的服务器。
  • 'command': 用于在宿主机上启动 Unikernel 工具执行器的命令行。
    • 'osvm unikernel run': 调用 'osvm' CLI 的 'unikernel run' 子命令来启动一个 Unikernel。
    • '--server-id osvm-unikernel-executor': 为启动的 Unikernel 实例分配一个逻辑 ID,以便 OSVM CLI 可以在内部进行管理。
    • '--image unikraft_tool_executor': 指定要运行的 Unikernel 镜像名称,即预先构建好的工具执行器镜像。
  • 'args': 一个可选的字符串数组,包含传递给 'command' 的额外参数。在此配置中为空。
  • 'description': 对该 MCP 服务器功能和用途的简要描述。

基本使用方法

  1. 启动 Unikernel 工具执行器: MCP 客户端或其宿主侧代理(例如 'osvm-cli' 的 MCP 服务)会根据上述配置启动 Unikernel 工具执行器。一旦启动,它会在宿主机的 'vsock' 端口 '5252' 上监听连接。

  2. 发送工具调用请求: LLM 客户端可以通过 'osvm-cli' 提供的 MCP 客户端功能,向此 Unikernel 工具执行器发送 JSON-RPC 格式的 'tools/call' 请求。例如,要调用一个名为 'echo' 的工具:

    {
      "jsonrpc": "2.0",
      "id": 1,
      "method": "tools/call",
      "params": {
        "name": "echo",
        "arguments": {
          "message": "Hello from LLM!"
        }
      }
    }

    Unikernel 将会接收此请求,执行 'echo' 工具(此工具的实际逻辑由 Unikernel 内置或进一步代理),然后返回一个包含工具执行结果的 JSON-RPC 响应。

  3. 接收工具执行结果: 工具执行器将返回如下格式的 JSON-RPC 响应:

    {
      "jsonrpc": "2.0",
      "id": 1,
      "result": {
        "status": "executed_in_unikernel",
        "tool": "echo",
        "server": "test_server",
        "isolation": "unikraft",
        "message": "Tool executed in isolated unikernel environment",
        "echo_result": "Hello from LLM!"
      }
    }

    此响应会包含工具的执行状态、结果数据以及隔离环境的相关信息。

信息

分类

AI与计算