VMware工作站MCP服务器
用于在Linux上控制VMware Workstation虚拟机的MCP服务器。适用于Claude Code、Claude Desktop或任何MCP客户端。
设置
添加 ~/.claude.json (或使用 claude mcp add):
{
"mcpServers": {
"vmware": {
"command": "python3",
"args": ["/path/to/vmware_mcp.py"]
}
}
}
串行控制台
启用 send_text / read_serial,在中配置VM的串行端口 .vmx 文件:
serial0.fileType = "network"
serial0.fileName = "telnet://127.0.0.1:4321"
serial0.present = "TRUE"
serial0.yieldOnMsrRead = "TRUE"
客户操作系统必须轮询COM1以获取输入。
工具(34)
VM资源清册
| 工具 |
说明 |
list_running_vms |
列出正在运行的虚拟机 |
list_all_vms |
发现系统上的所有虚拟机 |
get_vm_info |
详细的VM配置(CPU、RAM、磁盘、NIC) |
电源管理
| 工具 |
说明 |
start_vm |
开机(gui或nogui) |
stop_vm |
电源关闭(软/硬) |
suspend_vm |
挂起到磁盘 |
reset_vm |
重新启动 |
pause_vm / unpause_vm |
暂停/恢复 |
快照
| 工具 |
说明 |
list_snapshots |
列出所有快照 |
create_snapshot |
创建命名快照 |
revert_to_snapshot |
还原到快照 |
delete_snapshot |
删除快照 |
屏幕捕获
| 工具 |
说明 |
capture_screen |
通过X11窗口捕获的屏幕截图(无需工具),保存到 ~/Desktop/ |
串行控制台
| 工具 |
说明 |
send_text |
向VM控制台发送文本,返回响应 |
read_serial |
从捕获的串行输出中读取最后N个字符 |
read_new_serial |
只读上次读取后的新输出 |
服务器与64KB环形缓冲区保持持久串行连接,该缓冲区在后台捕获所有VM输出。
客户操作(需要VMware工具)
| 工具 |
说明 |
get_guest_ip |
获取访客IP地址 |
run_program_in_guest |
执行程序 |
run_script_in_guest |
执行脚本 |
list_processes_in_guest |
列出流程 |
kill_process_in_guest |
终止一个进程 |
copy_file_to_guest |
主机->客户文件副本 |
copy_file_from_guest |
访客->主机文件副本 |
list_directory_in_guest |
列出目录内容 |
file_exists_in_guest |
检查文件是否存在 |
其他
| 工具 |
说明 |
add_shared_folder / remove_shared_folder |
管理共享文件夹 |
clone_vm |
克隆虚拟机(完整或链接) |
install_tools / check_tools_state |
VMware工具管理 |
read_variable / write_variable |
VM变量 |
需求
- VMware Workstation Pro(Linux)
vmrun 在PATH中
- Python 3.10+
xdotool +ImageMagick(用于 capture_screen)
- 访客串行输入支持(用于
send_text)