MCP.Market

Pyjab MCP server

by gaozhao1989·io.github.gaozhao1989/pyjab-mcp·v0.3.1

Drive Java desktop apps from an AI agent, through the JVM's own accessibility tree

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

full report

Adoption
Growing

0 stars636 downloads/wk

Reviews

Write one

Nobody has reviewed Pyjab yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Pyjab tools (16, 1 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • java_attach_window

    Bind to one Java window and return a session id for later calls.

  • java_click

    Click an element: a button, a menu item, a check box, a link, a tree node.

  • java_diagnostics

    Report whether this machine can drive a Java application right now.

  • java_fill_form

    Fill several fields in one call: a list of ``{"handle": ..., "value": ...}``.

  • java_find

    Search an attached window and get a handle for each match.

  • java_focus_window

    Bring an attached window to the front, and report whether it actually came forward.

  • java_get_element

    Everything known about one element, and whether it is still the same element.

  • java_get_table

    Read a Java table, a page of rows at a time.

  • java_get_text

    Read the text of an element: a label, a text field, a table cell, a document.

  • java_list_windows

    List the Java windows Java Access Bridge can see on this machine.

  • java_screenshot

    A PNG of the window, or of one element inside it.

  • java_select

    Select an option in a combo box, list or tab set — or a row or cell in a table.

  • java_send_keyswrite action

    Send a keyboard shortcut — ``alt+y``, ``ctrl+shift+s`` — to the window.

  • java_set_text

    Type into a text field, text area or editable combo box.

  • java_snapshot

    The bounded tree view of an attached window, one line per element, with handles.

  • java_wait_for

    Wait for something to happen, instead of asking too early and being told no.

Public scan report

scanner v0.1.10 · 2026-10-12 · same rubric, same numbers if you re-run it

no findings
  • Code scan27 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 0 days ago15/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Overall 92/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Pyjab compares

Against every graded Productivity MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 90% of 1,299 Productivity servers
Tools
16
the typical Productivity server has 7
Tools that change things
6%
typical: 0%. Fewer write tools means less an agent can break
Downloads a week
636
more than 86% of 427 Productivity servers with a package

What its tools let an agent do: 15 read · 1 change

Install Pyjab in Claude Code, Cursor or VS Code

claude mcp add pyjab-mcp -- uvx pyjab-mcp
Add to Cursor

What the publisher says

From the Pyjab repository's README, as published. We do not edit it. Read it on GitHub

pyjab-mcp

An MCP server that lets an AI agent drive Java desktop applications — Swing and AWT — through pyjab, which reads the JVM's own accessibility tree via Java Access Bridge. JavaFX is not supported: it publishes its accessibility through UI Automation rather than Java Access Bridge, so a JavaFX window is not a Java window as far as JAB is concerned (pyjab#227).

<!-- The MCP Registry proves ownership of the PyPI package by finding this exact line in the README of the published package, so it cannot be added after a release. Keep it. --> mcp-name: io.github.gaozhao1989/pyjab-mcp

It never modifies, restarts or injects into the target application. That constraint is the point: launch parameters, classpaths and dependency JARs stay exactly as they are, which is what makes this usable against a production Java client that you cannot change.

The alternative is to put an agent inside the target JVM. An agent is attached to a JVM that is already running, or named on the command line with -javaagent when the application starts, and either way the tool's code sits inside someone else's process — a JVM it did not launch and does not control. This server does neither: it loads nothing into the application and reads the accessibility tree through Java Access Bridge from outside it, which is how it can attach to a process it did not launch.

The dynamic half of that — attaching an agent to a JVM that is already running — is the half the JDK has a direction on, with no release date attached. JEP 451 shipped in JDK 21 as the preparation stage: loading an agent into an already-running JVM now warns. The JEP states its aim as "prepare users for a future release which disallows the dynamic loading of agents by default", a release that has not been named; its own non-goals leave agents named with -javaagent at startup, and any use of the Attach API that is not loading an agent, outside that direction.

Status

Released on PyPI — 16 tools: javadiagnostics, javalistwindows, javaattachwindow, javasnapshot, javafind, javagetelement, javagettext, javagettable, javaclick, javasettext, javaselect, javafillform, javasendkeys, javafocuswindow, javawaitfor, and javascreenshot. It needs pyjab>=1.11.0: 1.9.0 brought the tree walk a snapshot is built on, 1.10.0 brought the public window listing and JABDriver.detach(), which releases a driver's binding without terminating the process — this server has no tool that releases a session, so a binding lasts for the life of the process — and 1.11.0 brought JABDriver.sendkeys, so javasendkeys sends a real chord, and JABDriver.focus(), so javafocus_window can bring a window forward.

javasendkeys sends a chord to whichever window has the keyboard focus, and attaching does not give a window focus (pyjab#180). javafocuswindow is the missing half: it brings the window forward and, because asked for focus and got focus are different facts, it reports whether the window actually came forward rather than assuming it did. It probes for the API rather than assuming it, so an install below the pin is told which release has it instead of failing with an AttributeError.

Two elements can share a name, which is why a handle carries where an element is as well as what it is called: searching by name returns every match, each gets its own handle, and the end-to-end suite checks that clicking one acts on that one and not the other.

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Pyjab: common questions

Is Pyjab MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the Pyjab safety report
How do I install Pyjab?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Pyjab need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Pyjab maintained?
The last commit was 23 days ago (2026-10-12). The latest release is v0.3.1.
What can I use instead of Pyjab?
Servers from other publishers that do the same job: Argent MCP server, Flutter MCP Toolkit MCP server and Hunch MCP server. Compare all Pyjab alternatives.
How does Pyjab compare with other Productivity MCP servers?
safety score 92/100 (higher than 90% of 1,299 Productivity servers); tools 16 (the typical Productivity server has 7); tools that change things 6% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to Pyjab

Same job from other publishers: the closest match first, then the best rated.

All Pyjab alternatives →
  • Argent
    Drive iOS Simulators, Android emulators, TVs and Electron/web apps from your coding agent
    A
  • Flutter MCP Toolkit
    Inspect and drive Flutter debug apps/games: semantic snapshots, search, and custom client tools
    A
  • Hunch
    Focus-free macOS control for AI agents: drive your real Mac apps in the background, no stolen focus.
    A
  • gflow-cli
    Drive Google Flow from an agent: Veo video and Imagen image generation
    A
  • Buoy Gg
    Let AI agents read and drive a running React Native or Flutter app through Buoy's devtools.
    A