MCP Virtual Computer runs on your own machine — the client starts it, so there is no endpoint to ping. 106 installs a week from pypi. Last commit 23 Oct 2026.
A persistent Docker or Fly computer with a Three.js interface and optional live Xfce desktop.
We read the source, 1 d ago · rules 995398eba69f
What this server is able to do. For an MCP server this is often the job itself — a terminal server runs commands because that is what it is for. Listed so you know what you are plugging in, not as an accusation.
async def exec(self, request: ExecRequest) -> ExecResult:
return subprocess.run(
use_shell = True
return posixpath.normpath(posixpath.join(workspace_directory, value))
- /var/run/docker.sock:/var/run/docker.sock
Is this your server and something here is wrong? Tell us — corrections are free and do not require a plan.
We found places where it runs commands, builds paths or queries from values it is given. None of that is a flaw by itself — it becomes one when the code changes, and code changes quietly between releases. We re-read it on every one.
This server runs on your own machine — install it with the package manager and the client starts it for you. Package name taken from the official registry entry.
claude mcp add mcp-virtual-computer -e 'COMPUTER_ID=<COMPUTER_ID>' -- uvx mcp-virtual-computer
{
"mcpServers": {
"mcp-virtual-computer": {
"command": "uvx",
"args": [
"mcp-virtual-computer"
],
"env": {
"COMPUTER_ID": "<COMPUTER_ID>"
}
}
}
}
[mcp_servers.mcp-virtual-computer]
command = "uvx"
args = ["mcp-virtual-computer"]
env = { COMPUTER_ID = "<COMPUTER_ID>" }
{
"mcpServers": {
"mcp-virtual-computer": {
"command": "uvx",
"args": [
"mcp-virtual-computer"
],
"env": {
"COMPUTER_ID": "<COMPUTER_ID>"
}
}
}
}
{
"servers": {
"mcp-virtual-computer": {
"type": "stdio",
"command": "uvx",
"args": [
"mcp-virtual-computer"
],
"env": {
"COMPUTER_ID": "<COMPUTER_ID>"
}
}
}
}
Put your own value in place of
<COMPUTER_ID> (Stable identity of the one persistent computer).
The author’s registry entry marks it as required.
Optional settings from the registry entry, left out of the block above:
BACKEND (Computer provider. Use docker for a local container or fly for a permanent Fly Machine), DESKTOP_ENVIRONMENT (Start the real Xfce desktop instead of the virtual desktop), NETWORK_ACCESS (Allow outbound network access from the computer), AUTO_INSTALL_DOCKER (On Windows, install and start Docker Desktop lazily when needed), AUTO_INSTALL_FLYCTL (Download flyctl into the user profile when it is missing), FLY_API_TOKEN (Optional Fly API token. A cached flyctl login is also supported), EXPOSE_LIFECYCLE_TOOLS (Also expose runtime status and network/desktop switching tools to the model. The MCP App can always use them).
Named Docker and Fly Machine sandbox computers with an interactive MCP App dashboard.
Give any LLM its own computer — Docker sandboxes with bash, browser, docs, and sub-agents
Persistent Docker/SSH sandbox for AI agents: shell exec, file ops, audit log.
Hot-reload for MCP servers + mount any community server mid-session, Docker optional. No restarts.
MCP server providing Docker Desktop release notes and security information.
Reads a Dockerfile or compose file and names the hardening controls it fails, with the NIST SP 800-1
Hosts, metrics, Docker and authorized_keys over a macOS terminal's live SSH connections
REA reverse-engineering MCP server in Docker, with JADX, Apktool and adb for APKs.
Answers built from our own checks of this server.