roslyn-mcp
Analyzes, compiles and refactors C# code using Microsoft's Roslyn compiler platform APIs.
Claude Code
$ git clone https://github.com/fnrhombus/winforms-mcp
Clone the repository
Codex
Cursor
$ git clone https://github.com/fnrhombus/winforms-mcp
Clone the repository
Gemini CLI
$ git clone https://github.com/fnrhombus/winforms-mcp
Clone the repository
GitHub Copilot
$ git clone https://github.com/fnrhombus/winforms-mcp
Clone the repository
OpenCode
$ git clone https://github.com/fnrhombus/winforms-mcp
Clone the repository
Windsurf
$ git clone https://github.com/fnrhombus/winforms-mcp
Clone the repository
Security report
Not enough data
Known flaws
Not published
Signed build
Not published
Maintained
Apr 13, 2026
Last push
Licence
MIT
Runs as
Local process
On your machine
Deprecated
Not published
Signals from public registries, not an audit. Checked Nov 11, 2026.
winforms-mcp README
An MCP server that lets Claude (and any MCP-compatible agent) launch, automate, screenshot, and preview WinForms applications — without touching a mouse.
The problem
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.
The fix
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 |
Quick start
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.
Tools
| 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 |
Cross-framework rendering
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.
Headless mode
Set HEADLESS=true to launch apps on a hidden Windows desktop (CreateDesktop API):
- Zero focus stealing — apps can't steal focus, show TopMost windows, or flash in the taskbar
- Full automation — element discovery, clicking, typing, and screenshots all work through UIA patterns and PrintWindow
- Mixed mode — headless and visible apps in the same session, each automatically routed to its correct desktop
{
"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.
Environment variables
| 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) |
Documentation
- Examples — common workflows and patterns
- Headless Mode — hidden desktop architecture and tool compatibility
Contributing
Contributions welcome — see issues for open items. Git hooks for commit validation and code formatting are configured automatically on first build.
Support
If you find this project useful, consider supporting its development:
- GitHub Sponsors — Monthly sponsorship with public recognition
- Buy Me a Coffee — One-time or recurring donations
Your support helps maintain and improve this project!
License
More MCP servers from other plugins.
Questions about roslyn-mcp.
- Which coding agents can use roslyn-mcp?
- roslyn-mcp works in any agent that reads an MCP config file: Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf. Each agent reads it from its own file; this page names the file for each one.

