About mcp-swing-17
An MCP server and Java agent for automating Swing and JavaFX desktop applications on Java 17. It attaches to a running application by PID, allowing development and testing workflows to control desktop interfaces.
Key features
- 01Java 17 support
- 02Swing and JavaFX automation
- 03Attach to a running app by PID
- 04stdio MCP server
- 05MCPB bundle for clients
Use cases
- 01Automate Swing application testing
- 02Automate JavaFX application testing
- 03Control an already running Java app
- 04Use desktop automation from an MCP client
MCP support
The stdio server is started by an MCP client and works with an agent attached to a running Java application. Its MCP tools operate on Swing and JavaFX interfaces.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEmcp-swing-17
MCP server and Java agent for automating Swing and JavaFX desktop applications, built for Java 17. Fork of Swing MCP.
- Version:
1.5.0-java17 - Upstream commit:
abfacfa - License: MIT (see
LICENSE) - Usage guide: USAGE.md
Contents
dist/mcp-swing-17-server.jar MCP server (stdio)
dist/mcp-swing-17-agent.jar Java agent loaded into the target JVM
dist/*.mcpb MCPB bundle for one-click clients
build.ps1 Windows build (JDK 17)
build.sh Linux/macOS build
mcp-swing-17-server/ server sources
mcp-swing-17-agent/ agent sources
mcp-swing-17-common/ shared classes
Build
powershell -NoProfile -ExecutionPolicy Bypass -File build.ps1
Requires JDK 17. Maven 3.9.9 is downloaded into .build/ on first use.
On Linux/macOS:
./build.sh
or:
mvn -s maven-settings.xml -DskipTests package
Run
SWING_MCP_AGENT_JAR=<path>/dist/mcp-swing-17-agent.jar
java -jar <path>/dist/mcp-swing-17-server.jar
The server uses stdio and is normally started by an MCP client. The agent attaches to an already
running Java application by PID through attach_to_app.
{
"mcpServers": {
"mcp-swing-17": {
"command": "java",
"args": ["-jar", "<path>/dist/mcp-swing-17-server.jar"],
"env": {
"SWING_MCP_AGENT_JAR": "<path>/dist/mcp-swing-17-agent.jar"
}
}
}
}
Differences from upstream
- Java 17 instead of Java 21: virtual threads replaced with a regular executor.
- Removed the Java 17-incompatible
JMenu instanceof JMenuItempattern. - Replaced
List.getFirst()withget(0). - Relocated the agent's Jackson package so the target application's Jackson cannot shadow it.
java.version=17, JavaFX 17.- Real-mouse
robotinput is disabled by default. close_windowcloses only the focused dialog unless awindowIndexis passed explicitly.
Security
- the agent listens on loopback only;
- keep
evaluate_javadisabled; - use as a development/testing tool;
- do not expose the agent port or the response-file token.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.