使用说明
vmware mcp服务器
A. 模型上下文协议(MCP)服务器 让Claude通过内置的REST API直接控制VMware Workstation Pro(vmrest.exe).打开和关闭虚拟机、拍摄快照、查询IP地址、管理网络——所有这些都来自与Claude的自然语言对话。
人工智能生成项目 -此服务器完全由以下人员设计和编写 克劳德 (人类学)在现场对话中。没有代码是手写的。请参阅 起源故事 在......下面
特性
- 列出所有已注册的VM及其当前电源状态
- 打开、关闭、关闭、挂起、暂停和取消暂停虚拟机
- 获取正在运行的虚拟机的IP地址(通过VMware工具)
- 拍摄、列出和删除快照
- 检查VM硬件配置(CPU、RAM、NIC)
- 列出所有虚拟网络
需求
- Windows 10/11
- VMware Workstation 专业版 (在v17上测试)
- Node.js v18或更高版本
- 克劳德桌面版
- 安装在来宾VM内的VMware工具(用于IP报告和来宾命令)
设置
1.启用VMware Workstation REST API
打开终端并运行:
vmrest --config
按照提示设置用户名和密码。然后启动API服务器:
vmrest
它应该打印 Serving HTTP on 127.0.0.1:8697。让这个终端打开。
密码策略: vmrest强制执行复杂性要求。使用大写、小写、数字和特殊字符的组合(例如。
MyPass@123).
2.克隆此仓库
git clone https://github.com/cyberedgit/vmware-mcp-server.git
cd vmware-mcp-server
npm install
3.设置环境变量
服务器从环境变量中读取凭据-凭据是 从不 硬编码。
$env:VMREST_USERNAME = "your_vmrest_username"
$env:VMREST_PASSWORD = "your_vmrest_password"
$env:VMREST_PORT = "8697"
要使这些成为永久性的,请通过以下方式添加它们 系统属性>环境变量.
4.在克劳德桌面注册
编辑 %APPDATA%\Claude\claude_desktop_config.json 并在里面添加以下内容 mcpServers:
"vmware": {
"command": "node",
"args": ["C:\\path\\to\\vmware-mcp-server\\src\\server.js"],
"env": {
"VMREST_USERNAME": "your_vmrest_username",
"VMREST_PASSWORD": "your_vmrest_password",
"VMREST_PORT": "8697"
}
}
5.重新启动克劳德桌面
完全退出Claude(系统托盘>退出)并重新启动。这 vmware 服务器将出现在您的工具中。
可用工具
|工具|说明| |---|---| | list_vms |列出所有VM,包括ID、名称、路径和电源状态| | get_vm |获取特定VM的详细信息(CPU、RAM、NIC)| | get_vm_power |获取虚拟机的当前电源状态| | power_on_vm |打开或恢复虚拟机| | power_off_vm |强制关闭虚拟机(硬停止)| | shutdown_vm |通过VMware工具优雅地关闭| | suspend_vm |暂停正在运行的虚拟机| | pause_vm |暂停正在运行的虚拟机| | unpause_vm |取消暂停VM的暂停| | get_vm_ip |获取正在运行的VM的IP地址(需要VMware Tools)| | list_snapshots |列出VM的所有快照| | take_snapshot |使用名称和可选描述创建快照| | delete_snapshot |按ID删除快照| | list_vm_networks |列出连接到VM的所有网络适配器| | list_networks |列出VMware Workstation中的所有虚拟网络|
更进一步-通过vmrun完全控制虚拟机内部
MCP服务器处理 管理程式级 -电源、快照、网络。但真正的力量来自于你将其与 vmrun,VMware的CLI工具,直接通过VMware Tools进行通信以执行命令 里面 正在运行的客户操作系统。
这意味着Claude不仅可以管理虚拟机,还可以在虚拟机内部工作。
vmrun支持什么
在来宾中运行任何命令:
vmrun -T ws -gu username -gp password runProgramInGuest "C:\path\to\vm.vmx" /bin/bash -c "whoami"
将文件从主机复制到VM中:
vmrun -T ws -gu username -gp password copyFileFromHostToGuest "vm.vmx" "C:\script.sh" "/tmp/script.sh"
将输出从VM中复制回来:
vmrun -T ws -gu username -gp password copyFileFromGuestToHost "vm.vmx" "/tmp/output.txt" "C:\output.txt"
列出来宾内部正在运行的进程:
vmrun -T ws -gu username -gp password listProcessesInGuest "vm.vmx"
全链条
一旦此MCP服务器连接到Claude,完整的工作流程如下:
You (natural language)
-> Claude
-> vmware-mcp-server -> vmrest API -> Power on VM, get IP, snapshots
-> PowerShell MCP -> vmrun -> Execute commands inside guest OS
创建此项目的会话中的一个真实示例:Claude启动了一个挂起的Ubuntu VM,等待VMware Tools报告IP,然后使用 vmrun 在客户机中安装OpenSSH并确认其正在运行——所有这些都不需要直接接触虚拟机,也不需要虚拟机当时打开任何网络端口。
vmrun客户机命令的要求
- VMware工具必须 已安装并正在运行 在客人内部
- 有效的客户操作系统凭据(VM内的Linux/Windows用户名和密码)
- 即使VM没有网络适配器,它也能工作-直接通过管理程序进行通信
进入虚拟机-方法比较
|方法|最适合|需要| |---|---|---| | vmrun |任何客户操作系统,无需网络|VMware工具+客户凭据| |SSH | Linux虚拟机| SSH服务器正在运行,网络连接| |WinRM | Windows虚拟机|启用WinRM,网络连接| vmrun 是建议的起点-零网络依赖性,在VMware Tools运行时即可使用。
Docker/VM部署所需的Windows端口代理: 默认情况下,vmrest绑定到
127.0.0.1只有。要将其暴露给VM或Docker容器,请在Windows上以管理员身份运行以下命令:netsh interface portproxy add v4tov4 listenaddress=192.168.244.1 listenport=8697 connectaddress=127.0.0.1 connectport=8697 New-NetFirewallRule -DisplayName vmrest-proxy-8697 -Direction Inbound -Protocol TCP -LocalPort 8697 -LocalAddress 192.168.244.1 -Action Allow替换
192.168.244.1使用您的VMware NAT适配器IP(获取NetIP地址|接口连接的位置-类似'威睿').
安全说明
- 凭据仅通过环境变量传递,切勿将其提交给源代码管理
- vmrest API仅侦听
localhost:8697-默认情况下不暴露在网络中 - 这
.gitignore明确排除vmrest.cfg和.env文件
依赖项
|软件包|版本|作者|许可证| |---|---|---|---| | @modelcontextprotocol/sdk |^1.12.1 |人类学,PBC |麻省理工学院| | zod |^ 3.22.0 |科林·麦克唐纳|麻省理工学院| 这两个软件包都是MIT许可的,得到了积极的维护,并且没有已知的漏洞(npm audit 清洁)。
起源故事
这个项目没有计划。
我试图理解MCP的实际作用。我原以为在Claude Desktop中启用它可以让Claude广泛访问我的电脑——事实证明这是完全错误的。克劳德解释说,MCP是一个协议,而不是一个许可系统。每个服务器都是一个单独的连接器,只公开它明确构建的内容。在不安装任何服务器的情况下启用MCP绝对没有任何作用。
这个解释引发了一个问题:我们能把Claude连接到VMware Workstation吗?我的机器上有17个虚拟机,无法从Claude控制它们。我们搜索了现有的MCP服务器,但没有。我们发现的每个社区项目都是针对企业vCenter/ESXi的,没有针对桌面产品的。
所以我们建了一个。
Claude研究了VMware Workstation REST API(vmrest.exe),它内置于Workstation Pro中,但很少使用。在此过程中,我们遇到了几堵墙——Windows UAC阻止系统PATH修改,bcrypt密码散列兔洞试图以非交互方式配置vmrest,vmrest密码策略默默拒绝凭据,以及Claude MCP服务器在没有管理员权限的情况下运行。
每个问题都在同一次对话中得到了解决。到最后,克劳德已经:
- 通过REST API在暂停的Ubuntu虚拟机上供电
- 通过VMware工具检索其IP地址
- 使用以下命令在客户机中安装OpenSSH
vmrun没有任何网络访问 - 在正在运行的VM中执行命令并将输出复制回主机 这一切都源于自然语言。没有预先准备的脚本,也没有预先的模板。 此repo是该会话的直接输出。整个代码库由Claude(Anthropic)编写。没有一行是手写的。
免责声明
该项目完全由以下人员设计、架构和编写 克劳德,Anthropic制造的人工智能助手。 人类贡献者指导目标、提供环境并测试结果,但没有编写代码。这是一个现实世界的例子,展示了通过对话而不是计划开发构建的人工智能辅助工具的样子。
许可证
麻省理工学院 -免费使用、修改和分发。看 LICENSE 完整条款。
欢迎捐款。如果您扩展此功能以支持vSphere、ESXi或添加新工具,请打开PR。
