Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

GNOME UI MCP

OCI · GHCR.IO/ASATTELMAIER/GNOME-UI-MCP:0.5.0 · SCANNED SEP 20

GNOME Wayland desktop automation via AT-SPI discovery and Mutter input.

0 this week 52 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security0
  • Malware scan not yet available for this package.Unverified
  • Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
  • Install-script risk not yet assessed.Unverified
  • Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.Unverified
Provenance & Transparency45
Schema Quality & AI Usability78
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 6689 tokens (~58/item across 115 items; 115 tools + 0 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "clear_boundaries" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 116 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass

Unverified: 1 category

A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

Install

How do I install the GNOME UI MCP server?

GNOME UI MCP runs locally as a container image, launched with docker run --rm -i ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

oci · ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0

# add to Claude Code
claude mcp add asattelmaier-gnome-ui-mcp -- docker run --rm -i ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0
// .cursor/mcp.json
{
  "mcpServers": {
    "asattelmaier-gnome-ui-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "asattelmaier-gnome-ui-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add asattelmaier-gnome-ui-mcp -- docker run --rm -i ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "asattelmaier-gnome-ui-mcp": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0"
      ],
      "enabled": true
    }
  }
}
# ~/.hermes/config.yaml
mcp_servers:
  asattelmaier-gnome-ui-mcp:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "asattelmaier-gnome-ui-mcp": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0"
      ]
    }
  }
}
// mcp.json
{
  "mcpServers": {
    "asattelmaier-gnome-ui-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 16 Sept 26 +1
    • Stability: 0.97 → pass security
  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 −4
    • Stability: pass → 0.77 functional
  • 8 Sept 26 +1
    • Stability: 0.97 → pass security
    • Security disclosure: unverified → fail functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 20 Sept 2026 · Analysed oci/ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem oci
Reason No attestation published

Background: How many MCP packages publish verified provenance →

MCP tools · 115 exposed · ~6,671 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
accessibility_tree ~127

Return the accessibility tree for the whole desktop or a specific application. Optionally filter by roles, states, or showing-only.

NameTypeReqDescription
app_nameOnly return the tree for this application.
filter_rolesOnly include nodes with these roles.
filter_statesOnly include nodes that have all these states.
include_actionsbooleanInclude available actions on each node.
include_textbooleanInclude text content of each node.
max_depthintegerMaximum depth to traverse.
showing_onlybooleanOnly include nodes that are currently showing.

No output schema declared.

No examples provided.

activate_element ~49

Activate an element with action first, then focus plus keyboard, then mouse fallback.

NameTypeReqDescription
action_nameSpecific AT-SPI action to invoke.
element_idstringyesElement ID to activate.

No output schema declared.

No examples provided.

analyze_screenshot ~56

Analyze a screenshot using a vision language model.

NameTypeReqDescription
modelSpecific model to use.
promptstringyesAnalysis prompt.
providerstringVLM provider: openrouter, anthropic, or ollama.

No output schema declared.

No examples provided.

assert_element ~95

Assert that an element exists with expected states. Returns pass/fail with structured checks.

NameTypeReqDescription
app_nameRestrict search to this application.
expected_statesStates the element should have.
querystringyesText to search for.
roleExpected element role.
timeout_msintegerMaximum time to wait for element to appear.
unexpected_statesStates the element should not have.

No output schema declared.

No examples provided.

assert_text ~61

Assert that an element's text matches expected value.

NameTypeReqDescription
element_idstringyesElement ID to check text of.
expectedstringyesExpected text value.
matchstringMatch mode: exact, contains, startswith, or regex.

No output schema declared.

No examples provided.

clear_boundaries ~13

Remove automation boundaries.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

click ~77

Click the element referenced by a uid from the latest snapshot. Auto-waits for the UI to settle and reports effect verification.

NameTypeReqDescription
dbl_clickbooleanSet true for a double click.
include_snapshotbooleanAttach a fresh snapshot of the result to the response.
uidstringyesElement uid from the latest snapshot.

No output schema declared.

No examples provided.

click_at ~78

Click at absolute screen coordinates and report input injection plus any observable effect verification.

NameTypeReqDescription
buttonstringMouse button.
click_countintegerNumber of clicks (1=single, 2=double, 3=triple).
xintegeryesX screen coordinate.
yintegeryesY screen coordinate.

No output schema declared.

No examples provided.

click_element ~93

Click an element or its resolved clickable ancestor, and report input injection plus observable effect verification.

NameTypeReqDescription
action_nameSpecific AT-SPI action to invoke.
buttonstringMouse button: left, middle, or right.
click_countintegerNumber of clicks (1=single, 2=double, 3=triple).
element_idstringyesElement ID to click.

No output schema declared.

No examples provided.

click_notification_action ~45

Invoke an action on a desktop notification by its ID and action key.

NameTypeReqDescription
action_keystringyesAction key to invoke.
notification_idintegeryesNotification ID.

No output schema declared.

No examples provided.

click_text_ocr ~48

Find text on screen via OCR and click it.

NameTypeReqDescription
buttonstringMouse button: left, middle, or right.
targetstringyesText to find and click.

No output schema declared.

No examples provided.

clipboard_read ~54

Read the Wayland clipboard contents. Supports custom MIME types for reading binary data (returned as base64).

NameTypeReqDescription
mime_typestringMIME type to request.
selectionstringSelection type: clipboard or primary.

No output schema declared.

No examples provided.

clipboard_write ~71

Write to the Wayland clipboard. Supports custom MIME types. For binary types, pass base64-encoded data as text.

NameTypeReqDescription
mime_typestringMIME type for the data.
selectionstringSelection type: clipboard or primary.
textstringyesText to write to clipboard.

No output schema declared.

No examples provided.

close_app ~35

Gracefully close all windows of an application by sending Alt+F4.

NameTypeReqDescription
app_namestringyesApplication name to close.

No output schema declared.

No examples provided.

close_window ~19

Close the currently focused window via Alt+F4.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

collapse_node ~33

Collapse a tree or expander node if it is currently expanded.

NameTypeReqDescription
element_idstringyesElement ID to collapse.

No output schema declared.

No examples provided.

compare_screenshots ~86

Compare two screenshots using a vision language model.

NameTypeReqDescription
image_path_1stringyesPath to the first screenshot.
image_path_2stringyesPath to the second screenshot.
modelSpecific model to use.
promptCustom comparison prompt.
providerstringVLM provider: openrouter, anthropic, or ollama.

No output schema declared.

No examples provided.

compare_state ~43

Compare two desktop state snapshots and return changes.

NameTypeReqDescription
after_idstringyesSnapshot ID for after state.
before_idstringyesSnapshot ID for before state.

No output schema declared.

No examples provided.

dbus_call ~107

Call any D-Bus method on the session bus. Use with caution.

NameTypeReqDescription
argsArguments to pass to the method.
bus_namestringyesD-Bus bus name.
interfacestringyesD-Bus interface name.
methodstringyesMethod to call.
object_pathstringyesD-Bus object path.
signatureD-Bus type signature for the arguments.
timeout_msintegerTimeout in milliseconds.

No output schema declared.

No examples provided.

dismiss_notification ~35

Dismiss a desktop notification by its ID via D-Bus CloseNotification.

NameTypeReqDescription
notification_idintegeryesNotification ID to dismiss.

No output schema declared.

No examples provided.

drag ~96

Drag from one screen position to another with smooth interpolation.

NameTypeReqDescription
buttonstringMouse button.
duration_msintegerDuration of the drag in milliseconds.
end_xintegeryesEnding X coordinate.
end_yintegeryesEnding Y coordinate.
start_xintegeryesStarting X coordinate.
start_yintegeryesStarting Y coordinate.
stepsintegerNumber of interpolation steps.

No output schema declared.

No examples provided.

element_at_point ~79

Return the deepest visible element at a given screen coordinate.

NameTypeReqDescription
app_nameRestrict search to this application.
include_click_targetbooleanInclude resolved click target in result.
max_depthintegerMaximum depth to search.
xintegeryesX screen coordinate.
yintegeryesY screen coordinate.

No output schema declared.

No examples provided.

expand_node ~33

Expand a tree or expander node if it is currently collapsed.

NameTypeReqDescription
element_idstringyesElement ID to expand.

No output schema declared.

No examples provided.

file_dialog_set_path ~52

Set a file path in a GTK file dialog by sending Ctrl+L to activate the location entry, typing the path, and pressing Return.

NameTypeReqDescription
pathstringyesFile path to set in the dialog.

No output schema declared.

No examples provided.

fill ~103

Type text into an input, or set a checkbox/radio/switch from a boolean value (true/false), for the element referenced by a uid from the latest snapshot. Auto-waits for the UI to settle.

NameTypeReqDescription
include_snapshotbooleanAttach a fresh snapshot of the result to the response.
uidstringyesElement uid from the latest snapshot.
valuestringyesText to type, or 'true'/'false' for toggles.

No output schema declared.

No examples provided.

fill_form ~91

Fill multiple elements in one call from a list of {uid, value} objects (uids from the latest snapshot). Prefer this over repeated fill calls for forms: fewer round trips. Auto-waits for the UI to settle.

NameTypeReqDescription
fieldsarrayyesList of {uid, value} objects to fill, in order.
include_snapshotbooleanAttach a fresh snapshot of the result to the response.

No output schema declared.

No examples provided.

find_and_activate ~161

Find the best matching element and activate it, optionally scoped to a subtree or visible popup.

NameTypeReqDescription
action_nameSpecific AT-SPI action to invoke.
app_nameRestrict search to this application.
bounds_onlybooleanOnly match elements that have screen bounds.
clickable_onlybooleanOnly match elements that are directly clickable.
max_depthintegerMaximum tree depth to search.
querystringyesText to search for.
roleOnly match elements with this role.
showing_onlybooleanOnly match elements that are currently showing.
within_element_idScope search to children of this element.
within_popupbooleanScope search to the currently visible popup.

No output schema declared.

No examples provided.

find_elements ~181

Search accessible elements by text and optional role filter, with optional clickable and bounds filters, optionally scoped to a subtree or visible popup.

NameTypeReqDescription
app_nameRestrict search to this application.
bounds_onlybooleanOnly return elements that have screen bounds.
clickable_onlybooleanOnly return elements that are directly clickable.
max_depthintegerMaximum tree depth to search.
max_resultsintegerMaximum number of results to return.
querystringText to search for in element names and descriptions.
roleOnly return elements with this role (e.g. 'push button').
showing_onlybooleanOnly return elements that are currently showing.
within_element_idScope search to children of this element.
within_popupbooleanScope search to the currently visible popup.

No output schema declared.

No examples provided.

find_text_ocr ~70

Find text on screen via OCR and return its coordinates.

NameTypeReqDescription
heightHeight of search region.
targetstringyesText to search for.
widthWidth of search region.
xX coordinate of search region.
yY coordinate of search region.

No output schema declared.

No examples provided.

focus_element ~31

Focus an element through the AT-SPI component interface.

NameTypeReqDescription
element_idstringyesElement ID to focus.

No output schema declared.

No examples provided.

get_action_history ~31

Get recent automation actions with undo hints.

NameTypeReqDescription
last_nintegerNumber of recent actions to return.

No output schema declared.

No examples provided.

get_element_path ~39

Return the ancestry chain from root to a given element as a list of nodes.

NameTypeReqDescription
element_idstringyesElement ID to trace path for.

No output schema declared.

No examples provided.

get_element_properties ~45

Return extended AT-SPI properties for an element: value, selection, relations, attributes, and image info.

NameTypeReqDescription
element_idstringyesElement ID to get properties for.

No output schema declared.

No examples provided.

get_element_text ~47

Return detailed text information for an element: full text, caret offset, selections, and text attributes at the caret position.

NameTypeReqDescription
element_idstringyesElement ID to get text from.

No output schema declared.

No examples provided.

get_elements_by_ids ~44

Resolve multiple element IDs in one call, returning summaries for found elements and a list of missing IDs.

NameTypeReqDescription
element_idsarrayyesList of element IDs to resolve.

No output schema declared.

No examples provided.

get_focused_element ~18

Return metadata about the currently focused element.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_keyboard_layout ~18

Read the active keyboard layout from GSettings.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_monitor_for_point ~39

Return which monitor contains the given screen coordinates.

NameTypeReqDescription
xintegeryesX screen coordinate.
yintegeryesY screen coordinate.

No output schema declared.

No examples provided.

get_pixel_color ~37

Get the pixel color at screen coordinates.

NameTypeReqDescription
xintegeryesX screen coordinate.
yintegeryesY screen coordinate.

No output schema declared.

No examples provided.

get_region_color ~60

Get the average color of a screen region.

NameTypeReqDescription
heightintegeryesHeight of region.
widthintegeryesWidth of region.
xintegeryesX coordinate of region.
yintegeryesY coordinate of region.

No output schema declared.

No examples provided.

get_table_cell ~49

Return information about a specific cell in a table element.

NameTypeReqDescription
colintegeryesColumn index.
element_idstringyesTable element ID.
rowintegeryesRow index.

No output schema declared.

No examples provided.

get_table_info ~34

Return table dimensions, column headers, and caption for a table element.

NameTypeReqDescription
element_idstringyesTable element ID.

No output schema declared.

No examples provided.

get_tooltip_text ~51

Get the tooltip text for an element. Checks the element's description first, then looks for tooltip relations in the AT-SPI tree.

NameTypeReqDescription
element_idstringyesElement ID to get tooltip from.

No output schema declared.

No examples provided.

gsettings_get ~39

Read a GSettings key value.

NameTypeReqDescription
keystringyesKey name within the schema.
schemastringyesGSettings schema ID.

No output schema declared.

No examples provided.

gsettings_list_keys ~30

List all keys in a GSettings schema.

NameTypeReqDescription
schemastringyesGSettings schema ID.

No output schema declared.

No examples provided.

gsettings_reset ~42

Reset a GSettings key to its default value.

NameTypeReqDescription
keystringyesKey name within the schema.
schemastringyesGSettings schema ID.

No output schema declared.

No examples provided.

gsettings_set ~62

Write a GSettings key value.

NameTypeReqDescription
keystringyesKey name within the schema.
schemastringyesGSettings schema ID.
valuestring|integer|number|booleanyesValue to set (string, number, or boolean).

No output schema declared.

No examples provided.

highlight_element ~58

Take a screenshot with a colored rectangle highlighting an element for visual debugging.

NameTypeReqDescription
colorstringColor of the highlight rectangle.
element_idstringyesElement ID to highlight.
labelOptional label to display on the highlight.

No output schema declared.

No examples provided.

hover ~64

Move the pointer over the element referenced by a uid from the latest snapshot (e.g. to reveal a hover menu or tooltip).

NameTypeReqDescription
include_snapshotbooleanAttach a fresh snapshot of the result to the response.
uidstringyesElement uid from the latest snapshot.

No output schema declared.

No examples provided.

hover_element ~31

Move cursor to an element's center without clicking.

NameTypeReqDescription
element_idstringyesElement ID to hover over.

No output schema declared.

No examples provided.

Common questions

What is the GNOME UI MCP server?

GNOME UI MCP is listed in the public MCP registry as io.github.asattelmaier/gnome-ui-mcp. GNOME Wayland desktop automation via AT-SPI discovery and Mutter input. This page covers its container image (ghcr.io/asattelmaier/gnome-ui-mcp:0.5.0).

Is the GNOME UI MCP server safe to use?

GNOME UI MCP scores 52 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the GNOME UI MCP server expose?

GNOME UI MCP exposes 115 tools: accessibility_tree, activate_element, analyze_screenshot, assert_element, assert_text, and 110 more. Their descriptions and schemas cost roughly 6,671 tokens of context every time the server is loaded.

Is the GNOME UI MCP server still maintained?

GNOME UI MCP is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the GNOME UI MCP server under?

GNOME UI MCP declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.