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挂钩在首次构建时自动配置。
支持
如果你觉得这个项目有用,可以考虑支持它的开发:
- **** --每月赞助并获得公众认可
- 请我喝杯咖啡 --一次性或经常性捐款
您的支持有助于维护和改进此项目!
