MCP.Market

PySide6 MCP server

by com55·io.github.com55/pyside6-mcp·v0.1.0·6 stars

Playwright-style MCP to inspect, control, and debug PySide6 desktop GUIs.

B80/100grade B
What users say
No reviews yet
Be the first
Safety scan
B80/100

full report

Adoption
Growing

6 stars48 downloads/wk

Reviews

Write one

Nobody has reviewed PySide6 MCP yet.

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

PySide6 MCP tools (22)

write = sends, deletes, buys or posts

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

  • click

    Click 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_click

    Double-click a widget. Sends two rapid left-clicks.

  • eval_python

    Evaluate 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_widget

    Search 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_output

    Get the last n lines of the launched app's real stdout/stderr: print() output, uncaught tracebacks, and Qt/console warnings.

  • get_app_state

    Get app-level state: active window, focused widget, screen info. Useful to understand focus before sending keyboard events.

  • get_app_status

    Report 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_help

    Return how to call launch_app — especially the script parameter.

  • get_logs

    Get the last n log messages captured from the app's Python logging system. Includes timestamp, level, logger name, and message.

  • get_widget_info

    Get detailed properties and state of a specific widget. Includes geometry, text, enabled/visible state, and dynamic Qt properties.

  • get_widget_tree

    Get 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_app

    Launch a PySide6 app with the MCP bridge injected, then wait until the UI is ready.

  • list_actions

    List all QActions (menu items, toolbar actions) in visible windows with their name, text, shortcut, and enabled/checked state.

  • list_apps

    List apps launched by this MCP server. Each entry is {pid}. Pass pid= to other tools when more than one app is running.

  • press_key

    Press 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'

  • screenshot

    Capture 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.

  • scroll

    Scroll 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_app

    Stop a previously launched app (started via launch_app). Omit pid to stop the last launched app.

  • trigger_action

    Trigger 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_text

    Type text into a widget (focuses it first) or the currently focused widget. For special characters use press_key instead.

  • wait_for_idle

    Wait 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_ready

    Wait until the app UI is ready: a visible top-level window that has been quiet (no layout/paint activity) for `quiet_ms` milliseconds.

Public scan report

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

1 medium
  • Code scan12 source files scanned20/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 41 days ago12/15
  • Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10

Findings (1)

  • mediumeval / new Function usedexec.eval
    pyside6_mcp-0.1.0/pyside6_mcp/bridge.py: …ref()}, } try: result = eval(code, ctx) # noqa: S307 return …
Overall 80/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How PySide6 MCP compares

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

Safety score
80/100
higher than 54% of 867 Scraping and browsing servers
Tools
22
the typical Scraping and browsing server has 6
Tools that change things
0%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
6
more than 75% of 584 Scraping and browsing servers
Downloads a week
48
more than 31% of 312 Scraping and browsing servers with a package

What its tools let an agent do: 19 read · 3 run or deploy

Install PySide6 MCP in Claude Code, Cursor or VS Code

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

What the publisher says

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

<!-- mcp-name: io.github.com55/pyside6-mcp -->

pyside6-mcp

Playwright-style MCP server for PySide6 apps — lets AI assistants see, control, and debug your Python desktop GUI without modifying your app's source code.

AI assistant → MCP tools → pyside6-mcp server → HTTP bridge (ephemeral localhost port) → PySide6 app

Features

  • Screenshot any window or widget
  • Inspect the full widget tree (class, name, geometry, text, state)
  • Click, type, scroll, press keys — full interaction
  • Find widgets by class, objectName, or text content
  • Read Python logs captured from the app
  • Run Python inside the app process for advanced inspection
  • Launch and stop the app from the agent

Zero changes to your app's source code required.

Requirements

  • Python 3.11+
  • PySide6 6.6+
  • uv (recommended)
  • Windows (tested), Linux/macOS (should work)

Installation

The MCP server (stdio) and the in-app bridge are separate:

No changes to the target project. launch_app(cwd=…) injects only the bridge modules via an isolated PYTHONPATH — nothing is added to pyproject.toml, and the MCP server's dependencies (fastmcp, httpx, …) never enter the app environment.

Requires uv on PATH. MCP Registry name: io.github.com55/pyside6-mcp.

Unlike qt-mcp, you do not add this package to the target app or set a probe env var. launch_app injects the bridge.

Claude Code

Plugin (MCP + skill). install only searches marketplaces you have added — there is no github: install shorthand:

claude plugin marketplace add com55/pyside6-mcp
claude plugin install pyside6-mcp@pyside6-mcp

MCP server only:

claude mcp add -s user pyside6 -- uvx pyside6-mcp

Cursor

Install the Agent Plugin from this repository (or from the Cursor Marketplace once listed). Manual stdio config:

{
  "mcpServers": {
    "pyside6": {
      "command": "uvx",
      "args": ["pyside6-mcp"]
    }
  }
}

After saving, reload MCP servers in Cursor Settings → MCP. See examples/cursor-mcp-config.json.

Any stdio MCP client

{
  "mcpServers": {
    "pyside6": {
      "command": "uvx",
      "args": ["pyside6-mcp"]
    }
  }
}

Place it wherever that client expects MCP config (user-level or project-level). See examples/mcp-config.json.

VS Code / GitHub Copilot / other clients

Same stdio block as Any stdio MCP client.

Note: uvx downloads and runs the MCP server in an isolated env — PySide6 is not

required there. PySide6 is only needed in the target app's venv (already a project dependency).

To run from a git checkout instead of PyPI: uvx --from git+https://github.com/com55/pyside6-mcp pyside6-mcp

Usage

From MCP (recommended — zero project setup)

launch_app(cwd="/path/to/project")                              # main.py at root
launch_app(cwd="/path/to/project", script="app.py")             # other name at root
launch_app(cwd="/path/to/project", script="backend/gui.py")   # entry in subfolder
get_launch_help()                                               # full script decision guide
list_apps()                                                     # pids of apps this server launched

cwd is the project root (pyproject.toml). script is the entry .py relative to cwd.

launch_app returns {pid} (the Qt app process, not the uv wrapper). Other tools omit pid to target the last launched app; pass pid= when several are running. Do not pass port=.

Manual launch (when you start the app yourself)

Shortened. The full README is on GitHub.

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

Grade history

  • 2026-10-16downgradeA → Bscore 80: eval / new Function used

PySide6 MCP: common questions

Is PySide6 MCP server safe?
Mostly: it is graded B (80/100). Read the PySide6 MCP safety report
How do I install PySide6 MCP?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does PySide6 MCP need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is PySide6 MCP maintained?
The last commit was 61 days ago (2026-09-05). The latest release is v0.1.0.
What can I use instead of PySide6 MCP?
Servers from other publishers that do the same job: Bun Uia MCP server, Playwright MCP server and Ui.Vision MCP server.
How does PySide6 MCP compare with other Scraping and browsing MCP servers?
safety score 80/100 (higher than 54% of 867 Scraping and browsing servers); tools 22 (the typical Scraping and browsing server has 6); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.

Alternatives to PySide6 MCP

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

  • Bun Uia
    Playwright for the Windows desktop, from Bun — drive native GUIs via UI Automation + MCP.
    A
  • Playwright
    Playwright Tools for MCP
    A
  • Ui.Vision MCP
    MCP server for browser and desktop automation: OCR, image recognition, real mouse and keyboard input
    B
  • invisible_playwright_mcp
    AI browser agent: browses, clicks, types, and reads real web pages from plain-English instructions.
    A
  • CloakBrowser MCP
    Playwright MCP-compatible browser automation bridge for CloakBrowser Chromium.
    B