Windows Forms应用AI代理工具

为Windows Forms应用程序提供AI代理视觉和操作能力,支持自动化测试和UI渲染。

  • by fnrhombus
  • C#
  • 本地部署
  • 12 星标
  • 更新于
在 GitHub 查看 rhom6us/winforms-mcp

使用说明

Rhombus.WinFormsMcp

Give AI agents eyes and hands for Windows Forms apps

An MCP server that lets Claude (and any MCP-compatible agent) launch, automate, screenshot, and preview WinForms applications — without touching a mouse.


的问题

您正在使用AI编码代理构建WinForms应用程序。代理可以读写你的代码,但它 盲的 --它看不到表单的样子,无法单击按钮来测试工作流,也无法判断它刚刚生成的UI是否正确呈现。

修复

MCP配置中的一行。现在,代理人可以:

查看没有建筑物的表格 render_form 为代理提供一个设计器——与Visual Studio使用的渲染管道完全相同。编辑、重新渲染、迭代,无需构建,也无需人工参与循环
驱动正在运行的应用程序 启动流程,按名称/类型/ID查找元素,单击,键入,拖放,截图
在后台工作 无头模式在隐藏的桌面上运行应用程序——零焦点窃取,零干扰
瞄准任何框架 .NET Framework 4.x。NET Core 3.x。净值5-9+。自动从您的 .csproj

快速开始

Claude代码插件 (最简单):

/plugin marketplace add fnrhombus/claude-plugins
/plugin install winforms-mcp@claude-plugins

带npx的MCP配置 (需要Node.js):

{
  "mcpServers": {
    "winforms-mcp": {
      "command": "npx",
      "args": ["-y", "@fnrhombus/winforms-mcp"]
    }
  }
}

独立 (无需节点)-- 从Release下载压缩包,提取它,并指向exe:

{
  "mcpServers": {
    "winforms-mcp": {
      "command": "C:/path/to/winformsmcp/winformsmcp.exe"
    }
  }
}

注: 保持提取的文件夹结构不变-- render_form 需要 rendererhost/ exe旁边的子目录。

就是这样。代理现在可以查看您计算机上的任何WinForms应用程序并与之交互。

工具

类别 工具 描述
过程 launch_app attach_to_process close_app get_process_status 启动、连接和管理Windows进程
发现 find_element element_exists wait_for_element get_element_tree 按Automation Id、名称、类或控件类型查找UI元素
交互 click_element type_text set_value select_item click_menu_item drag_drop send_keys 单击按钮、填充文本框、选择组合项、导航菜单
视觉 take_screenshot render_form 捕获正在运行的应用程序或渲染 .Designer.cs 转换为PNG

跨框架渲染

render_form 检测项目的目标框架,并将其分派到匹配的进程外主机——与Visual Studio使用的渲染管道相同,因此自定义控件和第三方组件可以正确解析。

您的项目目标 渲染器宿主
.NET Framework 4.0–4.8.x net48
.NET Core 3.x netcoreapp3.1
.净值5、6、7、8、9+ net8.0-windows

特定于框架的API也能正确解析。用覆盖 TFM 环境变量(如果需要)。

无头模式

集 HEADLESS=true 在隐藏的Windows桌面上启动应用程序(CreateDesktop API

  • 零焦点窃取 --应用程序无法窃取焦点、显示TopMost窗口或在任务栏中闪烁
  • 全自动化 --元素发现、单击、键入和屏幕截图都是通过UIA模式和PrintWindow完成的
  • 混合模式 --同一会话中的无头和可见应用程序,每个应用程序都会自动路由到其正确的桌面
{
  "mcpServers": {
    "winforms-mcp": {
      "command": "npx",
      "args": ["-y", "@fnrhombus/winforms-mcp"],
      "env": { "HEADLESS": "true" }
    }
  }
}

注: send_keys 和 drag_drop 需要输入模拟,只能在可见的桌面上工作。使用 type_text/set_value 和 click_element 对于无头进程。

环境变量

变量 默认值 描述
HEADLESS false 在隐藏的桌面上运行已启动的应用程序
TFM auto 将渲染锁定到特定框架(net48, netcoreapp3.1, net8.0-windows)
TELEMETRY_OPTOUT false 禁用所有Application Insights遥测(符合.NET CLI约定)

文档

  • 例子 --常见的工作流程和模式
  • 无头模式 --隐藏桌面架构和工具兼容性

贡献

欢迎捐款--见 问题 对于未结项目。用于提交验证和代码格式化的Git挂钩在首次构建时自动配置。

支持

如果你觉得这个项目有用,可以考虑支持它的开发:

您的支持有助于维护和改进此项目!

许可证

麻省理工学院