WpfPilot MCP

Servidor MCP para agentes de IA automatizarem aplicativos Windows WPF com seletores semânticos de automação de interface, capturas de tela, gravação e geração de testes FlaUI.

Documentação

WpfPilot MCP

O WpfPilot MCP é um servidor local do Model Context Protocol para aplicações Windows WPF. Ele permite que agentes de codificação de IA inspecionem árvores de UI Automation, cliquem e digitem por meio de seletores semânticos, diagnosticem problemas específicos de WPF, gravem fluxos de trabalho e gerem testes xUnit + FlaUI.

.NET 8 MCP Windows License

Recursos

  • Anexar ou iniciar processos WPF.
  • Capturar snapshots semânticos de UI (seletores, não coordenadas de tela).
  • Consultar texto, valor, estado, limites, padrões, filhos, ancestrais, irmãos e seleção.
  • Agir com verbos como clicar, definir valor, selecionar, alternar, expandir, recolher, rolar e arrastar/soltar.
  • Aguardar e verificar o estado da UI com erros estruturados.
  • Capturar capturas de tela.
  • Gravar fluxos de trabalho e gerar código de teste.
  • Sonda opcional em processo para diagnósticos de ViewModel, binding, command, validação e dispatcher.

Requisitos

  • Windows 10/11.
  • Um aplicativo WPF para automatizar.
  • Node.js 18+ se usar npx (recomendado). Não é necessário .NET SDK para o binário de lançamento ou o inicializador npm.

Primeiros passos

Adicione isto à configuração do seu cliente MCP (global ou por projeto):

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

Ou execute diretamente (stdio; aguarda um cliente MCP):

npx -y @skuzadev/wpfpilot-mcp

O inicializador npm baixa o binário de lançamento mais recente do Windows na primeira execução e depois faz proxy do stdio para ele.

Outras instalações (comando wpfpilot-mcp persistente, zip de lançamento, desinstalação): consulte Instalar o WpfPilot.

Clientes populares

Use a configuração padrão acima, salvo indicação em contrário. Mais clientes: docs/all-clients.md.

Cursor

Global: ~/.cursor/mcp.json (não adicione um .cursor/mcp.json de projeto, a menos que precise de uma substituição específica do repositório)

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

Ou: Configurações do CursorMCPAdicionar novo servidor MCP — comando npx, argumentos -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

Ou ~/.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

.mcp.json do projeto:

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

Configuração do Windows: %APPDATA%\Claude\claude_desktop_config.json

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

Reinicie o Claude Desktop após salvar.

VS Code

Crie .vscode/mcp.json:

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

Ou: code --add-mcp '{"name":"wpfpilot-mcp","command":"npx","args":["-y","@skuzadev/wpfpilot-mcp"]}'

Primeiro prompt

Após conectar o cliente MCP, pergunte:

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

Prompts complementares úteis:

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.

Ferramentas

FerramentaFinalidade
wpf_capabilitiesListar verbos compatíveis, tipos de consulta e condições de espera.
wpf_queryLer o estado da UI.
wpf_actExecutar ações de UI.
wpf_waitAguardar o estado da UI.
wpf_assertVerificar o estado da UI.

Lista completa de ferramentas: docs/tools-reference.md.

Sonda WPF opcional

A sonda é executada dentro do seu processo WPF e expõe diagnósticos que a UI Automation não consegue ver diretamente (bindings, ViewModels, commands, validação).

Use wpf_probe_connect, then inspect my ViewModel and binding errors.

Configuração: docs/probe-setup.md.

Segurança

O WpfPilot destina-se a desenvolvimento local e automação de testes.

  • Ele é executado com a sua conta de usuário e pode interagir com a UI visível para essa conta.
  • Ele não expõe shell geral, registro ou ferramentas arbitrárias de sistema de arquivos por meio do MCP.
  • Ações de mutação de UI são auditadas na pasta de dados locais do aplicativo do usuário.
  • A sonda requer instalação explícita no aplicativo WPF de destino.
  • Trate todo servidor MCP como código local confiável antes de habilitá-lo em um agente.

Solução de problemas

wpfpilot-mcp não é reconhecido

Reinicie o terminal após executar o instalador ou use o caminho completo para wpfpilot-mcp.exe na configuração do seu cliente MCP. Consulte all-clients.md.

O servidor inicia, mas nenhuma ferramenta aparece

Reinicie o cliente MCP e verifique os logs de MCP dele. Verifique também se npx -y @skuzadev/wpfpilot-mcp é executado a partir de um terminal normal.

Não é possível anexar a um aplicativo

Certifique-se de que o aplicativo WPF esteja sendo executado na mesma sessão de usuário e em um nível de privilégio compatível. Se o aplicativo for executado como administrador, o cliente MCP também pode precisar ser executado elevado.

A sonda não consegue conectar

Confirme se o aplicativo de destino chamou ProbeHost.Start(), depois use wpf_probe_status e wpf_probe_connect. Se necessário, passe wpfpilot-mcp-probe-{ProcessId} explicitamente.

Documentação

Contribuindo

Consulte CONTRIBUTING.md.

Licença

MIT. Consulte LICENSE.