Interacts with WinForms UI elements and captures screenshots of headlessly rendered forms through an MCP server. Fires when automating or testing C# desktop UI without a visible display.
From the author’s README · Quick Start · not verified by Flowy
$ /plugin marketplace add fnrhombus/claude-plugins$ /plugin install winforms-mcp@claude-plugins
Repo: fnrhombus/winforms-mcp
What's inside
You're building a WinForms app with an AI coding agent. The agent can read and write your code, but it's blind — it can't see what the form looks like, can't click a button to test a workflow, and can't tell if the UI it just generated actually renders correctly.
One line in your MCP config. Now the agent can:
| See forms without building | render_form gives the agent a designer — the exact same rendering pipeline Visual Studio uses. Edit, re-render, iterate with no build and no human in the loop |
| Drive running apps | Launch processes, find elements by name/type/ID, click, type, drag-drop, take screenshots |
| Work in the background | Headless mode runs apps on a hidden desktop — zero focus stealing, zero disruption |
| Target any framework | .NET Framework 4.x, .NET Core 3.x, .NET 5–9+. Auto-detected from your .csproj |
Claude Code plugin (easiest):
/plugin marketplace add fnrhombus/claude-plugins
/plugin install winforms-mcp@claude-plugins
MCP config with npx (requires Node.js):
{
"mcpServers": {
"winforms-mcp": {
"command": "npx",
"args": ["-y", "@fnrhombus/winforms-mcp"]
}
}
}
Standalone (no Node required) — download the zip from Releases, extract it, and point to the exe:
{
"mcpServers": {
"winforms-mcp": {
"command": "C:/path/to/winformsmcp/winformsmcp.exe"
}
}
}
Note: Keep the extracted folder structure intact —
render_formneeds therendererhost/subdirectory alongside the exe.
That's it. The agent can now see and interact with any WinForms application on your machine.
| Category | Tools | Description |
|---|---|---|
| Process | launch_app attach_to_process close_app get_process_status | Start, attach to, and manage Windows processes |
| Discovery | find_element element_exists wait_for_element get_element_tree | Locate UI elements by AutomationId, name, class, or control type |
| Interaction | click_element type_text set_value select_item click_menu_item drag_drop send_keys | Click buttons, fill text boxes, select combo items, navigate menus |
| Visual | take_screenshot render_form | Capture running apps or render .Designer.cs to PNG |
render_form detects your project's target framework and dispatches to a matching out-of-process host — the same rendering pipeline Visual Studio uses, so custom controls and third-party components resolve correctly.
| Your project targets | Renderer host |
|---|---|
| .NET Framework 4.0–4.8.x | net48 |
| .NET Core 3.x | netcoreapp3.1 |
| .NET 5, 6, 7, 8, 9+ | net8.0-windows |
Framework-specific APIs resolve correctly too. Override with the TFM environment variable if needed.
Set HEADLESS=true to launch apps on a hidden Windows desktop (CreateDesktop API):
{
"mcpServers": {
"winforms-mcp": {
"command": "npx",
"args": ["-y", "@fnrhombus/winforms-mcp"],
"env": { "HEADLESS": "true" }
}
}
}
Note:
send_keysanddrag_droprequire input simulation and only work on the visible desktop. Usetype_text/set_valueandclick_elementfor headless processes.
| Variable | Default | Description |
|---|---|---|
HEADLESS | false | Run launched apps on a hidden desktop |
TFM | auto | Lock rendering to a specific framework (net48, netcoreapp3.1, net8.0-windows) |
TELEMETRY_OPTOUT | false | Disable all Application Insights telemetry (matches .NET CLI conventions) |
Contributions welcome — see issues for open items. Git hooks for commit validation and code formatting are configured automatically on first build.
If you find this project useful, consider supporting its development:
Your support helps maintain and improve this project!
FAQ
winforms-mcp is a Claude Code plugin with hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it