MCP Qemu Vm MCP Server

A Model Context Protocol (MCP) server for controlling QEMU virtual machines via SSH. This server enables LLMs to interact with VMs through

Local serverstdioPython

What is the MCP Qemu Vm MCP server?

Most browser automation work still happens through a UI a human drives. MCP Qemu Vm MCP server moves it into the conversation instead. A Model Context Protocol (MCP) server for controlling QEMU virtual machines via SSH. This server enables LLMs to interact with VMs through mouse/keyboard control, screenshots, and SSH command execution.

The short version

  • Mouse Control — - Move cursor and click buttons
  • Keyboard Input — - Type text and send key combinations
  • Action Batching — - Execute sequences of UI actions in one call
  • Screenshots — - Capture and retrieve VM screenshots
  • SSH Command Execution — - Run shell commands on the VM
  • File Transfer — - Upload and download files via SFTP

The tools it exposes

The server publishes 2 tools. What each one is for:

  • Problem — Solution
  • Screenshots — Screenshots are saved to the project's screenshots/ folder and exposed as MCP resources at vm://screenshot/{id}

Getting it running

The server ships on PyPI as pillow, so your MCP client can launch it on demand — there is no separate build step. Add the server block to your client's configuration, restart it, and the tools register themselves.

What it needs from you

Configuration is passed through the environment: VM_HOST, VM_USER, VM_PORT, VM_DISPLAY. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.

How it compares

This sits in the browser automation group, where several servers overlap in what they claim to do but differ sharply once you actually set them up. MCP Qemu Vm's toolset — Problem, Screenshots — is a fair guide to whether it matches your workflow. It is maintained by neanderthal; worth a glance at recent repository activity before you build anything load-bearing on it.

We check each listing at SyncDev against the project's documentation before it goes live — if something here drifts out of date, it is a bug worth reporting.

Things to watch

  • It runs with your machine's permissions. That is convenient and also the reason to think about what you point it at before you approve a tool call.
  • Keep per-call confirmation enabled while you learn its behaviour; it is the cheapest safeguard you have.

Available tools

ToolWhat it does
ProblemSolution
ScreenshotsScreenshots are saved to the project's screenshots/ folder and exposed as MCP resources at vm://screenshot/{id}.

How to install the MCP Qemu Vm MCP server

{
  "mcpServers": {
    "qemu-vm": {
      "command": "uvx",
      "args": ["pillow"],
      "env": {
        "VM_HOST": "your-value",
        "VM_USER": "your-value",
        "VM_PORT": "your-value",
        "VM_DISPLAY": "your-value"
      }
    }
  }
}

Add to claude_desktop_config.json, then restart Claude Desktop.

Configuration

VariableDescriptionRequired
VM_HOSTEndpoint or connection string the server talks to.Optional
VM_USERConfiguration value read at startup.Optional
VM_PORTConfiguration value read at startup.Optional
VM_DISPLAYConfiguration value read at startup.Optional

Example prompts to try

  • Use MCP Qemu Vm to Problem.
  • Use MCP Qemu Vm to Screenshots.

Frequently asked questions

It connects MCP Qemu Vm to MCP-compatible AI assistants such as Claude and Cursor, exposing 2 tools (Problem, Screenshots) that the assistant can call on your behalf. Instead of copying data back and forth by hand, the assistant works with MCP Qemu Vm directly.