Token导航 LogoToken导航

MCP Server · AI代理

Winapp MCP

一个通过FlaUI和Windows UI Automation(UIA3)为AI编码代理提供Windows桌面应用UI自动化能力的MCP服务器。

未说明官方级别未说明来源级核验工具 21
C#ClaudeAI代理Claude DesktopCursorVS Code

快速开始

公开资料没有提供安装命令,按仓库或官方文档接入。
作者 / 组织
epnielsen
提供方
epnielsen

工具数量

21

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

0

仓库热度

收录来源

1 个

MCP World

选型结论

Winapp MCP 属于AI代理类 MCP Server,公开资料标注 21 个工具,通过传输方式未标注接入,适配 Claude Desktop、Claude、Cursor,没有现成的安装命令;接入前要先准备 会话凭据。

分类

AI代理

传输方式

未说明

认证方式

会话凭据

部署方式

公开资料未说明

安装与配置

公开目录没有给出安装命令,需要按仓库 README安装;下面按同类条目的通用流程说明。

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    先确认运行方式

    公开资料没有标注传输方式,先看仓库 README,确认是本地进程还是远程地址。

  2. 2

    获取服务

    公开目录没有给出安装命令,按仓库 README里的步骤安装或获取服务。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 21 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

公开资料仍需确认:安装命令

详细介绍

WinApp MCP

MCP(模型上下文协议)服务器,为AI编码代理提供Windows桌面应用程序上的“眼睛”和“手” FlaUI 以及Windows用户界面自动化(UIA3)。

适用于任何公开标准UI自动化树的Windows应用程序,包括 WPF, 桌面应用程序, WinUI 3,以及 .NET MAUI 应用程序。

先决条件

  • Windows 10/11
  • .NET 10 SDK — 下载
  • 支持MCP的AI客户端(Claude Desktop、VS Code Copilot、Cursor等)

构建与运行

cd WinApp-MCP
dotnet build
dotnet run

服务器通过以下方式进行通信 标准 (stdin/stdout)使用MCP协议。

客户端配置

克劳德桌面/VS代码副本/光标

添加到MCP配置中:

{
  "mcpServers": {
    "winapp-mcp": {
      "command": "dotnet",
      "args": ["run", "--project", "C:\\path\\to\\WinApp-MCP\\WinApp-MCP.csproj"]
    }
  }
}

或者直接运行编译后的二进制文件:

{
  "mcpServers": {
    "winapp-mcp": {
      "command": "C:\\path\\to\\WinApp-MCP\\bin\\Debug\\net10.0-windows\\win-x64\\WinApp-MCP.exe"
    }
  }
}

工具参考

发现

工具说明
list_windows列出所有顶级窗口(可选 processName 过滤器)
attach_application通过以下方式连接到正在运行的应用程序 processName 或 processId
list_attached显示当前附加的窗口

检查

工具说明
get_window_tree获取精简文本格式的UI元素树。支持 maxDepth, rootAutomationId,以及 propertyProfile (minimal, standard, diagnostic)
find_elements按以下方式查找元素 automationId, name, controlType,或 xpath.支持 visibleOnly, enabledOnly 过滤器和 rootAutomationId 用于子树范围的搜索
get_element_properties获取元素的详细属性和支持的UIA模式
get_selectable_items枚举组合框/列表框中的项目,包括可见的文本摘要、CLR类型名称检测、原始提供程序文本和可选的行级操作发现(includeActions)
get_child_controls发现复合父级中的子控件,按交互类型分类(edit, button, toggle, picker, expander, label, other)

文本

工具说明
get_visible_text按阅读顺序从窗口或子树中读取所有可见文本
get_element_text使用多策略回退链从特定元素读取文本/值。支持 rootAutomationId
set_text通过ValuePattern(键盘回退选择加入)在支持文本的控件中设置文本。支持 rootAutomationId

交互

工具说明
click_element单击元素(左/右/双)。支持 rootAutomationId.当多个元素匹配时报告歧义
invoke_element通过UIA-InvokePattern调用(无鼠标,按钮首选)。支持 rootAutomationId.报告含糊不清
type_text在输入框中键入文本(可选先清除)。支持 rootAutomationId
toggle_element切换复选框/切换按钮。支持 rootAutomationId
select_item按值或索引选择组合框/列表框中的项目。使用多策略回退。支持 rootAutomationId
file_dialog_select通过输入路径并单击接受按钮,完成标准的Windows打开/保存文件对话框。自动处理模糊的“打开”按钮
send_keys发送键盘快捷键(例如。, Ctrl+A, Enter, Alt+F4)
focus_element聚焦一个元素/将窗口置于前台。支持 rootAutomationId

捕获并等待

工具说明
screenshot将窗口或元素捕获为base64 PNG(最大1280px宽)。支持 rootAutomationId
wait_for_element等待元素出现(可配置超时)。支持 rootAutomationId

代理工作流示例

