Winrdp MCP server
io.github.emog33k/winrdp-mcp·v0.1.3·3 starsZero-config server to provision and administer any Windows RDP box over WinRM/SSH/SMB.
3 stars
Reviews
Write oneNobody has reviewed Winrdp yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Winrdp tools (100, 26 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
add_hostRegister a Windows box in the encrypted inventory.
apply_baselineApply a pleasant server baseline: high-performance power plan, no sleep/hibernate, long-path support, hide Server Manager at logon, and optionally set the timezone. Makes a fresh box comfortable to work on. Runs elevated.
build_servercleanup_stagedwrite actionRemove a staged tool by name, or wipe the whole tool cache if name is omitted.
clear_event_logClear a Windows event log. Runs elevated.
clipboard_getRead the clipboard text of the interactive session on a box.
clipboard_setSet the clipboard text of the interactive session on a box.
deploy_ui_agentwrite actionDeploy the interactive-desktop UI agent (winremote-mcp) onto a box for click/type/OCR-level control, and start it as an HTTP MCP endpoint.
download_fileDownload a URL directly onto a box (server-side, TLS 1.2). Returns size + SHA-256.
edit_fileFind/replace inside a text file on a box (literal by default, or `regex`). Returns the number of replacements; set count_only to preview without writing.
enable_sshInstall and start the Windows OpenSSH server on a box, open the firewall, and set PowerShell as the default SSH shell.
enable_winrm(Re)run the WinRM enablement script on a box through the current transport.
failed_logonsRecent failed logon attempts (Security event 4625) — account, source IP, type.
file_copyCopy a file or directory on a box (server-side, no round-trip through operator).
file_deletewrite actionDelete a file or directory on a box.
file_downloadDownload a file from a box to the operator machine.
file_hashCompute a file hash on a box. algorithm: SHA256|SHA1|MD5|SHA384|SHA512.
file_listList a directory on a box (files and folders with size and mtime).
file_moveMove or rename a file/directory on a box.
file_readRead a text file from a box (UTF-8). Truncates at max_bytes.
file_searchFind files by name pattern under a directory.
file_uploadwrite actionUpload a file from the operator machine to a box.
file_writewrite actionWrite (or append) content to a file on a box.
find_and_clickOCR the desktop, find on-screen `text`, and click its center — vision-lite clicking for UIs that UI Automation can't see. occurrence picks the Nth match.
firewall_addOpen (or block) a port in Windows Firewall.
firewall_deletewrite actionDelete firewall rule(s) by display name.
firewall_rulesList firewall rules for a direction.
focus_windowBring a window to the foreground by (partial) title so keystrokes land in it.
get_aclRead the owner and access rules (ACL) of a file/folder/registry path.
grant_aclGrant a principal rights on a path via icacls. rights: F|M|RX|R|W or a word like FullControl->F. Runs elevated. Use take_own first if access is denied.
group_add_memberAdd a user to a local group (e.g. 'Administrators', 'Remote Desktop Users').
gui_scriptwrite actionRun a PowerShell block in the interactive session with GUI helpers pre-loaded — the one-call way to do a multi-step GUI sequence without paying per-action latency.
health_reportOne-call box health: OS/uptime, CPU/RAM, per-disk free, top processes, stopped auto-start services, recent System/Application errors, pending Windows Updates, and Defender status. The "how is this box doing" summary.
kill_processwrite actionKill a process by pid or by name (all matching).
list_hostsList all registered boxes (passwords redacted) and which one is active.
list_open_portsListening TCP ports with the owning process — the box's exposed attack surface.
list_processesList running processes with pid, memory, and CPU seconds.
list_servicesList Windows services (name, display name, status, start mode).
list_staged_toolsList tools/scripts staged on a box.
list_tasksList scheduled tasks (name, path, state).
list_usersList local user accounts (enabled state, last logon, admin membership).
list_windowsList the top-level windows on the interactive desktop (title, pid, handle, bounds).
make_dirwrite actionCreate a directory (and parents) on a box.
mouse_clickClick at screen coordinates (x, y). button: left | right | middle.
mouse_dragPress at (x1,y1), drag to (x2,y2), release. button: left | right | middle.
mouse_moveMove the mouse cursor to screen coordinates (x, y).
net_connectionsList TCP connections on a box. state: Listen|Established|* (all).
net_infoNetwork configuration of a box: adapters, IPv4, gateway, DNS servers, MAC.
ocr_screenRead text off the live desktop via the built-in Windows OCR engine (Win10+). Returns the full text plus per-word screen coordinates (center x/y + bounding box). Pairs with mouse_click / find_and_click. (Claude can also just read a screenshot.)
pingPing a target from the box.
port_checkTest whether a TCP port on `target` is reachable *from the box*.
port_proxy_addAdd a netsh portproxy on a box (v4->v4). Great for tunneling RDP/other services through a reachable box to one behind NAT. Runs elevated.
port_proxy_deletewrite actionDelete a netsh portproxy rule by listen port. Runs elevated.
port_proxy_listList active netsh portproxy rules on a box.
provision_hostZero-config provision: make a box remotely manageable no matter its state.
rdp_disableDisable incoming RDP connections.
rdp_disconnect_sessionDisconnect an RDP session by id (keeps it running).
rdp_enableEnable RDP: allow connections, open the firewall group, set NLA. Idempotent.
rdp_logoff_sessionLog off an RDP session by id (ends it).
rdp_sessionsList RDP/console sessions (id, user, state) via ``qwinsta``.
rdp_set_portChange the RDP listening port and (optionally) open it in the firewall. Takes effect after a reboot or a TermService restart.
rdp_statusReport RDP configuration: enabled, NLA, port, max connections, firewall.
reboot_and_waitReboot a box and block until it is reachable again (WinRM/SSH back up). Essential for automation that must continue after a restart.
record_screenRecord the desktop for a few seconds and return it as an animated GIF.
reg_deletewrite actionDelete a registry value (if name given) or an entire key.
reg_readRead a registry key (all values) or a single value. path like 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion'.
reg_writewrite actionWrite a registry value. type: String|DWord|QWord|Binary|ExpandString|MultiString. Creates the key if missing.
remove_hostwrite actionRemove a box from the inventory.
run_elevatedwrite actionRun PowerShell with a full elevated token via a one-shot Scheduled Task. run_as 'SYSTEM' (default) needs no password. This is the real UAC bypass path used when a normal WinRM/SSH logon would otherwise get a filtered token.
run_on_hostswrite actionRun one PowerShell script across many boxes in parallel and collect results.
send_keyswrite actionSend keystrokes to the active window using SendKeys syntax.
service_controlControl a service. action: start | stop | restart | enable | disable | manual | auto.
service_createwrite actionCreate a Windows service. start: auto|demand|disabled. Optionally run under a specific account. Runs elevated.
service_deletewrite actionDelete a Windows service. Runs elevated.
set_dnsSet DNS servers on an interface. servers: comma-separated (e.g. '1.1.1.1,8.8.8.8'). Use net_info to get interface aliases. Runs elevated.
stage_scriptwrite actionWrite a script (PowerShell/batch/py/text) into the box's tool cache and return its remote path, ready to run with run_powershell/run_cmd.
stage_toolPull a helper tool onto a box on demand.
start_processLaunch a program/command on a box. elevated=True for full token, as_user=True to launch in the interactive RDP desktop session.
sync_folderMirror a LOCAL operator folder to a box efficiently (zip → upload → expand). mirror=True wipes the destination first so it matches the source exactly.
tail_fileReturn the last N lines of a text file on a box (snapshot).
take_ownTake ownership of a file/folder via takeown (needed before changing a locked ACL). Runs elevated.
task_createwrite actionCreate a scheduled task. schedule: ONCE|DAILY|HOURLY|ONLOGON|ONSTART. run_as SYSTEM needs no password; highest=True runs with a full token.
task_deletewrite actionDelete a scheduled task by name.
task_runwrite actionRun a scheduled task now.
test_hostScan reachable management ports and verify the live transport for a box.
transfer_between_hostswrite actionCopy a file from one registered box to another, straight through the controller.
type_textType literal text into the active window (SendKeys metacharacters auto-escaped). Use `window` to focus a window by title first.
uac_getRead the box's UAC policy (EnableLUA, admin prompt behaviour, token filter).
uac_setAdjust UAC policy. disable_token_filter=True lets non-builtin local admins get a full token over the network (LocalAccountTokenFilterPolicy=1). EnableLUA changes need a reboot.
ui_findFind UI elements on the desktop via UI Automation.
ui_invokeFind a control by (partial) name and activate it — Invoke (buttons), else Toggle, else click its center. The reliable way to press a button without pixel math.
ui_set_textSet the text of an input control found by (partial) name (UIA ValuePattern).
unzip_pathExtract a .zip archive on a box.
use_hostMake a registered box the active target for subsequent tool calls.
user_createwrite actionCreate a local user; optionally add to Administrators and Remote Desktop Users.
user_deletewrite actionDelete a local user account.
wait_for_windowWait until a window whose title contains `title` appears on the desktop. Polls in-session in a single call (cheap despite the as_user path).
whoami_privCurrent session's user, groups, integrity level, and token privileges — the quick 'what can this session actually do' check.
write_eventwrite actionWrite an entry to a Windows event log (creates the source if needed). Elevated.
zip_pathCompress a file/folder into a .zip on a box.
Public scan report
scanner v0.1.9 · 2026-09-23 · same rubric, same numbers if you re-run it
- Code scan37 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 qualitystatic API keys via environment variables6/15
- Maintenancelast push 1 days ago15/15
- Maintainer identityregistry namespace matches repository owner6/10
How Winrdp compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 80/100
- higher than 60% of 48,255 servers
- Tools
- 100
- the typical server has 7
- Tools that change things
- 26%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 3
- more than 80% of 28,688 servers
What its tools let an agent do: 66 read · 3 create · 23 change · 1 delete · 1 send or post · 6 run or deploy
Install Winrdp in Claude Code, Cursor or VS Code
claude mcp add winrdp-mcp -- uvx winrdp-mcp
What the publisher says
From the Winrdp repository's README, as published. We do not edit it. Read it on GitHub
<!-- mcp-name: io.github.emog33k/winrdp-mcp -->
winrdp-mcp
A zero-config MCP server that provisions and fully administers any Windows RDP box — Windows 10/11 and Server 2016–2025 — for Claude and Claude Code.
You give it a host and admin credentials. It makes the box remotely manageable by itself — turning on WinRM, opening the Windows firewall, and fixing local-admin token filtering — regardless of the box's starting state or Windows version. Claude then gets 144 tools: shell, files, registry, services, processes, scheduled tasks, users, firewall, event logs, software, networking, live RDP control, screenshots, GUI automation, real UAC elevation, one-call health/security reports, and on-demand tool staging — plus 5 guided workflows (prompts) and live host resources.
Nothing is pre-installed on the target. The controller reaches boxes over WinRM / SSH / SMB from wherever Claude Code runs, and manages one box or a whole fleet from a single server.
Why it's different
- Zero-config provisioning. provision_host climbs a ladder — WinRM → SSH → SMB/WMI cold-start → paste-once bootstrap — and makes a fresh, locked-down box manageable with no manual WinRM setup.
- Real UAC / elevation, not "please run as admin." Over WinRM a local admin gets a high-integrity full token and elevated ops run directly; a filtered token falls back to a one-shot SYSTEM Scheduled Task. as_user=True runs inside the interactive RDP desktop.
- 144 tools across 15 modules, every one with readOnlyHint / destructiveHint safety annotations so MCP clients can gate destructive actions automatically. Narrow the surface to a focused set with a tool profile (WINRDP_PROFILE=admin|rdp|core).
- Guided workflows & live context. 5 MCP prompts (provisionandharden, diagnosebox, securityaudit, setupdevbox, openservicelocally) turn a whole operation into one click, and resources (winrdp://hosts, winrdp://host/{alias}/info) hand the model the inventory and a live box summary without spending a tool call.
- On-demand code execution. runpython finds or installs Python, pip-installs deps, runs your code, and cleans up — same for Node, PowerShell, cmd, and batch. stagetool pulls Sysinternals (or any URL/local file) onto the box mid-task.
- Native GUI automation. Drive the interactive RDP desktop — keystrokes, mouse, and UI Automation (find/click/read controls by name) — plus live screenshots, with no on-box agent.
- One-call ops. healthreport (OS/CPU/RAM/disk/services/errors/updates/Defender in one read), applybaseline (high-perf power plan, no sleep, long paths), whoamipriv, failedlogons, listopenports.
- First-class RDP and an encrypted multi-host inventory (Fernet) with tags and parallel fan-out across the fleet.
Two modes, one package
Both build the same server; python -m winrdp_mcp serve is equivalent to the console script.
Table of contents
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Winrdp: common questions
- Is Winrdp MCP server safe?
- Mostly: it is graded B (80/100). Read the Winrdp safety report
- How do I install Winrdp?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Winrdp need an API key?
- Yes. The registry entry asks for
WINRDP_VAULT_KEY. - Is Winrdp maintained?
- The last commit was 42 days ago (2026-09-23). The latest release is v0.1.3.
- What can I use instead of Winrdp?
- Servers from other publishers that do the same job: SSH — policy-gated remote access MCP server.
- How does Winrdp compare with other MCP servers?
- safety score 80/100 (higher than 60% of 48,255 servers); tools 100 (the typical server has 7); tools that change things 26% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Winrdp
Same job from other publishers: the closest match first, then the best rated.
- SSH — policy-gated remote accessPolicy-gated, audited SSH for Linux and Windows hosts: roles, approvals, and an audit log.not reviewedEstablishedB