loading…
Search for a command to run...
loading…
Enables MCP-compatible LLMs to interact with any desktop accessible over VNC, providing tools for screen reading (OCR), mouse and keyboard control, and automati
Enables MCP-compatible LLMs to interact with any desktop accessible over VNC, providing tools for screen reading (OCR), mouse and keyboard control, and automation.
🤖🖥 vnc-mcp allows MCP-compatible LLMs to interact with any desktop accessible over VNC
https://github.com/user-attachments/assets/5eff0be6-81f4-4baf-ad67-2f68041a022a
Claude 4 Opus getting comfortable in a Kubuntu X11 session. The real limit to this application of LLMs is now the speed of LLMs: it is possible they could be better at this task if they had reinforcement learning to more efficiently decode embeddings or prefer OCR at all times.
The following DEs and VNC servers have been tested in a VM with virgl acceleration:
VNC is used as opposed to RDP for two reasons:
Although vnc-mcp is a Python package and could theoretically be started with uvx, the best way to use it with an MCP client is with a Docker container.
Docker provides several advantages:
vnc-mcp requires Python 3.12, which may be replaced by 3.13 on modern distributions)If you do not have a docker daemon set up on your host yet, I suggest using rootless podman. See their documentation for setup.
If you decide to go with a rootless docker or podman approach, please be mindful to set the DOCKER_HOST or CONTAINER_HOST environment variables respectively.
If your UID is 1000, a rootless podman socket address would be unix:///run/user/1000/podman/podman.sock and a rootless docker socket address would be unix:///run/user/1000/docker.sock (unless you configure them in another way).
With podman, you must then additionally install the Docker CLI (available as docker-cli in most distribution repositories) and make sure the DOCKER_HOST environment variable is configured to point to your podman sock.
The below configuration is given in mcphost/Claude Desktop format. Be sure to correctly configure the environment variables in the env block to match your setup.
The docker container will automatically update itself and operate with the host's network (useful for getting localhost as the host without any trickery).
{
...
"mcpServers": {
...
"desktop": {
"command": "docker",
"args": [
"run",
"--env", "VNCMCP_HOST",
"--env", "VNCMCP_PORT",
"--env", "VNCMCP_TIMEOUT",
"--env", "VNCMCP_USERNAME",
"--env", "VNCMCP_PASSWORD",
"-i",
"--rm",
"--pull=always",
"--network=host",
"ghcr.io/regulad/vnc-mcp:latest"
],
"env": {
"DOCKER_HOST": "unix:///run/user/1000/podman/podman.sock",
"VNCMCP_HOST": "localhost",
"VNCMCP_PORT": "5900",
"VNCMCP_TIMEOUT": "15.0",
"VNCMCP_USERNAME": "regulad",
"VNCMCP_PASSWORD": "ChangeMeImInsecure!!"
}
},
...
},
...
},
Please see the Command-line Reference for details.
Contributions are very welcome. To learn more, see the Contributor Guide.
Test with nox, but if you want to interactively test mcp, do this:
npx @modelcontextprotocol/inspector poetry run vnc-mcp
Distributed under the terms of the AGPL 3.0 or later license, vnc-mcp is free and open source software.
If you encounter any problems, please file an issue along with a detailed description.
Выполни в терминале:
claude mcp add vnc-mcp -- npx Безопасность
Низкий рискАвтоматическая эвристика по публичным данным — не гарантия безопасности.