1. list_windows(processName: "MyMauiApp")
   → PID: 12345, Handle: "1A2B3C", Title: "My App"

2. attach_application(processName: "MyMauiApp")
   → Handle: "1A2B3C"

3. get_window_tree(windowHandle: "1A2B3C", maxDepth: 3)
   → [Window] "My App" id="" class="WinUIDesktopWin32WindowClass"
       [Text] "Welcome" id="lblWelcome"
       [Edit] "" id="txtUsername" class="TextBox"
       [Edit] "" id="txtPassword" class="PasswordBox"
       [Button] "Sign In" id="btnSignIn"

4. type_text(windowHandle: "1A2B3C", automationId: "txtUsername", text: "admin")
   → Typed text via ValuePattern

5. type_text(windowHandle: "1A2B3C", automationId: "txtPassword", text: "pass123")
   → Typed text via ValuePattern

6. invoke_element(windowHandle: "1A2B3C", automationId: "btnSignIn")
   → Invoked: [Button] "Sign In" id="btnSignIn"

7. wait_for_element(windowHandle: "1A2B3C", name: "Dashboard", timeoutMs: 5000)
   → Element found

8. get_visible_text(windowHandle: "1A2B3C")
   → Found 3 text element(s):
       [Name] Welcome back, admin
       [Name] Dashboard
       [ValuePattern] Last login: 2026-03-08

9. screenshot(windowHandle: "1A2B3C")
   → [Screenshot captured: 1280x720px]

元素识别

元素可以通过以下方式找到(按优先级顺序):

  1. automationId --最可靠。由开发人员设置,在窗口内独一无二。
  2. xpath --结构路径类似 //Button[@Name='OK']当Automation Id缺失时,该功能正常。
  3. name + controlType --显示文本+类型组合。可用于标记控件。当多个元素匹配时,排名分辨率使用结构上下文(深度、对话角色、父类型)选择最佳候选者。

分级解决方案和模糊性

当名称+控制类型搜索匹配多个元素时(例如,在一个标准文件对话框中,有几个按钮被命名为“打开”),解析器会对每个候选项进行评分:

  • 浅层元素 (更靠近窗口根)是首选。
  • 对话框操作按钮 (automationId "1" / "2")获得丰厚奖金。
  • 下拉按钮 (automationId "DropDown")以及 组合框儿童 受到惩罚。
  • 已启用,可见 元素得分更高。

最佳评分元素会自动使用。当存在歧义时,工具如 click_element 和 invoke_element 附加一个诊断警告,列出所有候选人的分数和家长背景。

子树范围搜索

大多数工具支持 rootAutomationId --一个可选参数,将元素搜索范围限定到子树而不是整个窗口。这对于定位已知容器内的元素非常有用(例如,在指定的组合框中单击下拉按钮)。

文件对话框处理

标准的Windows打开/保存对话框公开了多个名为“打开”的控件——主接受按钮,以及“文件名:”和“文件类型:”组合框内的下拉按钮。WinApp MCP处理此问题:

  • file_dialog_select --推荐的方法。在一次操作中输入文件路径并单击对话框接受按钮。同时适用于“打开”和“保存”对话框。
  • 排名决议 --如果你使用 click_element 或 invoke_element 随着 name="Open",主对话框按钮(automationId "1")自动优先于下拉按钮。
  • 子树范围 --要明确指向特定组合框中的下拉按钮,请使用 rootAutomationId 以确定搜索范围。

供应商容忍度

WinApp MCP旨在与可能暴露不完整或非标准属性的真实UI自动化提供程序配合使用:

  • 不支持的属性 按元素捕获并报告为 `` 而不是使操作失败。
  • 树木检查 继续经过发生故障的节点,发出 [] 不可检查儿童的占位符。
  • 项目选择 使用多策略回退链(名称→ 价值模式→ Legacy可访问→ 文本后代),当提供程序元数据不完整时。
  • 模板化列表行 返回CLR类型名称(例如。 Namespace.Model.ClassName)而不是用户可见的文本被自动解析为可见的后代摘要。
  • 复合控制 对于弱父元数据,可以通过以下方式进行探索 get_child_controls,根据互动类型对儿童进行分类。
  • 瞬时COM故障 (例如。 E_UNEXPECTED)使用元素重新解析重试。
  • 错误分类 区分 ElementNotFound, PropertyNotSupported, TransientProviderFailure,以及 OperationNotSupported 因此,代理人可以做出明智的决定。

故障排除

