Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-qemu-labStart the VM and take a full guest RAM dump for forensic analysis."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-qemu-lab
Local Model Context Protocol (MCP) server for Linux binary analysis in QEMU guests.
This server runs over STDIO, is safe by default, and exposes tools for:
VM lifecycle (create/start/stop/snapshots)
Full guest RAM dumps
In-guest debugger workflows and per-process core dumps
Artifact indexing/resources (metadata in tool output, file content via MCP resources)
Repository Layout
mcp_qemu_lab/server sourcetests/unit/integration testspyproject.tomlpackage + entrypointuv.lockpinned Python dependency lock file
Not tracked in git:
runtime workspaces/logs/artifacts (
.mcp-qemu-lab*/)local virtual envs (
.venv/)local tool caches (
tools/)local sample binaries (
test samples/)
Host Requirements
Python 3.11+
uvpackage managerQEMU (
qemu-system-x86_64andqemu-img)OpenSSH client tools (
ssh,scp,ssh-keygen)
Install Host Dependencies
Windows
Install
uv:
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"Install QEMU (includes
qemu-system-x86_64.exeandqemu-img.exe):
winget install --id QEMU.QEMU --exact --accept-package-agreements --accept-source-agreementsEnsure OpenSSH Client is installed:
Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0Verify:
qemu-system-x86_64 --version
qemu-img --version
ssh -VLinux (Ubuntu/Debian)
sudo apt update
sudo apt install -y qemu-system-x86 qemu-utils openssh-client cloud-image-utilsLinux (Fedora/RHEL family)
sudo dnf install -y qemu-system-x86 qemu-img openssh-clients cloud-utilsLinux (Arch)
sudo pacman -S --needed qemu-base qemu-desktop openssh cloud-utilsRun From GitHub URL (No Local Project Path Needed)
You can launch directly from GitHub with uvx:
uvx --from git+https://github.com/Kevin4562/QEMU-MCP.git mcp-qemu-labRecommended pin (branch/tag/commit):
uvx --from git+https://github.com/Kevin4562/QEMU-MCP.git@main mcp-qemu-labMCP Client Configuration
VSCode Codex (TOML)
Example config.toml:
Windows:
[mcp_servers.mcp-qemu-lab]
command = "uvx"
args = ["--from", "git+https://github.com/Kevin4562/QEMU-MCP.git@main", "mcp-qemu-lab"]
env = { MCP_QEMU_LAB_WORKSPACE = "C:\\Users\\User\\AppData\\Local\\mcp-qemu-lab" }Linux:
[mcp_servers.mcp-qemu-lab]
command = "uvx"
args = ["--from", "git+https://github.com/Kevin4562/QEMU-MCP.git@main", "mcp-qemu-lab"]
env = { MCP_QEMU_LAB_WORKSPACE = "/home/user/.local/share/mcp-qemu-lab" }Cursor (JSON)
Example mcp.json:
{
"mcpServers": {
"mcp-qemu-lab": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Kevin4562/QEMU-MCP.git@main",
"mcp-qemu-lab"
],
"env": {
"MCP_QEMU_LAB_WORKSPACE": "/absolute/path/to/mcp-qemu-lab-workspace"
}
}
}
}Windows workspace example:
{
"mcpServers": {
"mcp-qemu-lab": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Kevin4562/QEMU-MCP.git@main",
"mcp-qemu-lab"
],
"env": {
"MCP_QEMU_LAB_WORKSPACE": "C:\\Users\\User\\AppData\\Local\\mcp-qemu-lab"
}
}
}
}Safety Defaults
Guest networking default:
net_mode="none"No host directory sharing by default
guest_execallowlist unlessunsafe_allow_arbitrary_commands=trueper callTool outputs return JSON metadata only (no raw memory bytes)
Artifacts are stored on disk and exposed via MCP resources
Every tool call writes audit JSONL entries
Key Tools
ensure_dependenciesvm_create,vm_start,vm_status,vm_stopvm_snapshot_save,vm_snapshot_loadguest_wait_readyguest_exec,guest_copy_in,guest_copy_outprocess_list,process_mapsdebugger_attach,debugger_set_breakpoint,debugger_continue,debugger_read_registers,debugger_detachprocess_dump_coreguest_dump_memoryartifacts_listvm_logs_tail
Resources
artifact://{artifact_id}artifact contentartifact-index://allartifact metadata index
Development Setup (Optional Local Clone Workflow)
If you are developing this repo locally:
uv sync
uv run --extra dev pytest -qIntegration test (real VM boot):
MCP_QEMU_LAB_RUN_INTEGRATION=1 MCP_QEMU_LAB_INTEGRATION_TIMEOUT_SEC=1800 uv run --extra dev pytest -m integrationWindows PowerShell:
$env:MCP_QEMU_LAB_RUN_INTEGRATION = "1"
$env:MCP_QEMU_LAB_INTEGRATION_TIMEOUT_SEC = "1800"
uv run --extra dev pytest -m integrationTroubleshooting
dependency_missing: install QEMU/OpenSSH and verify binaries are onPATH.dependency_privilege_required: rerun install command with elevated permissions.ssh_unavailable: VM must be created withnet_mode="user"for SSH-based tools.gdb/attach failures: runguest_wait_ready(..., require_gdb=true)before debugger/core tools.
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.