关于 WpfPilot MCP
WpfPilot MCP 是面向 Windows WPF 应用的本地 MCP 服务,供编码 Agent 检查界面、执行操作和诊断问题。它使用语义 UI Automation 选择器而非屏幕坐标,还能记录工作流并生成 xUnit 与 FlaUI 测试。
主要功能
- 01附加或启动 WPF 进程
- 02语义化 UI 树快照
- 03查询界面状态与元素
- 04执行并验证 UI 操作
- 05记录工作流并生成测试
- 06可选 ViewModel 与绑定诊断
适用场景
- 01检查 WPF 应用的界面树
- 02通过选择器点击并填写控件
- 03诊断按钮禁用或绑定错误
- 04将操作流程生成为 xUnit 测试
MCP 相关
作为本地 stdio MCP 服务,向客户端提供 WPF 界面查询、操作、等待、断言和诊断工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
WpfPilot MCP
WpfPilot MCP 是面向 Windows WPF 应用的本地模型上下文协议服务。它支持 AI 编码 Agent 检查 UI Automation 树、通过语义选择器点击和输入、诊断 WPF 特有问题、记录工作流,以及生成 xUnit + FlaUI 测试。
功能
- 附加到 WPF 进程或启动 WPF 进程。
- 捕获语义化 UI 快照(使用选择器,而非屏幕坐标)。
- 查询文本、值、状态、边界、模式、子级、祖先、同级元素和选择内容。
- 执行点击、设置值、选择、切换、展开、折叠、滚动和拖放等操作。
- 等待并断言 UI 状态,同时提供结构化错误。
- 捕获屏幕截图。
- 记录工作流并生成测试代码。
- 可选的进程内探针,用于诊断 ViewModel、绑定、命令、验证和调度程序。
要求
- Windows 10/11。
- 一个要自动化的 WPF 应用。
- 使用
npx时需要 Node.js 18+(推荐)。运行发布二进制文件或 npm 启动器无需 .NET SDK。
开始使用
将以下内容添加到 MCP 客户端配置中(全局或项目范围):
{
"mcpServers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
也可以直接运行(stdio;等待 MCP 客户端连接):
npx -y @skuzadev/wpfpilot-mcp
npm 启动器首次运行时会下载最新的 Windows 发布二进制文件,之后会将 stdio 转发给该文件。
其他安装方式(持久安装的 wpfpilot-mcp 命令、发布 zip、卸载):请参阅安装 WpfPilot。
常用客户端
除非另有说明,请使用上面的标准配置。更多客户端配置请参阅:docs/all-clients.md。
Cursor
全局配置:~/.cursor/mcp.json(除非需要针对特定仓库的覆盖配置,否则不要添加项目级 .cursor/mcp.json)
{
"mcpServers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
也可以:Cursor Settings → MCP → Add new MCP Server — 命令 npx,参数 -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
也可以编辑 ~/.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:
{
"mcpServers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
Claude Desktop
Windows 配置文件:%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
保存后重启 Claude Desktop。
VS Code
创建 .vscode/mcp.json:
{
"servers": {
"wpfpilot-mcp": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@skuzadev/wpfpilot-mcp"]
}
}
}
也可以运行:code --add-mcp '{"name":"wpfpilot-mcp","command":"npx","args":["-y","@skuzadev/wpfpilot-mcp"]}'
首条提示词
连接 MCP 客户端后,询问:
List the WpfPilot tools and attach to my running WPF application.
可用的后续提示词:
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.
工具
| 工具 | 用途 |
|---|---|
wpf_capabilities | 列出支持的操作、查询类型和等待条件。 |
wpf_query | 读取 UI 状态。 |
wpf_act | 执行 UI 操作。 |
wpf_wait | 等待 UI 状态。 |
wpf_assert | 验证 UI 状态。 |
完整工具列表:docs/tools-reference.md。
可选的 WPF 探针
探针在你的 WPF 进程内运行,并提供 UI Automation 无法直接查看的诊断信息(绑定、ViewModel、命令、验证)。
Use wpf_probe_connect, then inspect my ViewModel and binding errors.
配置方法:docs/probe-setup.md。
安全
WpfPilot 旨在用于本地开发和测试自动化。
- 它以你的用户账户运行,并可与该账户可见的 UI 交互。
- 它不会通过 MCP 提供通用 shell、注册表或任意文件系统工具。
- 会修改 UI 的操作会记录在用户的本地应用数据文件夹中。
- 探针必须显式安装到目标 WPF 应用中。
- 启用 Agent 中的任何 MCP 服务前,都应将其视为受信任的本地代码。
故障排除
无法识别 wpfpilot-mcp
运行安装程序后,重新启动终端,或在 MCP 客户端配置中使用 wpfpilot-mcp.exe 的完整路径。请参阅 all-clients.md。
服务已启动,但未显示任何工具
重新启动 MCP 客户端并检查其 MCP 日志。同时确认在普通终端中运行 npx -y @skuzadev/wpfpilot-mcp 是否正常。
无法连接到应用
确保 WPF 应用在相同的用户会话中运行,且权限级别兼容。如果应用以管理员身份运行,MCP 客户端可能也需要以提升的权限运行。
探针无法连接
确认目标应用调用了 ProbeHost.Start(),然后使用 wpf_probe_status 和 wpf_probe_connect。如有需要,请显式传入 wpfpilot-mcp-probe-{ProcessId}。
文档
贡献
请参阅 CONTRIBUTING.md。
许可证
MIT。请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。