PySide6 MCP
Playwright-style MCP to inspect, control, and debug PySide6 desktop GUIs.
Connector by com55 · GitHub account verified by the MCP Registry
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/com55-pyside6-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.
- Tools
- 11 read · 7 write · 1 delete · 3 not yet classified
- Secrets
- None asked for
- Install scripts
- Not scanned yet
- Runs as
- Python package
Tools by what they do 22
Read from the source code; the running server may list different tools.
Read 11 · Look things up without changing anything.
find_widgetget_app_outputget_app_stateget_app_statusget_launch_helpget_logsget_widget_infoget_widget_treelist_actionslist_appsscreenshot
Write 7 · Create, change, send or run things.
clickdouble_clickpress_keyscrollstop_apptrigger_actiontype_text
Delete 1 · Delete, drop, revoke or wipe things.
eval_python
Not yet classified 3 · We could not tell from the name and description.
launch_appwait_for_idlewait_until_ready
Files it touches
- Any path the agent passes to its tools
Tools (22)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
clickClick a widget or screen coordinate. - widget_id only: clicks the center of that widget - widget_id + x/y: clicks at (x, y) relative to the widget's top-left - x/y only: clicks at (x, y) relative to the main window button: 'left' (default), 'right', or 'middle'
double_clickDouble-click a widget. Sends two rapid left-clicks.
eval_pythonEvaluate a Python expression or execute a statement inside the app process. Context provides: - app: QApplication instance - widgets: dict mapping widget_id → QWidget Examples: eval_python("app.activeWindow().windowTitle()") eval_python("widgets['3'].isEnabled()") eval_python("list(app.allWidgets())") WARNING: runs arbitrary code in the app — use only for debugging.
find_widgetSearch for widgets by class, objectName, text content, or visibility. Returns a list of matching widgets with their IDs. Examples: find_widget(class_name="QPushButton") find_widget(text="Apply Mods") find_widget(object_name="enabledCheckBox")
get_app_outputGet the last n lines of the launched app's real stdout/stderr: print() output, uncaught tracebacks, and Qt/console warnings. This is the app's actual console output, captured because launch_app redirects it to a log file. Use this to debug crashes or startup failures. For structured Python logging records use get_logs() instead. Only works for apps started via launch_app on this server.
get_app_stateGet app-level state: active window, focused widget, screen info. Useful to understand focus before sending keyboard events.
get_app_statusReport combined health of a launched app: whether the process is alive, its exit code, whether the bridge responds, and whether the main thread is likely blocked by a modal dialog (process alive but bridge unresponsive).
get_launch_helpReturn how to call launch_app — especially the script parameter. Call this before launch_app when you are unsure which entry .py to use or whether script should include a subfolder path.
get_logsGet the last n log messages captured from the app's Python logging system. Includes timestamp, level, logger name, and message.
get_widget_infoGet detailed properties and state of a specific widget. Includes geometry, text, enabled/visible state, and dynamic Qt properties.
get_widget_treeGet the full widget hierarchy of all visible windows as JSON. Each widget has: id, class, object_name, visible, enabled, geometry, text, children. Use widget IDs from this tree in other tools.
launch_appLaunch a PySide6 app with the MCP bridge injected, then wait until the UI is ready. Parameters ---------- cwd : REQUIRED absolute path to project root (directory with pyproject.toml). script : Entry .py relative to cwd. Default main.py. See script examples below. app_args : Optional CLI arguments forwarded to the script. timeout : Seconds to wait for readiness (default 45). script — when to set it ----------------------- | Entry location | script value | | main.py at project root | omit (default) | | app.py at project root | "app.py" | | src/run.p…
list_actionsList all QActions (menu items, toolbar actions) in visible windows with their name, text, shortcut, and enabled/checked state.
list_appsList apps launched by this MCP server. Each entry is {pid}. Pass pid= to other tools when more than one app is running.
press_keyPress a key on the currently focused widget. Named keys: enter, return, escape, tab, backtab, backspace, delete, up, down, left, right, space, home, end, pageup, pagedown, f1–f6 Single characters: pass the character directly, e.g. 'a', 'A', '1'
Show 7 more tools
screenshotCapture a screenshot of the app window (or a specific widget by ID). Returns the image so you can see the current UI state. Call this first to orient yourself.
scrollScroll a widget. dy > 0 scrolls down, dy < 0 scrolls up. dx: horizontal scroll (positive = right). widget_id: target widget; omit to scroll the main window.
stop_appStop a previously launched app (started via launch_app). Omit pid to stop the last launched app.
trigger_actionTrigger a QAction directly by objectName (`name`) or visible label (`text`), without clicking through menus. Useful to avoid opening modal menus and to reach toolbar/menu actions reliably. Provide at least one of name/text.
type_textType text into a widget (focuses it first) or the currently focused widget. For special characters use press_key instead.
wait_for_idleWait until the app's UI has been quiet (no layout/paint activity) for `quiet_ms` ms, or until `timeout` seconds elapse. Call after a click or action that triggers async work, before taking a screenshot.
wait_until_readyWait until the app UI is ready: a visible top-level window that has been quiet (no layout/paint activity) for `quiet_ms` milliseconds. Use after an action that reloads or rebuilds the UI. Returns the readiness snapshot. Does not launch anything — the app must already be running.
Signals
- Stars
- 6
- Forks
- 2
- Open issues
- 0
- Weekly downloads
- 55
- Last commit
- Sep 5, 2026 (1 month ago)
- Last release
- Sep 5, 2026 (1 month ago)
- Last package publish
- Sep 5, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.com55/pyside6-mcp- Version
- 0.1.0
- Auth
- No auth
- Packages
- pypi pyside6-mcp
- License
- MIT
- Repository
- github.com/com55/pyside6-mcp
- First seen
- Oct 24, 2026
- Last checked
- Oct 25, 2026
Cite this page
PySide6 MCP. Agent Mart. https://agentmart.dev/connectors/com55-pyside6-mcp (last updated 2026-10-25)