gammaray-mcp-bridge

gammaray-mcp-bridge

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.

Category
Visit Server

README

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

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

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured