Skip to main content
Glama
linuxdeepin

gammaray-mcp-bridge

by linuxdeepin

GammaRay MCP Bridge

A MCP server that bridges GammaRay probe introspection data into MCP tools, enabling LLMs to inspect and debug Qt Quick / QML scene graphs, items, geometry, materials, and Qt Widgets.

Architecture

Target Qt/QML App  ──TCP──►  GammaRay MCP Bridge  ──stdio──►  LLM / AI Agent
  (GammaRay probe                (GammaRay client +               (opencode,
   injected)                      qtmcp MCP server)                ZCode, etc.)

The bridge is a GammaRay client: it connects to a probe injected into a target Qt app, reads the same models the GammaRay GUI uses, and translates them into MCP JSON-RPC tool calls over stdio. Supports both QML Quick apps (SceneGraph, QML items) and Qt Widget apps (widget hierarchy, properties, attributes).

Related MCP server: lldb-mcp-server

Prerequisites

  • Qt 6.8+ (system)

  • C++20 compiler (GCC 12+, Clang 16+)

  • GammaRay 3.4.0+ (system package: gammaray-dev on Debian/Deepin)

  • qtmcp (consumed via FetchContent — no manual install)

  • Python 3.10+ with pytest (for running the test suite)

Building

1. Install system dependencies

# Debian / Deepin
sudo apt install gammaray-dev gammaray-plugin-quickinspector

2. Build the bridge

cd bridge
cmake -S . -B build -G Ninja
cmake --build build

Offline build (using a local qtmcp clone)

If you have a local clone of qtmcp (e.g. at /home/user/Sources/qtmcp), pass FETCHCONTENT_SOURCE_DIR_QTMcp to skip the network fetch:

cd bridge
cmake -S . -B build -G Ninja \
  -DFETCHCONTENT_SOURCE_DIR_QTMcp=/home/user/Sources/qtmcp \
  -DFETCHCONTENT_FULLY_DISCONNECTED=ON
cmake --build build

3. Run

# Start a probe (inject into a QML app)
gammaray --inject-only --listen tcp://127.0.0.1:11732 \
  --injector preload /usr/lib/qt6/bin/qml /path/to/app.qml -platform offscreen

# Or inject into a widget app
gammaray --inject-only --listen tcp://127.0.0.1:11732 \
  --injector preload /path/to/widget-app

# Start the bridge (stdio MCP server)
bridge/run.sh

The bridge starts in lazy-connect mode. Call connectProbe("127.0.0.1", 11732) from your MCP client once the probe is up.

4. Build a .deb package (optional)

cd bridge/build
cpack -G DEB

The package installs the bridge binary (/usr/bin/gammaray-mcp-bridge), qtmcp shared libs and plugins, and the run.sh helper script. System dependencies (gammaray >= 3.4.0, Qt6 libs) are auto-detected.

MCP Tools

Connection management

Tool

Description

connectProbe(host, port)

Connect to a GammaRay probe (defaults: 127.0.0.1:11732)

connectProbeDefault()

Convenience: connect to 127.0.0.1:11732

disconnectProbe()

Drop connection and forget URL

probeStatus()

Report connection state

QML Navigation

Tool

Description

listQuickWindows()

List QQuickWindows in the target app

selectQuickWindow(index)

Select a window for scene graph introspection

listQuickItems()

Recursive QQuickItem tree with types and flags

listScenegraphNodes()

Recursive QSGNode tree (all node types)

QML Item inspection

Tool

Description

selectQuickItem(address)

Select a QML item by address, populating its properties model

getItemProperties(address)

Get all Q_PROPERTY values (x, y, width, height, opacity, visible, z, anchors, text, font, etc.)

SG Node inspection

Tool

Description

selectScenegraphNode(address)

Select a SG node, populating geometry/material sub-models

getNodeVertices(address)

Read vertex data of a GeometryNode

getNodeAdjacency(address)

Read adjacency/drawing mode of a GeometryNode

getMaterialShaders(address)

List shader stages for a node's material

getShaderSource(row)

Get shader source code (async via MaterialExtensionInterface)

getMaterialProperties(address)

Get material property name/value pairs

Rendering visualization

Tool

Description

setRenderMode(mode)

Set render mode (NormalRendering, VisualizeOverdraw, etc.)

setSlowMode(enabled)

Toggle continuous rendering

Widget inspection

Tool

Description

listWidgets()

Recursive QWidget hierarchy (types, names, visibility)

selectWidget(address)

Select a widget, populating its property and attribute models

getWidgetProperties(address)

Get all Q_PROPERTY values (geometry, font, palette, window flags, etc.)

getWidgetAttributes(address)

Get Qt::WidgetAttribute flags (acceptDrops, enabled, etc.)

Qt Model inspection

Tool

Description

listQtModels()

List all QAbstractItemModel instances (proxies nested), with row/column counts

selectModel(address)

Select a model, populating its content/headers/selection-models sub-models

getModelContent(address, maxRows, maxColumns)

Read the model's table data (bounded, defaults 50×20)

getModelHeaders(address, maxSections)

Read horizontal and vertical header labels

getModelCell(address, row, column)

Read every role name/type/value for one cell

listSelectionModels(address)

List QItemSelectionModel instances attached to the selected model

Testing

# QML test suite (requires a QML app probe):
./tests/run_tests.sh

# Widget test suite (requires a widget app probe):
./tests/run_widget_tests.sh

# Unit tests only:
./tests/run_tests.sh --no-probe

See tests/README.md for details.

License

GPL-2.0-or-later. The bridge links GammaRay libraries (GPL-2.0-or-later) and uses qtmcp (available under LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only — we comply under GPL-2.0-only).

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Bridges VSCode's Language Server Protocol with MCP to give AI assistants instant access to code intelligence, delivering 100-1000x faster responses with 90% fewer tokens than traditional text-based searching. Provides 17 production-ready tools for navigation, refactoring, diagnostics, and code analysis.
    35
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that exposes LLDB debugging capabilities, enabling AI-assisted interactive debugging of C/C++ applications through 40 specialized tools.
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server bridging Lauterbach TRACE32 debuggers to AI agents for autonomous debugging, providing 47 tools for execution control, breakpoints, memory, registers, variables, and symbol inspection.
    100
    9
    MIT