WpfPilot MCP

io.github.skuzadevPublished by GitHub account skuzadevv0.1.1Updated Oct 24, 2026

Automate Windows WPF apps from AI agents with semantic UIA selectors and FlaUI test generation.

The publisher's own server: QuickBooks Connector by Meridian

VerifiedSTDIODesktop onlyBrowser AutomationDeveloper Tools

Overview

AI-generated overview

A local Windows MCP server that lets an AI agent inspect, drive and test WPF desktop apps through UI Automation selectors and generate FlaUI tests.

What you can do
Attach to or launch WPF processes and list supported verbs, query kinds and wait conditions via wpf_capabilities and wpf_query, reading text, value, state, bounds, patterns, children, ancestors, siblings and selection from semantic UI snapshots rather than screen coordinates. Perform UI actions such as click, set value, select, toggle, expand, collapse, scroll and drag/drop with wpf_act. Wait and assert on UI state with structured errors using wpf_wait and wpf_assert. Capture screenshots, record workflows and generate xUnit + FlaUI test code. Optionally connect an in-process probe for ViewModel, binding, command, validation and dispatcher diagnostics.
When to use it
Useful when an AI coding agent needs to drive or debug a Windows WPF desktop application: exploring its UI tree, reproducing a workflow, diagnosing why a control is disabled, or turning a recorded interaction into automated xUnit + FlaUI tests.
Requirements
Windows 10/11 and a WPF application to automate. Node.js 18+ if using npx (recommended); no .NET SDK needed for the release binary or npm launcher. The npm launcher downloads the latest Windows release binary on first run. The optional probe must be explicitly installed in the target app. No authentication, environment variables or headers are declared.
Before you install
Runs as your user account and can interact with any UI visible to that account; mutating UI actions are audited under the user's local app data folder. It does not expose shell, registry or arbitrary filesystem tools. The probe requires explicit installation in the target WPF app. The npm launcher downloads a release binary on first run, so treat it as trusted local code before enabling it in an agent.

Installation

In SourceWeft

  1. Open WpfPilot MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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.

[.NET 8] [MCP] [Windows] [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):

json
{  "mcpServers": {    "wpfpilot-mcp": {      "type": "stdio",      "command": "npx",      "args": ["-y", "@skuzadev/wpfpilot-mcp"]    }  }}

Or run directly (stdio; waits for an MCP client):

powershell
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.

Popular clients

Use the standard config above unless noted. More clients: docs/all-clients.md.

Cursor

Global: ~/.cursor/mcp.json (do not add a project .cursor/mcp.json unless you need a repo-specific override)

json
{  "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.

powershell
cursor-agent mcp listcursor-agent mcp list-tools wpfpilot-mcp
Codex
powershell
codex mcp add wpfpilot-mcp -- npx -y @skuzadev/wpfpilot-mcpcodex mcp list

Or ~/.codex/config.toml:

toml
[mcp_servers.wpfpilot-mcp]command = "npx"args = ["-y", "@skuzadev/wpfpilot-mcp"]enabled = truestartup_timeout_sec = 30tool_timeout_sec = 60
Claude Code
powershell
claude mcp add --transport stdio wpfpilot-mcp -- npx -y @skuzadev/wpfpilot-mcpclaude mcp list

Project .mcp.json:

json
{  "mcpServers": {    "wpfpilot-mcp": {      "type": "stdio",      "command": "npx",      "args": ["-y", "@skuzadev/wpfpilot-mcp"]    }  }}
Claude Desktop

Windows config: %APPDATA%\Claude\claude_desktop_config.json

json
{  "mcpServers": {    "wpfpilot-mcp": {      "type": "stdio",      "command": "npx",      "args": ["-y", "@skuzadev/wpfpilot-mcp"]    }  }}

Restart Claude Desktop after saving.

VS Code

Create .vscode/mcp.json:

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:

text
List the WpfPilot tools and attach to my running WPF application.

Useful follow-up prompts:

text
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

ToolPurpose
wpf_capabilitiesList supported verbs, query kinds, and wait conditions.
wpf_queryRead UI state.
wpf_actPerform UI actions.
wpf_waitWait for UI state.
wpf_assertVerify UI state.

Full tool list: 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).

text
Use wpf_probe_connect, then inspect my ViewModel and binding errors.

Setup: 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.

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

Contributing

See CONTRIBUTING.md.

License

MIT. See LICENSE.

Source: README.md at commit 0ed887d

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.1LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Pilot integrations