vnc_click
Click at specified coordinates
Drive a remote desktop over VNC by coordinates: click, move, press key combinations, type a line or many at once, and take a screenshot to see the result.
LABSCO SUMMARY
There is no element model here — nothing queries the screen for a button — so every action is a coordinate the caller worked out from the previous vnc_screenshot, and the loop is screenshot-driven by construction. What that buys is reach: an installer, a native desktop app or a BIOS-era dialog is as addressable as a web page, which no browser-based tool can say. vnc_type_multiline and the delay on vnc_screenshot are the two details that keep the loop from being one call per line.
A VNC input server, six tools that send mouse and keyboard events to a remote screen and read it back as a screenshot.
A reachable VNC server, and screen coordinates to act on: the tools address the screen by x and y rather than by element. MIT licensed.
One command plus credentials — npm install -g @hrrrsn/mcp-vnc, then supply credentials
USE CASES
Take a screenshot to see the current dialog, click the button at its coordinates, and use key combinations for the steps that have no clickable target.
Put the cursor where the text belongs, send all the lines in one call rather than one per line, then capture the screen to confirm it landed intact.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
vnc_clickClick at specified coordinates
vnc_key_pressPress a key or key combination
vnc_move_mouseMove mouse to specified coordinates
vnc_screenshotTake a screenshot of the current screen
vnc_type_multilineType multiple lines of text, separated by newlines
vnc_type_textType text string
BEFORE YOU INSTALL
6 tools when we connected. Five tools act on the real machine with no confirmation or undo; only vnc_screenshot reads. There is no scrolling, drag, clipboard or file transfer.
VNC_PASSWORD in your environment
CONTEXT COST
Rated by the size of the 6 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npm install -g @hrrrsn/mcp-vnc{
"mcpServers": {
"vnc-controller": {
"type": "stdio",
"command": "mcp-vnc",
"env": {
"VNC_HOST": "192.168.1.100",
"VNC_PORT": "5900",
"VNC_PASSWORD": "<YOUR_VNC_PASSWORD>"
}
}
}
}git clone https://github.com/hrrrsn/mcp-vnc
cd mcp-vnc
npm install
npm run build{
"mcpServers": {
"vnc-controller": {
"type": "stdio",
"command": "node",
"args": [
"<YOUR_PATH_TO_MCP_VNC>/dist/index.js"
],
"env": {
"VNC_HOST": "192.168.1.100",
"VNC_PORT": "5900",
"VNC_PASSWORD": "<YOUR_VNC_PASSWORD>"
}
}
}
}<YOUR_PATH_TO_MCP_VNC> is the absolute path of your clone, and set VNC_HOST, VNC_PORT and VNC_PASSWORD for the machine you want to control.