🤖 ⚡️ MCP server ( MacOS) — control remote desktops via VNC
Setup
Choose your client, copy the config, then fill in any required environment variables.
claude mcp add claude-kvm --env VNC_HOST='<VNC_HOST>' --env VNC_PORT='<VNC_PORT>' --env VNC_USERNAME='<VNC_USERNAME>' --env VNC_PASSWORD='<VNC_PASSWORD>' --env CLAUDE_KVM_DAEMON_PATH='<CLAUDE_KVM_DAEMON_PATH>' --env VNC_AUTH='<VNC_AUTH>' -- npx -y claude-kvm~/.codex/config.toml
[mcp_servers.claude-kvm]
command = "npx"
args = ["-y", "claude-kvm"]
env = { VNC_HOST = "<VNC_HOST>", VNC_PORT = "<VNC_PORT>", VNC_USERNAME = "<VNC_USERNAME>", VNC_PASSWORD = "<VNC_PASSWORD>", CLAUDE_KVM_DAEMON_PATH = "<CLAUDE_KVM_DAEMON_PATH>", VNC_AUTH = "<VNC_AUTH>" }
# codex mcp add claude-kvm --env VNC_HOST='<VNC_HOST>' --env VNC_PORT='<VNC_PORT>' --env VNC_USERNAME='<VNC_USERNAME>' --env VNC_PASSWORD='<VNC_PASSWORD>' --env CLAUDE_KVM_DAEMON_PATH='<CLAUDE_KVM_DAEMON_PATH>' --env VNC_AUTH='<VNC_AUTH>' -- npx -y claude-kvm~/.cursor/mcp.json
{
"mcpServers": {
"claude-kvm": {
"command": "npx",
"args": [
"-y",
"claude-kvm"
],
"env": {
"VNC_HOST": "<VNC_HOST>",
"VNC_PORT": "<VNC_PORT>",
"VNC_USERNAME": "<VNC_USERNAME>",
"VNC_PASSWORD": "<VNC_PASSWORD>",
"CLAUDE_KVM_DAEMON_PATH": "<CLAUDE_KVM_DAEMON_PATH>",
"VNC_AUTH": "<VNC_AUTH>"
}
}
}
}.vscode/mcp.json
{
"servers": {
"claude-kvm": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"claude-kvm"
],
"env": {
"VNC_HOST": "<VNC_HOST>",
"VNC_PORT": "<VNC_PORT>",
"VNC_USERNAME": "<VNC_USERNAME>",
"VNC_PASSWORD": "<VNC_PASSWORD>",
"CLAUDE_KVM_DAEMON_PATH": "<CLAUDE_KVM_DAEMON_PATH>",
"VNC_AUTH": "<VNC_AUTH>"
}
}
}
}~/.gemini/settings.json
{
"mcpServers": {
"claude-kvm": {
"command": "npx",
"args": [
"-y",
"claude-kvm"
],
"env": {
"VNC_HOST": "<VNC_HOST>",
"VNC_PORT": "<VNC_PORT>",
"VNC_USERNAME": "<VNC_USERNAME>",
"VNC_PASSWORD": "<VNC_PASSWORD>",
"CLAUDE_KVM_DAEMON_PATH": "<CLAUDE_KVM_DAEMON_PATH>",
"VNC_AUTH": "<VNC_AUTH>"
}
}
}
}claude_desktop_config.json
{
"mcpServers": {
"claude-kvm": {
"command": "npx",
"args": [
"-y",
"claude-kvm"
],
"env": {
"VNC_HOST": "<VNC_HOST>",
"VNC_PORT": "<VNC_PORT>",
"VNC_USERNAME": "<VNC_USERNAME>",
"VNC_PASSWORD": "<VNC_PASSWORD>",
"CLAUDE_KVM_DAEMON_PATH": "<CLAUDE_KVM_DAEMON_PATH>",
"VNC_AUTH": "<VNC_AUTH>"
}
}
}
}.trae/mcp.json
{
"mcpServers": {
"claude-kvm": {
"command": "npx",
"args": [
"-y",
"claude-kvm"
],
"env": {
"VNC_HOST": "<VNC_HOST>",
"VNC_PORT": "<VNC_PORT>",
"VNC_USERNAME": "<VNC_USERNAME>",
"VNC_PASSWORD": "<VNC_PASSWORD>",
"CLAUDE_KVM_DAEMON_PATH": "<CLAUDE_KVM_DAEMON_PATH>",
"VNC_AUTH": "<VNC_AUTH>"
}
}
}
}Environment variables
VNC_HOSTVNC_PORTVNC_USERNAMEVNC_PASSWORDCLAUDE_KVM_DAEMON_PATHVNC_AUTH
Replace the placeholders with your own credentials and keep them out of version control.