Open source · MIT · Java 21+

Swing MCP: AI hands for Java Swing desktop apps.

An MCP server that lets Claude and other AI assistants operate any Java Swing application: see the UI as a component tree, click, type, fill forms, read tables and trees, drive menus and dialogs. No API. No rewrite. The app never knows.

Download for Claude Desktop Source on GitHub swing-mcp.mcpb · one file, installs as a Claude Desktop extension · listed in the official MCP Registry as io.github.crosstech-solutions-bv/swing-mcp
Swing MCP driving the demo application: snapshots, clicks, form filling, tables, trees, menus and dialogs

What the assistant can do once it's inside.

The agent loads into the app's JVM and exposes 39 tools over MCP. Everything runs on the Swing event thread, so it behaves like a very fast, very patient user.

See the UI

A structured snapshot of the component tree — every button, field, table, tree, menu and dialog with a stable id — instead of guessing from pixels. Find components by text, name, tooltip or class.

Act in it

Click, hover, focus, type, fill text fields and spinners, pick combo-box options, select table cells and tree nodes, drive menus and right-click menus, drag, scroll, press keys.

Read data out

Whole JTable contents as structured data, list and tree items, component properties, the clipboard, and screenshots of a window or a single component.

Handle the awkward parts

Modal dialogs are detected and answered instead of blocking the session. wait_for waits for UI conditions. Several apps can be driven in parallel sessions.

Launch or attach

Start the app with the agent preloaded, or attach to an already-running JVM by process id — useful for the tool that has been open on someone's desk since 2014.

Two minutes to first click.

Have Java 21 or newer on your PATH

Any JDK build works. Check with java -version.

Download and open swing-mcp.mcpb

Claude Desktop installs it as an extension. Using Claude Code, Cursor, VS Code, IntelliJ or Windsurf instead? The installation guide has the jar-based config for each.

Point it at your app

Ask the assistant to launch your application, or attach to a running one.

launch_app path/to/your-app.jar   or   attach_to_app pid=12345

Take a snapshot and go

take_snapshot returns the component tree with ids; from there the assistant clicks, fills and reads on its own. The tool reference lists all 39 tools on one page.

Forms tab of the demo app filled by Swing MCP
Text fields, password fields, spinners and text areas filled directly.
JTable row selected and read by Swing MCP
Table cells selectable; table models extracted as structured data.
Modal About dialog detected by Swing MCP
Modal dialogs detected and handled instead of blocking the session.
Why we built it

A lot of business software is a Swing window with no door.

ERP clients, point-of-sale screens, lab and logistics tools, internal apps written a decade ago: they work, nobody dares rewrite them, and they have no API. Swing MCP gives that software a safe, permissioned door into the AI era, without changing the application.

UI testing that reads the tree

Exploratory and regression tests against the real application, driven by an assistant that sees components, not screenshots. Reproduce a bug from a sentence.

Data out of screens

Read that table the vendor never exposed. Pull records out of a tool whose only export is a printout.

Repetitive clicks, delegated

The forty-screen data-entry job, the daily status check, the nightly close: describe it once, let the assistant drive.

Straight answers.

Does it change my application?

No. The agent is a standard Java agent loaded into the JVM at launch (-javaagent) or attached afterwards by process id. Your code, jars and data are untouched; remove the agent and nothing remains.

Does it work with JavaFX, SWT or Electron apps?

Not today: Swing only. If you run a different desktop stack, that is exactly the kind of connector we build for clients — see below.

Which AI clients does it work with?

Anything that speaks MCP over stdio. Claude Desktop installs the bundle in one click; Claude Code, Cursor, VS Code, IntelliJ IDEA and Windsurf use the two jars with the config from the installation guide.

Is it safe to run against a production tool?

The agent only listens on localhost, only accepts commands carrying the per-session token it generated, and code execution inside the JVM is disabled by default. The assistant can do anything a user at the keyboard could — so give it the same account and permissions you would give a new colleague, and start on a test environment.

What does it cost?

Nothing. MIT licence, no telemetry, no account. CrossTech makes its living building connectors and AI systems for clients; Swing MCP is our public proof that we can.

Need it wired into your own application?

We connect AI assistants to the software businesses actually run — Swing, web apps, internal tools, databases — with permissions, audit logs and the code handed over to you. Start with a free 30-minute look at your systems; if a connector isn't worth it for you, we'll say so.

Book a free audit

How we build MCP connectors →