Swing MCP
io.github.crosstech-solutions-bvPublished by GitHub account crosstech-solutions-bvv1.4.0Updated Oct 30, 2026
Let AI drive Swing and JavaFX apps — see the UI, click, fill forms, read tables. No API needed.
Overview
Lets an AI assistant see and operate running Java desktop apps (Swing and JavaFX) — snapshot the UI, click, type, fill forms, read tables — with no API needed.
- What you can do
- Launch a Java app with the agent preloaded, or attach to a running JVM by PID
- Snapshot the UI to discover component UIDs and inspect windows, menus and dialogs
- Click, type, fill forms and select options in Swing and JavaFX components
- Read tables and trees, and drive menus and dialogs
- Optionally evaluate Java code inside the target JVM when explicitly enabled
- When to use it
- Useful when you need an assistant to drive or test a Java desktop application that has no API or web UI — internal tools, ERP clients, point-of-sale, lab or logistics software — or to automate UI testing of Swing and JavaFX apps.
- Requirements
- Runs locally over stdio as an MCPB bundle or jar; needs JDK 21+ on the PATH. The server jar is started with java, and the agent jar path is passed via the SWING_MCP_AGENT_JAR environment variable. The agent binds a loopback-only port in a configured range. Desktop environment required.
Installation
In SourceWeft
- Open Swing MCP in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
swing-mcp
Let AI assistants operate Java desktop applications — Swing and JavaFX — snapshot the UI, click, type, fill forms, read tables and trees, drive menus and dialogs. Inspired by chrome-devtools-mcp, but targeting a running Java UI instead of HTML pages.
One set of tools drives either toolkit, and both at once in applications that mix them — you never tell it which you are using.
A huge amount of business software is Java desktop software — internal tools, ERP clients, point-of-sale, lab and logistics systems — with no API and no web UI, written in Swing and increasingly in JavaFX. Swing MCP gives that software a safe, permissioned door into the AI era: assistants like Claude can see the interface and act in it, without changing the application itself.
[swing-mcp driving the demo app: snapshots, clicks, form filling, tables, trees, menus, and dialogs]
Quick start (Claude Desktop)
- Make sure JDK 21+ is on your
PATH. - Download
swing-mcp.mcpbfrom the latest release. - Open the file — Claude Desktop installs it as an extension.
- Ask Claude to
launch_appyour application (orattach_to_appa running one by PID) and take it from there.
Using another MCP client? One guide and a one-minute video per client — Claude Code, VS Code + Copilot, Cursor, Devin Desktop (Windsurf), IntelliJ IDEA, Codex CLI, Gemini CLI: docs/installation.md · videos. Prefer the long version? 3-minute install-and-first-use video. JavaFX app? See it driven live (96 seconds, every tool call from the real MCP log).
Need this connected to your own application — or an MCP connector for other software your business runs? CrossTech builds them: crosstech.solutions/swing-mcp.
Modules
swing-mcp-server— Spring Boot MCP server (stdio transport) exposing the automation tools.swing-mcp-agent— Java agent loaded into the target JVM (at launch via-javaagent, or dynamically by PID). Runs a localhost-only JSON line-protocol socket server. Contains oneUiToolkitimplementation per supported toolkit and routes each command to the right one; see docs/adr/0001-multi-toolkit-agent.md.swing-mcp-common— Shared command/DTO types and theUiToolkitinterface.swing-mcp-demo— Demo Swing application used for integration testing.swing-mcp-demo-fx— Demo JavaFX application used for integration testing (driven both through the toolkit and through the real server over stdio).
How it works
- The MCP client calls
launch_app(starts a JVM with the agent preloaded) orattach_to_app(loads the agent into a running JVM by PID). - The agent binds a loopback-only port in
swing.mcp.agent-port-min..maxand reports it back through a response file. - Tools such as
take_snapshot,click, andfillare forwarded as JSON line commands and executed on the owning toolkit's UI thread — the Event Dispatch Thread for Swing, the JavaFX Application Thread for JavaFX. - Component uids are prefixed by the toolkit that issued them (
comp-for Swing,fx-for JavaFX), which is how a mixed application stays unambiguous. - Every tool carries MCP annotations (
title,readOnlyHint,destructiveHint,idempotentHint,openWorldHint), so clients that honour them can wave through the 12 read-only tools and flagstop_app,close_windowandevaluate_javabefore running them.
See docs/tools for the full tool documentation (per-category pages), or docs/tool-reference.md for the single-page quick reference.
Skills
The skills directory contains agent skills (SKILL.md files) that teach AI coding agents how to use Swing MCP effectively — core workflows, UI testing patterns, and troubleshooting.
Building
Requires JDK 21+ and Maven.
GUI integration tests are skipped in headless environments; CI runs them under xvfb. The JavaFX
integration tests run in the verify phase via failsafe, so mvn test alone will not exercise them.
Running
Build everything (or unzip the released swing-mcp.mcpb — the two jars are in
its server/ folder), then register the server with your MCP client (see
docs/installation.md for per-client instructions —
Claude Desktop, Claude Code, VS Code, Cursor, Devin Desktop, IntelliJ IDEA, Codex CLI, Gemini CLI):
Try it against the demo app:
launch_appwithjava -jar swing-mcp-demo/target/swing-mcp-demo-1.4.0.jar(or the JavaFX demo:swing-mcp-demo-fx/target/swing-mcp-demo-fx-1.4.0.jar)take_snapshotto discover component UIDsclick,fill,select_option, … to interact
MCP Registry
This server is published to the MCP Registry as
io.github.crosstech-solutions-bv/swing-mcp, distributed as an MCPB bundle attached to GitHub releases.
See docs/registry-publishing.md for how publishing works.
Security notes
- The agent listens on the loopback interface only.
evaluate_java(arbitrary code execution in the target JVM) is disabled by default; enable withswing.mcp.evaluate.enabled=true.
See SECURITY.md for the full security model and how to report vulnerabilities.
Contributing
Contributions are welcome — see CONTRIBUTING.md for the PR workflow. Release history lives in CHANGELOG.md.
About
Swing MCP is built and maintained by CrossTech, an AI-first software studio. We build MCP connectors that plug businesses' existing software — web, cloud, and legacy desktop — into AI assistants: crosstech.solutions/mcp.
License
Source: README.md at commit abfacfa
Tools
0Version history
2- v1.4.0LatestOct 30, 2026
- v1.3.0Sep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
