关于 Swing MCP
Swing MCP 让 AI 助手检查并操作运行中的 Java Swing 和 JavaFX 桌面应用,也支持混合界面。它面向没有 API 或 Web UI 的软件,通过加载到目标 JVM 中的 Agent 执行操作。
主要功能
- 01获取 Java 应用界面快照
- 02点击、输入和填写表单
- 03读取表格与树结构
- 04操作菜单和对话框
- 05支持 Swing 与 JavaFX 混合应用
适用场景
- 01自动化没有 API 的 Java 桌面工作流
- 02检查并操作 ERP 或 POS 客户端
- 03测试 Swing 或 JavaFX 界面
MCP 相关
stdio MCP 服务向 MCP 客户端提供 UI 自动化工具,并将命令转发给加载在目标 JVM 中的 Agent。工具注解标明只读操作及可能具有破坏性的操作。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
swing-mcp
让 AI 助手操作 Java 桌面应用——Swing 和 JavaFX——截取界面快照、点击、输入、填写表单、读取表格和树形视图、操作菜单和对话框。灵感来自 chrome-devtools-mcp,但目标是正在运行的 Java UI,而不是 HTML 页面。
一组工具即可操作任一工具包,也可同时操作混合使用两者的应用——你无需告诉它自己使用的是哪一种。
大量商业软件都是 Java 桌面软件——内部工具、ERP 客户端、销售点系统、实验室和物流系统——没有 API,也没有 Web UI,使用 Swing 编写,如今也越来越多地使用 JavaFX。Swing MCP 为这些软件开启一扇安全且经授权的窗口,通往 AI 时代:Claude 等助手可以查看界面并进行操作,而无需更改应用本身。

快速开始(Claude Desktop)
- 确保
PATH中有 JDK 21+。 - 从最新版本下载
swing-mcp.mcpb。 - 打开该文件——Claude Desktop 会将其作为扩展安装。
- 让 Claude 对你的应用执行
launch_app(或通过 PID 对正在运行的应用执行attach_to_app),然后即可开始操作。
使用其他 MCP 客户端?每个客户端都有一份指南和一段一分钟视频——Claude Code、VS Code + Copilot、Cursor、Devin Desktop(Windsurf)、IntelliJ IDEA、Codex CLI、Gemini CLI:docs/installation.md · 视频。想看完整版本?3 分钟安装与首次使用视频。使用 JavaFX 应用?观看实时操作演示(96 秒,展示来自真实 MCP 日志的每次工具调用)。
需要将它连接到你自己的应用——或者为企业运行的其他软件提供 MCP 连接器?CrossTech 可以为你构建:crosstech.solutions/swing-mcp。
模块
swing-mcp-server— Spring Boot MCP 服务(stdio 传输),提供自动化工具。swing-mcp-agent— 加载到目标 JVM 中的 Java Agent(启动时通过-javaagent加载,或按 PID 动态加载)。运行仅限 localhost 的 JSON 行协议套接字服务端。包含每种受支持工具包各自的UiToolkit实现,并将每条命令路由到相应实现;参见 docs/adr/0001-multi-toolkit-agent.md。swing-mcp-common— 共享命令、DTO 类型和UiToolkit接口。swing-mcp-demo— 用于集成测试的 Swing 演示应用。swing-mcp-demo-fx— 用于集成测试的 JavaFX 演示应用(既通过工具包操作,也通过 stdio 上的真实服务操作)。
工作原理
MCP client (stdio) ──▶ swing-mcp-server ──localhost socket──▶ swing-mcp-agent (inside target JVM) ──▶ Swing EDT
└──▶ JavaFX Application Thread
- MCP 客户端调用
launch_app(启动一个预加载了 Agent 的 JVM)或attach_to_app(通过 PID 将 Agent 加载到正在运行的 JVM 中)。 - Agent 在
swing.mcp.agent-port-min..max范围内绑定一个仅限环回接口的端口,并通过响应文件将端口报告回来。 take_snapshot、click和fill等工具会以 JSON 行命令的形式转发,并在所属工具包的 UI 线程上执行——Swing 的事件分派线程或 JavaFX 的 JavaFX 应用程序线程。- 组件 UID 会加上分配它们的工具包前缀(Swing 使用
comp-,JavaFX 使用fx-),这样混合应用中的组件就不会混淆。 - 每个工具都带有 MCP 注释(
title、readOnlyHint、destructiveHint、idempotentHint、openWorldHint),因此遵循这些注释的客户端可以直接放行 12 个只读工具,并在运行stop_app、close_window和evaluate_java前发出提示。
请参阅 docs/tools 中的完整工具文档(按类别划分的页面),或参阅 docs/tool-reference.md 中的单页快速参考。
Skills
skills 目录包含 Agent 技能(SKILL.md 文件),用于指导 AI 编码 Agent 如何高效使用 Swing MCP,包括核心工作流、UI 测试模式和故障排查。
构建
需要 JDK 21+ 和 Maven。
mvn verify
在无头环境中会跳过 GUI 集成测试;CI 会在 xvfb 下运行这些测试。JavaFX 集成测试会通过 failsafe 在 verify 阶段运行,因此单独运行 mvn test 不会执行这些测试。
运行
构建所有内容(或解压发布的 swing-mcp.mcpb——两个 JAR 位于其 server/ 文件夹中),然后向 MCP 客户端注册该服务(各客户端的说明请参阅 docs/installation.md,涵盖 Claude Desktop、Claude Code、VS Code、Cursor、Devin Desktop、IntelliJ IDEA、Codex CLI 和 Gemini CLI):
{
"mcpServers": {
"swing": {
"command": "java",
"args": ["-jar", "/path/to/swing-mcp-server.jar"],
"env": {
"SWING_MCP_AGENT_JAR": "/path/to/swing-mcp-agent.jar"
}
}
}
}
试着通过演示应用使用它:
- 使用
java -jar swing-mcp-demo/target/swing-mcp-demo-1.3.0.jar执行launch_app(或使用 JavaFX 演示应用:swing-mcp-demo-fx/target/swing-mcp-demo-fx-1.3.0.jar) - 执行
take_snapshot以发现组件 UID - 使用
click、fill、select_option等工具进行交互
MCP Registry
此服务以 io.github.crosstech-solutions-bv/swing-mcp 的名称发布到 MCP Registry,并作为 MCPB 捆绑包附在 GitHub releases 中分发。发布流程请参阅 docs/registry-publishing.md。
安全说明
- Agent 仅监听环回接口。
evaluate_java(在目标 JVM 中执行任意代码)默认处于禁用状态;可通过swing.mcp.evaluate.enabled=true启用。
完整的安全模型以及漏洞报告方式请参阅 SECURITY.md。
贡献
欢迎贡献——PR 工作流请参阅 CONTRIBUTING.md。发布历史记录在 CHANGELOG.md 中。
关于
Swing MCP 由 CrossTech 开发并维护。CrossTech 是一家 AI 优先的软件工作室。我们构建 MCP 连接器,将企业现有的软件——Web、云端和传统桌面软件——接入 AI 助手:crosstech.solutions/mcp。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。