MCP 服务器
给你的 AI 编程代理
一台它自己的电脑
Kyvenza 内置了 MCP 服务器。把 Claude Code 或任意 MCP 客户端接上去,代理就能启动虚拟机、动手前先打快照、在客体里执行命令、查看屏幕画面。这不是在虚拟机管理器上硬塞一个聊天窗口,而是把整台机器交给它,同时配好护栏,让「交出去」这件事变得合情合理。
为什么用虚拟机,而不是容器
能执行 shell 命令的代理,需要一个碰不到你的钥匙串、SSH 密钥和生产环境凭据的地方。虚拟机的边界由操作系统强制执行,而不是靠工具链的一句承诺。容器给不了的东西,Kyvenza 补上了:几秒内就能回滚的快照,几乎不占磁盘的一次性克隆,以及一种彻底没有网络的网络模式。
一分钟左右接好
打开服务器
进入「设置」→「自动化」。你不手动打开,它就一直是关的。
复制端点地址
地址里已经带着这台 Mac 的令牌。一个 URL 就是全部凭据,所以任何能填 URL 的客户端都能接入。
粘贴到你的客户端
Claude Code 只需要一条命令。读取 JSON 配置的客户端,设置页也会直接生成对应的配置片段。
Claude Code
claude mcp add --transport http kyvenza http://127.0.0.1:59800/mcp/YOUR-TOKEN旁边有个「测试连接」按钮,会对你自己的端点做一次真实握手,并报告找到了多少个工具。「我到底配对了没有」当场就有答案,不用等到之后某次工具调用失败才发现。
怎样防止代理把你的 Mac 搞坏
服务器只待在回环接口上
它只绑定 127.0.0.1,别的一概不绑。局域网里的设备看不到它,互联网上的任何东西也看不到。
每台 Mac 都有自己的令牌
这一条值得讲细一点,因为威胁是真实存在的,不是纸上谈兵。QEMU 的用户模式网络会把客体发往 10.0.2.2 的任何流量,转成对宿主机回环接口的连接。也就是说,一台正在运行的 Windows 客体可以访问你 Mac 上绑定在 127.0.0.1 的服务,包括这个 MCP 服务器。所以端点必须带上一个 128 位令牌,放在 URL 路径里或 Authorization 请求头里都行;不带令牌的请求只会拿到一个 401,别的什么都没有。也没有任何「兼容模式」能把这层校验关掉。
会造成破坏的工具默认关闭
在你启用之前,create_vm、clone_vm 和 delete_vm 根本不会出现在工具列表里。模型看不见的工具,它就不会去尝试——这比事后拒绝调用要可靠得多。
delete_vm 只删它自己造出来的东西
凡不是由 clone_vm 创建的沙箱,它一律拒绝删除。真正删掉的也只是移到废纸篓,而不是直接抹除——代理删错东西时,必须还能撤销。
代理动手之前,先打一个快照
代理通过 MCP 启动虚拟机时,Kyvenza 会先打一个快照,并在同一次响应里告诉它,让代理知道可以回滚到哪里。你自己在界面里启动虚拟机则不会这样做。这是为自动化准备的安全机制,不是在后台悄悄占满磁盘。
一台完全没有网络的机器
任何虚拟机都可以设为隔离网络。在装了 Kyvenza 客体代理的 Linux 上,断网之后照样能执行命令、截屏,因为这条通道走的是虚拟套接字,不是网络。
十五个工具
其中三个(下表已标注)在你开启破坏性工具之前一直处于隐藏状态。
| 工具 | 作用 |
|---|---|
list_vms | 列出所有虚拟机及其系统、状态、CPU 和内存 |
get_vm_status | 状态、IP 地址、显示分辨率和网络模式 |
get_vm_ip | 运行中虚拟机的客体 IP 地址 |
start_vm | 启动已停止的虚拟机,启动前先打快照 |
stop_vm | 停止运行中的虚拟机,未另行指定时正常关机 |
restart_vm | 重启运行中的虚拟机 |
suspend_vm | 把客体内存写入磁盘后关机,下次从原处继续仅限 Linux。macOS 和 Windows 请用 stop_vm。 |
list_snapshots | 列出虚拟机的快照,并标出哪些是自动创建的 |
take_snapshot | 为已停止的虚拟机打离线快照 |
restore_snapshot | 把已停止的虚拟机恢复到某个快照,覆盖当前磁盘 |
exec_shell | 在客体里执行一条命令,返回退出码、stdout 和 stderr装了客体代理的 Linux 客体既不需要网络地址,也不需要 SSH。macOS 走 SSH。Windows 走 SSH,经由一个只绑定回环接口的转发端口,前提是已在客体里运行过一次驱动安装程序。 |
screenshot | 客体屏幕的 PNG 截图Windows 客体在宿主机一侧截取,不用装任何东西,不需要网络地址,也不用开着显示窗口。装了 agent 的 Linux 客体连显示服务器都不需要,因为 agent 直接读取内核帧缓冲。macOS 需要有一个已登录的图形会话。 |
clone_vm默认关闭 | 把已停止的虚拟机复制成一次性沙箱,几乎瞬间完成,几乎不占磁盘 |
create_vm默认关闭 | 新建一台空机器,不含任何操作系统 |
delete_vm默认关闭 | 把 clone_vm 创建的沙箱移到废纸篓 |
最适合的三种用法
运行你信不过的东西
把一台准备好的虚拟机克隆成沙箱,让代理在里面跑安装程序或脚本,读取结果,然后删掉沙箱。克隆采用写时复制,大约一秒就出现,在客体开始写入之前几乎不占磁盘。Kyvenza 还会自己回收过期的沙箱,就算代理忘了清理,你的虚拟机列表也不会被它们塞满。
在真正的 Windows 上检查构建
代理可以通过一个只绑定回环接口的转发端口,在 Windows 11 on ARM 客体里执行命令,还能在客体内什么都不装的情况下截屏。当你想知道的是应用在 Windows 上实际长什么样、而不是测试套件怎么说时,这就派上用场了。
在拔掉网线的机器上干活
把 Linux 虚拟机设为隔离网络,它就连网卡都没有了。客体代理依然能响应命令、依然能截屏,因为它走的是虚拟套接字。代理照常工作,而它运行的代码哪儿也连不出去。
它做不到的事
- create_vm 给你的是一台空机器。安装操作系统是一个需要交互的过程,无法通过 MCP 驱动,所以真正关键的工具是从准备好的虚拟机执行 clone_vm。
- 要在 Windows 客体里执行命令,需要先在 Windows 内运行一次 Kyvenza 驱动安装程序,而第一次运行时虚拟机必须能访问互联网。
- Windows 客体的 SSH 用户名只能是纯 ASCII。Windows 本身允许账户名里带引号、空格或 shell 元字符,但 OpenSSH 会拒绝这类账户名。
- 通过 MCP 打的快照只包含磁盘,而且要求虚拟机处于停止状态。保存运行中机器的内存状态仍然需要手动操作。
- 给 macOS 客体截屏,需要有人已经登录进图形会话。
为什么 app 里没有聊天框
我们认真考虑过做一个,最后决定不做,理由有三条,不妨直说。Kyvenza 是一次性买断,而推理按 token 计费,这笔账算不过来。一个能在客体里执行任意命令的内置助手,会同时牵扯出隐私披露、数据收集声明和年龄分级。再者,你已经在用的客户端,做客户端这件事肯定比我们随虚拟化 app 附带的任何东西都强。所以对话留在你原本的地方,我们负责造好它对话的那台机器。
用你手头这台 Mac 试试看
MCP 服务器包含在每一个版本里,Mac App Store 版和官网直接下载版都有。7 天试用同样可以用。