{"name":"io.github.com55/pyside6-mcp","slug":"com55-pyside6-mcp","title":"PySide6 MCP","description":"Playwright-style MCP to inspect, control, and debug PySide6 desktop GUIs.","url":"https://mcp.market/server/com55-pyside6-mcp","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"scraping","tags":["scraping"],"presence":{"score":30,"stars":5,"forks":2,"downloads_week":29,"last_push_at":"2026-09-05T18:10:33.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/com55/pyside6-mcp","website":null,"version":"0.1.0","remotes":[],"packages":[{"registryType":"pypi","identifier":"pyside6-mcp","version":"0.1.0","transport":{"type":"stdio"}}],"tools":[{"name":"click","description":"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'","write_action":false,"price_micros":0,"input_schema":null},{"name":"double_click","description":"Double-click a widget. Sends two rapid left-clicks.","write_action":false,"price_micros":0,"input_schema":null},{"name":"eval_python","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"find_widget","description":"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\")","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_app_output","description":"Get the last n lines of the launched app's real stdout/stderr: print() output, uncaught tracebacks, and Qt/console warnings.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_app_state","description":"Get app-level state: active window, focused widget, screen info. Useful to understand focus before sending keyboard events.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_app_status","description":"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).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_launch_help","description":"Return how to call launch_app — especially the script parameter.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_logs","description":"Get the last n log messages captured from the app's Python logging system. Includes timestamp, level, logger name, and message.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_widget_info","description":"Get detailed properties and state of a specific widget. Includes geometry, text, enabled/visible state, and dynamic Qt properties.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_widget_tree","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"launch_app","description":"Launch a PySide6 app with the MCP bridge injected, then wait until the UI is ready.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_actions","description":"List all QActions (menu items, toolbar actions) in visible windows with their name, text, shortcut, and enabled/checked state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_apps","description":"List apps launched by this MCP server. Each entry is {pid}. Pass pid= to other tools when more than one app is running.","write_action":false,"price_micros":0,"input_schema":null},{"name":"press_key","description":"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'","write_action":false,"price_micros":0,"input_schema":null},{"name":"screenshot","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"scroll","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_app","description":"Stop a previously launched app (started via launch_app). Omit pid to stop the last launched app.","write_action":false,"price_micros":0,"input_schema":null},{"name":"trigger_action","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"type_text","description":"Type text into a widget (focuses it first) or the currently focused widget. For special characters use press_key instead.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_for_idle","description":"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.","write_action":false,"price_micros":0,"input_schema":null},{"name":"wait_until_ready","description":"Wait until the app UI is ready: a visible top-level window that has been quiet (no layout/paint activity) for `quiet_ms` milliseconds.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":85,"grade":"A","scanned_at":"2026-09-20T11:37:57.434Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T11:37:57.369Z","components":{"code":{"score":20,"max":25,"notes":["12 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 15 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"pyside6_mcp-0.1.0/pyside6_mcp/bridge.py: …ref()}, } try: result = eval(code, ctx) # noqa: S307 return …"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"pyside6-mcp","version":"0.1.0","found":true,"weeklyDownloads":29,"license":"MIT","dependencyCount":3,"publishedAt":"2026-09-05T15:51:41.093995Z","repositoryUrl":"https://github.com/com55/pyside6-mcp"}],"repo":{"found":true,"owner":"com55","repo":"pyside6-mcp","archived":false,"pushedAt":"2026-09-05T18:10:33Z","stars":5,"forks":2,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/33087300?v=4","ownerCreatedAt":"2017-10-25T09:24:16Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/33087300?v=4&s=128","source":"github"},"presence":{"stars":5,"forks":2,"downloadsWeek":29,"license":"MIT","lastPushAt":"2026-09-05T18:10:33.000Z","score":30}}}},"grade_history":[],"reviews":[]}