Desktop MCP server
Windows desktop-control MCP server: screenshot, window mgmt, mouse/keyboard input, recording.
0 stars
Reviews
Write oneNobody has reviewed Desktop yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Desktop tools (18)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
focus_windowBring a window to the foreground by title substring. Requires DESKTOP_MCP_ENABLE_WINDOW=1.
get_active_windowReturn the currently focused/active window, or null if none.
hotkeyPress a key combination, e.g. ['ctrl', 'c']. Requires DESKTOP_MCP_ENABLE_INPUT=1.
key_pressPress a single key (pyautogui key name, e.g. 'enter', 'a'). Requires DESKTOP_MCP_ENABLE_INPUT=1.
list_windowsList all visible top-level windows with title and bounds.
minimize_windowMinimize a window by title substring. Requires DESKTOP_MCP_ENABLE_WINDOW=1.
mouse_clickClick the mouse at (x, y) or the current position. Requires DESKTOP_MCP_ENABLE_INPUT=1.
mouse_dragDrag the mouse from (x1, y1) to (x2, y2). Requires DESKTOP_MCP_ENABLE_INPUT=1.
mouse_moveMove the mouse cursor to (x, y) in virtual-desktop coordinates. Requires DESKTOP_MCP_ENABLE_INPUT=1.
mouse_scrollScroll the mouse wheel by `clicks` (positive=up) at an optional position. Requires DESKTOP_MCP_ENABLE_INPUT=1.
move_resize_windowMove and resize a window by title substring. Requires DESKTOP_MCP_ENABLE_WINDOW=1.
record_startStart an ffmpeg gdigrab screen recording with a hard max_duration_s cap. Requires DESKTOP_MCP_ENABLE_RECORD=1.
record_statusCheck whether a recording is in progress. Requires DESKTOP_MCP_ENABLE_RECORD=1.
record_stopStop the active recording and return {path, bytes, duration_s}. Requires DESKTOP_MCP_ENABLE_RECORD=1.
restore_windowRestore a minimized window by title substring. Requires DESKTOP_MCP_ENABLE_WINDOW=1.
screenshotCapture a PNG screenshot of a monitor, region, or window. Returns {path, w, h, monitor}.
type_textType a string via simulated keystrokes. Requires DESKTOP_MCP_ENABLE_INPUT=1.
window_infoLook up a window by title substring; returns its bounds and state.
Public scan report
scanner v0.1.9 · 2026-09-24 · same rubric, same numbers if you re-run it
- Code scan11 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 43 days ago12/15
- Maintainer identityregistry namespace matches repository owner6/10
How Desktop compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 85/100
- higher than 70% of 48,273 servers
- Tools
- 18
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
What its tools let an agent do: 17 read · 1 change
Install Desktop in Claude Code, Cursor or VS Code
claude mcp add desktop-mcp -- uvx desktop-mcp
What the publisher says
From the Desktop repository's README, as published. We do not edit it. Read it on GitHub
desktop-mcp
Windows desktop-control MCP server: screenshot, window management, mouse/keyboard input, and ffmpeg screen-recording, config-gated by tool group (input off by default) -- built to the same standard as mcp-factory and rag-mcp: own pyproject, fastmcp server, honest README, real test suite.
Quickstart
pip install desktop-mcp// ~/.claude.json (or any MCP-host stdio client config)
{
"mcpServers": {
"desktop-mcp": {
"command": "desktop-mcp"
// or: "command": "python", "args": ["-m", "desktop_mcp"]
}
}
}window/input/record tool groups are env-gated -- input stays off unless you explicitly opt in. See Env vars below for the full table.
Tool groups
A disabled group returns a structured policyrefusal error (never a silent no-op, never a crash). Input actions are additionally rate-capped (default 60 actions/min, tunable via DESKTOPMCPRATELIMITPERMIN) -- exceeding the cap returns a structured rate_limited error.
This is defense-in-depth: harness-level permission prompts are the first gate, but the server itself refuses input/window/record actions unless its own env explicitly enables them, so a misconfigured or overly-permissive harness can't turn on capabilities the operator didn't opt into for this process.
Security
Read this before you register desktop-mcp. This is a desktop-control server; what it can do to your machine is spelled out here plainly so you can make an informed decision. Honesty about the blast radius is the point.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Desktop: common questions
- Is Desktop MCP server safe?
- Yes, by our scan: it is graded A (85/100). Read the Desktop safety report
- How do I install Desktop?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Desktop need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Desktop maintained?
- The last commit was 82 days ago (2026-08-12). The latest release is v0.1.1.
- What can I use instead of Desktop?
- Servers from other publishers that do the same job: Mobilerun MCP server.
- How does Desktop compare with other MCP servers?
- safety score 85/100 (higher than 70% of 48,273 servers); tools 18 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Desktop
Same job from other publishers: the closest match first, then the best rated.
- MobilerunLet AI agents control Android and iOS devices on Mobilerun Cloud: screen, input, apps, workflows.not reviewedEstablishedA