Install
$ agentstack add mcp-skuzadev-wpfpilot-mcp ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
WpfPilot MCP
WpfPilot MCP is a local Model Context Protocol server for Windows WPF applications. It lets AI coding agents inspect UI Automation trees, click and type through semantic selectors, diagnose WPF-specific issues, record workflows, and generate xUnit + FlaUI tests.
[](https://dotnet.microsoft.com/download/dotnet/8.0) [](https://modelcontextprotocol.io/) [](#requirements) [](LICENSE)
Features
- Attach to or launch WPF processes.
- Capture semantic UI snapshots (selectors, not screen coordinates).
- Query text, value, state, bounds, patterns, children, ancestors, siblings, and selection.
- Act with verbs such as click, set value, select, toggle, expand, collapse, scroll, and drag/drop.
- Wait and assert on UI state with structured errors.
- Capture screenshots.
- Record workflows and generate test code.
- Optional in-process probe for ViewModel, binding, command, validation, and dispatcher diagnostics.
Requirements
- Windows 10/11.
- A WPF application to automate.
- Node.js 18+ if using
npx(recommended). No .NET SDK required for the release binary or npm launcher.
Getting started
Add this to your MCP client configuration (global or project-scoped):
{
"mcpServers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
Or run directly (stdio; waits for an MCP client):
npx -y @skuzadev/wpfpilot-mcp
The npm launcher downloads the latest Windows release binary on first run, then proxies stdio to it.
Other installs (persistent wpfpilot-mcp command, release zip, uninstall): see [Install WpfPilot](docs/all-clients.md#install-wpfpilot).
Popular clients
Use the [standard config](#getting-started) above unless noted. More clients: [docs/all-clients.md](docs/all-clients.md).
Cursor
Global: ~/.cursor/mcp.json (do not add a project .cursor/mcp.json unless you need a repo-specific override)
{
"mcpServers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
Or: Cursor Settings → MCP → Add new MCP Server — command npx, args -y @skuzadev/wpfpilot-mcp.
cursor-agent mcp list
cursor-agent mcp list-tools wpfpilot-mcp
Codex
codex mcp add wpfpilot-mcp -- npx -y @skuzadev/wpfpilot-mcp
codex mcp list
Or ~/.codex/config.toml:
[mcp_servers.wpfpilot-mcp]
command = "npx"
args = ["-y", "@skuzadev/wpfpilot-mcp"]
enabled = true
startup_timeout_sec = 30
tool_timeout_sec = 60
Claude Code
claude mcp add --transport stdio wpfpilot-mcp -- npx -y @skuzadev/wpfpilot-mcp
claude mcp list
Project .mcp.json:
{
"mcpServers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
Claude Desktop
Windows config: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
Restart Claude Desktop after saving.
VS Code
Create .vscode/mcp.json:
{
"servers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
Or: code --add-mcp '{"name":"wpfpilot-mcp","command":"npx","args":["-y","@skuzadev/wpfpilot-mcp"]}'
First prompt
After connecting the MCP client, ask:
List the WpfPilot tools and attach to my running WPF application.
Useful follow-up prompts:
Show the main window UI tree.
Click the Save button using a selector, not coordinates.
Wait until the status text says Saved.
Why is the Submit button disabled?
Record this workflow and generate an xUnit test.
Tools
| Tool | Purpose | | --- | --- | | wpf_capabilities | List supported verbs, query kinds, and wait conditions. | | wpf_query | Read UI state. | | wpf_act | Perform UI actions. | | wpf_wait | Wait for UI state. | | wpf_assert | Verify UI state. |
Full tool list: [docs/tools-reference.md](docs/tools-reference.md).
Optional WPF probe
The probe runs inside your WPF process and exposes diagnostics that UI Automation cannot see directly (bindings, ViewModels, commands, validation).
Use wpf_probe_connect, then inspect my ViewModel and binding errors.
Setup: [docs/probe-setup.md](docs/probe-setup.md).
Safety
WpfPilot is intended for local development and test automation.
- It runs as your user account and can interact with UI visible to that account.
- It does not expose general shell, registry, or arbitrary filesystem tools through MCP.
- Mutating UI actions are audited under the user's local app data folder.
- The probe requires explicit installation in the target WPF app.
- Treat every MCP server as trusted local code before enabling it in an agent.
Troubleshooting
wpfpilot-mcp is not recognized
Restart your terminal after running the installer, or use the full path to wpfpilot-mcp.exe in your MCP client configuration. See [all-clients.md](docs/all-clients.md#troubleshooting).
Server starts but no tools appear
Restart the MCP client and check its MCP logs. Also verify npx -y @skuzadev/wpfpilot-mcp runs from a normal terminal.
Cannot attach to an app
Make sure the WPF app is running in the same user session and at a compatible privilege level. If the app runs as administrator, the MCP client may also need to run elevated.
Probe cannot connect
Confirm the target app called ProbeHost.Start(), then use wpf_probe_status and wpf_probe_connect. If needed, pass wpfpilot-mcp-probe-{ProcessId} explicitly.
Documentation
- [All MCP clients](docs/all-clients.md)
- [Tool reference](docs/tools-reference.md)
- [Probe setup](docs/probe-setup.md)
- [Architecture](docs/architecture.md)
- [Examples](docs/examples.md)
- [Development](docs/development.md)
- [Releasing](docs/releasing.md)
Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md).
License
MIT. See [LICENSE](LICENSE).
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: skuzadev
- Source: skuzadev/wpfpilot-mcp
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.