Swing MCP

io.github.crosstech-solutions-bv由 GitHub 帳號 crosstech-solutions-bv 發布v1.4.0更新於 Oct 30, 2026

Let AI drive Swing and JavaFX apps — see the UI, click, fill forms, read tables. No API needed.

已驗證STDIO僅桌面瀏覽器自動化開發者工具

概覽

AI 產生的概覽

讓 AI 助理檢視並操作執行中的 Java 桌面應用程式(Swing 與 JavaFX):擷取介面快照、點擊、輸入、填寫表單、讀取表格,不需 API。

可以做什麼
  • 啟動預先載入代理的 Java 應用程式,或依 PID 附加到執行中的 JVM
  • 擷取介面快照以找出元件 UID,並檢視視窗、選單與對話框
  • 在 Swing 與 JavaFX 元件中點擊、輸入、填寫表單與選擇選項
  • 讀取表格與樹狀結構,並操作選單與對話框
  • 在明確啟用後,可在目標 JVM 中執行 Java 程式碼
適用情境
適合需要讓助理操作或測試沒有 API、也沒有網頁介面的 Java 桌面軟體,例如內部工具、ERP 用戶端、收銀系統、實驗室或物流系統,或用於 Swing 與 JavaFX 應用程式的介面自動化測試。
執行需求
以 MCPB 套件或 jar 形式透過 stdio 在本機執行,需要 PATH 中有 JDK 21+。伺服器 jar 以 java 啟動,代理 jar 路徑透過環境變數 SWING_MCP_AGENT_JAR 傳入。代理只綁定回送位址上的某個連接埠(在設定範圍內)。需要桌面環境。
安裝前請注意
助理可在目標應用程式中執行點擊、輸入、填寫表單、關閉視窗與停止應用程式等操作,會改變應用程式狀態。evaluate_java 會在目標 JVM 中執行任意程式碼,預設關閉;透過 swing.mcp.evaluate.enabled 啟用後即等於授予完整程式碼執行能力。代理會被載入目標 JVM,只應附加到你信任的應用程式。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Swing MCP,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

swing-mcp

[CI] [MCP Registry]

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)

  1. Make sure JDK 21+ is on your PATH.
  2. Download swing-mcp.mcpb from the latest release.
  3. Open the file — Claude Desktop installs it as an extension.
  4. Ask Claude to launch_app your application (or attach_to_app a 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 one UiToolkit implementation 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 the UiToolkit interface.
  • 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

MCP client (stdio) ──▶ swing-mcp-server ──localhost socket──▶ swing-mcp-agent (inside target JVM) ──▶ Swing EDT                                                                                         └──▶ JavaFX Application Thread
  1. The MCP client calls launch_app (starts a JVM with the agent preloaded) or attach_to_app (loads the agent into a running JVM by PID).
  2. The agent binds a loopback-only port in swing.mcp.agent-port-min..max and reports it back through a response file.
  3. Tools such as take_snapshot, click, and fill are 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.
  4. Component uids are prefixed by the toolkit that issued them (comp- for Swing, fx- for JavaFX), which is how a mixed application stays unambiguous.
  5. Every tool carries MCP annotations (title, readOnlyHint, destructiveHint, idempotentHint, openWorldHint), so clients that honour them can wave through the 12 read-only tools and flag stop_app, close_window and evaluate_java before 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.

bash
mvn verify

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):

json
{  "mcpServers": {    "swing": {      "command": "java",      "args": ["-jar", "/path/to/swing-mcp-server.jar"],      "env": {        "SWING_MCP_AGENT_JAR": "/path/to/swing-mcp-agent.jar"      }    }  }}

Try it against the demo app:

  1. launch_app with java -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)
  2. take_snapshot to discover component UIDs
  3. click, 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 with swing.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

MIT

來源:README.md,提交 abfacfa

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

2
  1. v1.4.0最新Oct 30, 2026
  2. v1.3.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分