{
  "markdown": "# WpfPilot MCP\n\nWpfPilot 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.\n\n[![.NET 8](https://img.shields.io/badge/.NET-8.0-512BD4?logo=dotnet)](https://dotnet.microsoft.com/download/dotnet/8.0)\n[![MCP](https://img.shields.io/badge/MCP-stdio-blue)](https://modelcontextprotocol.io/)\n[![Windows](https://img.shields.io/badge/platform-Windows-0078D4?logo=windows)](#requirements)\n[![License](https://img.shields.io/badge/license-MIT-yellow)](LICENSE)\n\n## Features\n\n- Attach to or launch WPF processes.\n- Capture semantic UI snapshots (selectors, not screen coordinates).\n- Query text, value, state, bounds, patterns, children, ancestors, siblings, and selection.\n- Act with verbs such as click, set value, select, toggle, expand, collapse, scroll, and drag/drop.\n- Wait and assert on UI state with structured errors.\n- Capture screenshots.\n- Record workflows and generate test code.\n- Optional in-process probe for ViewModel, binding, command, validation, and dispatcher diagnostics.\n\n## Requirements\n\n- Windows 10/11.\n- A WPF application to automate.\n- Node.js 18+ if using `npx` (recommended). No .NET SDK required for the release binary or npm launcher.\n\n## Getting started\n\nAdd this to your MCP client configuration (global or project-scoped):\n\n```json\n{\n  \"mcpServers\": {\n    \"wpfpilot-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@skuzadev/wpfpilot-mcp\"]\n    }\n  }\n}\n```\n\nOr run directly (stdio; waits for an MCP client):\n\n```powershell\nnpx -y @skuzadev/wpfpilot-mcp\n```\n\nThe npm launcher downloads the latest Windows release binary on first run, then proxies stdio to it.\n\n**Other installs** (persistent `wpfpilot-mcp` command, release zip, uninstall): see [Install WpfPilot](docs/all-clients.md#install-wpfpilot).\n\n### Popular clients\n\nUse the [standard config](#getting-started) above unless noted. More clients: [docs/all-clients.md](docs/all-clients.md).\n\n<details>\n<summary>Cursor</summary>\n\nGlobal: `~/.cursor/mcp.json` (do not add a project `.cursor/mcp.json` unless you need a repo-specific override)\n\n```json\n{\n  \"mcpServers\": {\n    \"wpfpilot-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@skuzadev/wpfpilot-mcp\"]\n    }\n  }\n}\n```\n\nOr: **Cursor Settings** → **MCP** → **Add new MCP Server** — command `npx`, args `-y @skuzadev/wpfpilot-mcp`.\n\n```powershell\ncursor-agent mcp list\ncursor-agent mcp list-tools wpfpilot-mcp\n```\n\n</details>\n\n<details>\n<summary>Codex</summary>\n\n```powershell\ncodex mcp add wpfpilot-mcp -- npx -y @skuzadev/wpfpilot-mcp\ncodex mcp list\n```\n\nOr `~/.codex/config.toml`:\n\n```toml\n[mcp_servers.wpfpilot-mcp]\ncommand = \"npx\"\nargs = [\"-y\", \"@skuzadev/wpfpilot-mcp\"]\nenabled = true\nstartup_timeout_sec = 30\ntool_timeout_sec = 60\n```\n\n</details>\n\n<details>\n<summary>Claude Code</summary>\n\n```powershell\nclaude mcp add --transport stdio wpfpilot-mcp -- npx -y @skuzadev/wpfpilot-mcp\nclaude mcp list\n```\n\nProject `.mcp.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"wpfpilot-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@skuzadev/wpfpilot-mcp\"]\n    }\n  }\n}\n```\n\n</details>\n\n<details>\n<summary>Claude Desktop</summary>\n\nWindows config: `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n```json\n{\n  \"mcpServers\": {\n    \"wpfpilot-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@skuzadev/wpfpilot-mcp\"]\n    }\n  }\n}\n```\n\nRestart Claude Desktop after saving.\n\n</details>\n\n<details>\n<summary>VS Code</summary>\n\nCreate `.vscode/mcp.json`:\n\n```json\n{\n  \"servers\": {\n    \"wpfpilot-mcp\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@skuzadev/wpfpilot-mcp\"]\n    }\n  }\n}\n```\n\nOr: `code --add-mcp '{\"name\":\"wpfpilot-mcp\",\"command\":\"npx\",\"args\":[\"-y\",\"@skuzadev/wpfpilot-mcp\"]}'`\n\n</details>\n\n## First prompt\n\nAfter connecting the MCP client, ask:\n\n```text\nList the WpfPilot tools and attach to my running WPF application.\n```\n\nUseful follow-up prompts:\n\n```text\nShow the main window UI tree.\nClick the Save button using a selector, not coordinates.\nWait until the status text says Saved.\nWhy is the Submit button disabled?\nRecord this workflow and generate an xUnit test.\n```\n\n## Tools\n\n| Tool | Purpose |\n| --- | --- |\n| `wpf_capabilities` | List supported verbs, query kinds, and wait conditions. |\n| `wpf_query` | Read UI state. |\n| `wpf_act` | Perform UI actions. |\n| `wpf_wait` | Wait for UI state. |\n| `wpf_assert` | Verify UI state. |\n\nFull tool list: [docs/tools-reference.md](docs/tools-reference.md).\n\n## Optional WPF probe\n\nThe probe runs inside your WPF process and exposes diagnostics that UI Automation cannot see directly (bindings, ViewModels, commands, validation).\n\n```text\nUse wpf_probe_connect, then inspect my ViewModel and binding errors.\n```\n\nSetup: [docs/probe-setup.md](docs/probe-setup.md).\n\n## Safety\n\nWpfPilot is intended for local development and test automation.\n\n- It runs as your user account and can interact with UI visible to that account.\n- It does not expose general shell, registry, or arbitrary filesystem tools through MCP.\n- Mutating UI actions are audited under the user's local app data folder.\n- The probe requires explicit installation in the target WPF app.\n- Treat every MCP server as trusted local code before enabling it in an agent.\n\n## Troubleshooting\n\n`wpfpilot-mcp` is not recognized\n\nRestart 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).\n\nServer starts but no tools appear\n\nRestart the MCP client and check its MCP logs. Also verify `npx -y @skuzadev/wpfpilot-mcp` runs from a normal terminal.\n\nCannot attach to an app\n\nMake 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.\n\nProbe cannot connect\n\nConfirm the target app called `ProbeHost.Start()`, then use `wpf_probe_status` and `wpf_probe_connect`. If needed, pass `wpfpilot-mcp-probe-{ProcessId}` explicitly.\n\n## Documentation\n\n- [All MCP clients](docs/all-clients.md)\n- [Tool reference](docs/tools-reference.md)\n- [Probe setup](docs/probe-setup.md)\n- [Architecture](docs/architecture.md)\n- [Examples](docs/examples.md)\n- [Development](docs/development.md)\n- [Releasing](docs/releasing.md)\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT. See [LICENSE](LICENSE).\n",
  "bytes": 6614,
  "sha": "201c0bf0c3a5556a35a46d7de6478ec1488b838b049ee7410ecfb1319f12cef0",
  "repo_slug": "skuzadev/wpfpilot-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_skuzadev_wpfpilot_mcp_0fea3ca0/readme"
}