Windows GUI automation on a hidden second desktop, driven from Claude Code over MCP.
The agentfenster MCP server lets Claude Code and other MCP clients drive real Windows applications on a hidden second desktop inside your own session, with the same logins, cookies and VPN, while you keep your screen, mouse and keyboard. It is a local stdio server with 11 tools, from a one call task loop down to single verified clicks.
Every action is verified against the window state afterwards. A click that lands nowhere is reported as a failure, never as a silent success.
Full documentation: https://agentfenster.com/mcp
The MCP server ships with the agentfenster app, a commercial closed-source Windows product. This repository is its public documentation and issue tracker. It contains no product source code.
claude mcp add agentfenster -- agentfenster-mcp
Any MCP client that can launch a local stdio server works the same way. Then just ask:
> open the character map on the agent desktop and turn on the advanced view
| Tool | What it does |
|---|---|
list_windows | Lists the windows this machine can drive, with title, class, minimized state and whether a picture can be captured. The starting point when you do not know the exact window title. |
desktop_task | Runs a full GUI task in one window and returns a single paragraph: what happened, whether it worked, and if not, which step failed and why. The click loop runs inside the server, so its retries never enter your context. |
inspect_window | Returns the capped, filtered element tree of one window as a compact list, for planning clicks yourself. Capped at 200 elements and never walked from the desktop root. |
replay | Lists recent runs, or returns one run's step-by-step log: every plan, every action, whether it changed anything, and a link to the visual replay in the app. |
open_app | Launches a program on the shared agent desktop and reports its first titled window. The agent desktop starts empty, so this is how anything gets onto it. |
read_desktop | Reads the compact element tree of a window on the agent desktop, one line per interactive element, no screenshot. Plan your clicks from this. |
click | Clicks one element, chosen by id or name from read_desktop, then verifies against the desktop state and states explicitly whether anything changed. |
type_text | Types text into one element on the agent desktop, then verifies whether anything changed. |
press_key | Presses a key or key combination such as ctrl+s, enter, tab or alt+f4, optionally focusing an element first, with verification afterwards. |
scroll | Scrolls a window or a specific pane and reports whether the content actually moved. A list that is already at the bottom reports no effect. |
agent_windows | Lists the windows currently open on the shared agent desktop, frontmost first, so you can pick one by a title substring. |
desktop_task runs inside the server on a model endpoint
you configure, so its retries and intermediate steps never enter your context.| Platform | Windows 10 or 11 |
| Transport | stdio, local |
| Runtime | Python 3.11 or newer, installed with the app |
| Prerequisite | the agentfenster app (commercial, 3-day trial) |
Use the issue tracker of this repository for bug reports and questions about the MCP server: tool behaviour, install problems, MCP client compatibility. For anything about the app itself, Discord and hello@agentfenster.com are faster.
agentfenster is commercial closed-source software. No open-source license is granted here. The text in this repository is published so that MCP users and directories can read, quote and link to it. Use of the agentfenster app itself is governed by the terms at https://agentfenster.com/terms.
Source-derived launch command. Check the maintainer’s required arguments and credentials before running:
uvx agentfenster-mcpMerge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.
{
"mcpServers": {
"com-agentfenster-agentfenster": {
"command": "uvx",
"args": [
"agentfenster-mcp"
]
}
}
}Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.
Claude Desktop setup referenceagentfenster-mcppypiagentfenster works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.
~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.~/.cursor/mcp.jsonRestart Cursor for changes to take effect..vscode/mcp.jsonReload VS Code window for changes to take effect.~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect..mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.