问题解决方案
未找到窗口确保目标应用正在运行。某些应用程序需要以管理员权限启动。
空UI树该应用程序可能使用不公开UIA的自定义绘制控件。尝试 screenshot 相反。
未找到元素使用 get_window_tree 更高 maxDepth 探索。检查树输出中的Automation Id。
单击不起作用试试看 invoke_element 相反(使用UIA模式,没有鼠标)。一些应用程序阻止程序化鼠标输入。
不支持属性使用 get_window_tree 随着 propertyProfile: "minimal" 为了获得最大的可靠性,或 "diagnostic" 了解全部细节。
组合框选择失败使用 get_selectable_items 以诊断哪些项目对UIA可见以及哪些文本源可用。
列表显示CLR类型名称模板行会自动解析为可见文本。检查 rawProviderText 和 summaryParts 在 get_selectable_items 输出。
复合控制难以交互使用 get_child_controls 发现按互动类型分类的可操作儿童。
无法读取验证文本使用 get_visible_text 从窗口或子树中读取所有可见文本。
截图失败确保窗口未最小化。服务器需要一个桌面会话(不是无头会话)。
DPI/协调问题确保该过程是DPI感知的。BoundingRectangle值以物理像素为单位。
登录到stdout会中断MCP默认情况下,所有日志记录路由都指向stderr。不添加 Console.WriteLine 电话。
文件对话框点击了错误的“打开”按钮使用 file_dialog_select 用于标准文件对话框,或使用 invoke_element 随着 automationId="1" 直接针对接受按钮。分级分辨率现在自动首选主对话框按钮。

建筑

WinApp-MCP/
├── Program.cs                  # Host builder, DI, MCP server setup
├── Services/
│   ├── FlaUIService.cs         # Singleton: UIA3Automation, window cache, tree serialization
│   ├── ElementResolver.cs     # Element lookup with ranked resolution and transient failure recovery
│   └── SafeUIA.cs             # Safe UIA property access and multi-strategy text extraction
├── Models/
│   ├── ElementInfo.cs          # Compact DTO for element properties
│   ├── ErrorCategory.cs       # Error classification enum
│   ├── ResolveResult.cs       # Ranked resolution result with ambiguity diagnostics
│   ├── RowAction.cs           # Row-level action metadata for list items
│   └── ToolResult.cs          # Structured tool result with error categorization
└── Tools/
    ├── WindowTools.cs          # list_windows, attach_application, list_attached
    ├── InspectionTools.cs      # get_window_tree, find_elements, get_element_properties, get_selectable_items, get_child_controls
    ├── InteractionTools.cs     # click, invoke, type_text, toggle, select, file_dialog_select, send_keys, focus
    ├── TextTools.cs            # get_visible_text, get_element_text, set_text
    ├── CaptureTools.cs         # screenshot
    └── WaitTools.cs            # wait_for_element

更新日志

看 更改日志.md 发布历史。

许可证

麻省理工学院

工具与能力

工具数量

21

资源数量

0

提示词数量

0

能力标签

Windows自动化C#本地部署UI测试AI辅助开发桌面应用控制MCP协议

支持客户端

Claude DesktopClaudeCursorVS Code

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

多步任务编排

把拆解、检索、执行串成一条链,模型按步骤调用工具。

长期上下文

把会话、笔记和知识放到外部存储,换个会话还能接着做。

接自有流程

把内部系统和模型连起来,让助手调用已有的工作流。

选择建议

值得选的地方

  • 工具数量 21 个,一次接入能覆盖的操作比单点工具更全。
  • 已经适配 Claude Desktop、Claude、Cursor,换客户端不用重新研究配置。
  • 公开说明写得比较完整,接入前能看清能力边界。

先想清楚的地方

  • 公开资料没有可直接复制的安装命令,第一次接入要自己找入口。
  • 需要自备会话凭据,没有凭据没法直接试。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在AI代理场景里让模型直接调用外部能力的人。
  • 已经在用 Claude Desktop 的用户,接入路径最短。
  • 愿意照着官方文档一步步配环境的人。

不太适合

  • 暂时拿不到会话凭据的人。
  • 希望一条命令就装好、不想看文档的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
Winapp MCP

MCP World · 本页

21未说明未标注1 个2026-05-17
Everything Claude Code

MCP World

0stdio有1 个2026-05-17
Filesystem 560c4363

MCP World

13未说明未标注2 个2026-05-17
Time 7365cb6d

MCP.so

2SSE有2 个2026-05-17
Server Everything (everything)

MCP World

11stdio有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

Winapp MCP 怎么安装?

公开目录没有给出可以直接复制的安装命令,需要按仓库 README里的步骤安装;装好后写进客户端的 MCP 配置再重启。

Winapp MCP 怎么在 Claude Desktop、Cursor 里配置?

它是传输方式未标注,客户端配置里要写启动命令和参数,运行环境是 未标注;保存后完全退出客户端再打开,配置才会生效。

Winapp MCP 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

Winapp MCP 需要 API Key 吗?

公开资料标注的认证方式是会话凭据,也就是要先拿到凭据才能连上;凭据只填在自己本地的配置里,不要写进公开仓库。

Winapp MCP 支持哪些客户端?

公开资料标注支持 Claude Desktop、Claude、Cursor、VS Code;其他客户端只要能配置 MCP Server,也能用同样的命令或地址接入。

来源信息

继续浏览同类 MCP