mcp-vnc MCP Server

Local setup required. This server has to be cloned and prepared on your machine before you register it in Claude Code.
1

Set the server up locally

Run this once to clone and prepare the server before adding it to Claude Code.

Run in terminal
npm install -g @hrrrsn/mcp-vnc
2

Register it in Claude Code

After the local setup is done, run this command to point Claude Code at the built server.

Run in terminal
claude mcp add -e "VNC_HOST=${VNC_HOST}" -e "VNC_PORT=${VNC_PORT}" -e "VNC_PASSWORD=${VNC_PASSWORD}" mcp-vnc -- node "<FULL_PATH_TO_MCP_VNC>/dist/index.js"

Replace <FULL_PATH_TO_MCP_VNC>/dist/index.js with the actual folder you prepared in step 1.

Required:VNC_HOSTVNC_PORTVNC_PASSWORD
README.md

Remotely control Windows, Linux, and macOS systems via VNC

💻 mcp-vnc

A Model Context Protocol (MCP) server that enables AI agents to remotely control Windows, Linux, macOS or anything else that can run a VNC server (don't worry, it's probably fine).

Screenshot

🚀 Quick Start

Install from NPM

npm install -g @hrrrsn/mcp-vnc

Install from Source

git clone https://github.com/hrrrsn/mcp-vnc
cd mcp-vnc
npm install
npm run build

⚙️ Configuration

Claude Desktop

  1. Locate and open your Claude Desktop configuration file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. Add the following configuration:

Using NPM Install:

{
  "mcpServers": {
    "vnc-controller": {
      "type": "stdio",
      "command": "mcp-vnc",
      "env": {
        "VNC_HOST": "192.168.1.100",
        "VNC_PORT": "5900",
        "VNC_PASSWORD": "your-vnc-password"
      }
    }
  }
}

Built from Source:

{
  "mcpServers": {
    "vnc-controller": {
      "type": "stdio",
      "command": "node",
      "args": ["dist/index.js"],
      "cwd": "/path/to/mcp-vnc",
      "env": {
        "VNC_HOST": "192.168.1.100",
        "VNC_PORT": "5900",
        "VNC_PASSWORD": "your-vnc-password"
      }
    }
  }
}

VS Code

Please refer to the VS Code documentation

🛠️ Available Tools

The MCP server provides the following tools for remote desktop control:

🖱️ Mouse Control

vnc_click - Click at specified coordinates
Parameter Required Type Description Default
x number X coordinate -
y number Y coordinate -
button string Mouse button (left, right, middle) left
double boolean Double-click instead of single click false

Example: vnc_click(x=100, y=200, button="right", double=true)

vnc_move_mouse - Move mouse cursor
Parameter Required Type Description
x number X coordinate
y number Y coordinate

Example: vnc_move_mouse(x=500, y=300)

⌨️ Keyboard Control

vnc_key_press - Send keys and key combinations
Parameter Required Type Description
key string Key or key combination to press

Supported Keys:

  • Single keys: a, Enter, F1, Escape, Up, Down, Tab, Space
  • Key combinations: Ctrl+c, Alt+F4, Ctrl+Alt+Delete, Shift+Tab
  • Modifiers: Ctrl, Alt, Shift, Super/Win, Meta/Cmd

Examples:

  • vnc_key_press(key="Enter")
  • vnc_key_press(key="Ctrl+Alt+Delete")

📝 Text Input

vnc_type_text - Type single-line text
Parameter Required Type Description Default
text string Text to type -
enter boolean Press Enter after typing false

Example: vnc_type_text(text="Hello World!", enter=true)

vnc_type_multiline - Type multiple lines
Parameter Required Type Description
lines string[] Array of lines to type

Example: vnc_type_multiline(lines=["Line 1", "Line 2", "Line 3"])

📸 Screen Capture

vnc_screenshot - Capture screen
Parameter Required Type Description Default
delay number Delay before screenshot (0-300000ms) 0

Example: vnc_screenshot(delay=1000) - Wait 1 second before capture

🤝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.

Tools (6)

vnc_clickClick at specified coordinates
vnc_move_mouseMove mouse cursor
vnc_key_pressSend keys and key combinations
vnc_type_textType single-line text
vnc_type_multilineType multiple lines
vnc_screenshotCapture screen

Environment Variables

VNC_HOSTrequiredThe IP address or hostname of the VNC server
VNC_PORTrequiredThe port number of the VNC server
VNC_PASSWORDrequiredThe password for the VNC connection

Configuration

claude_desktop_config.json
{"mcpServers": {"vnc-controller": {"type": "stdio", "command": "mcp-vnc", "env": {"VNC_HOST": "192.168.1.100", "VNC_PORT": "5900", "VNC_PASSWORD": "your-vnc-password"}}}}

Try it

Take a screenshot of the current desktop to see what is on the screen.
Move the mouse to coordinates 500, 300 and click the left button.
Type 'Hello World!' into the active window and press Enter.
Send a Ctrl+Alt+Delete command to the remote machine.
Type the following lines into the text editor: ['Line 1', 'Line 2', 'Line 3'].

Frequently Asked Questions

What are the key features of mcp-vnc?

Remote mouse control including clicking and movement. Keyboard input support for single keys and complex combinations. Text input capabilities for single and multi-line strings. Screen capture functionality with configurable delay. Cross-platform compatibility with any VNC-enabled system.

What can I use mcp-vnc for?

Automating repetitive tasks on a remote desktop environment. Assisting with remote troubleshooting by visually inspecting the screen. Interacting with legacy desktop applications that lack an API. Managing remote servers that require GUI-based configuration.

How do I install mcp-vnc?

Install mcp-vnc by running: npm install -g @hrrrsn/mcp-vnc

What MCP clients work with mcp-vnc?

mcp-vnc works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep mcp-vnc docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare