Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
NORACU_PYTHONNopython3 used for the bundled iPhone driver; must import pyobjc (Quartz, Vision, AppKit). Unset means auto-probe: first working of /opt/homebrew/bin/python3, /usr/local/bin/python3, python3, /usr/bin/python3.
NORACU_CLICLICKNoPath to the cliclick binary./opt/homebrew/bin/cliclick
NORACU_IMCTL_DIRNoOverride the iPhone driver location (development only).bundled imctl/
NORACU_READ_ONLYNoSet to `1` for observation-only mode: a default-deny allowlist of 12 observe + browser-lifecycle tools; every click/type/paste/key/eval tool is refused.
NORACU_DISABLE_EVALNoSet to `1` to make `browser_evaluate` (arbitrary JS) return an error when called (it stays listed in `tools/list`).
NORACU_ALLOW_FILE_URLNoSet to `1` to let `browser_navigate` open `file://` URLs (blocked by default).
NORACU_DISABLE_AUTO_INSTALLNoSet to `1` to skip the one-time Chromium auto-install on first `browser_launch`.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
mac_screenshotA

Capture the Mac screen as PNG base64, optionally cropped to region {x,y,w,h}. Returns {scale, logical_size, screen:'main'} for the main display; click coordinates are in points (pixels / scale).

mac_ax_stateA

Read the foreground app's accessibility tree (element index/role/title/value/frame; indexes feed mac_click/mac_drag for 30s); menu bar pruned by default (use mac_menu_command); optional app name and depth (default 3, clamped 1-10). Returns ax_empty if the app has no AX-visible window (not frontmost / another Space).

mac_clickA

Click at {x,y} or on a UI element, with optional button (left|right|middle) and count. Use element_index from the latest mac_ax_state (valid 30s); returns element_no_longer_valid when stale.

mac_dragA

Drag from one UI element to another (move windows, sliders, selections). Use from_index/to_index from the latest mac_ax_state (valid 30s); returns element_no_longer_valid when stale.

mac_scrollA

Scroll the frontmost window up/down/left/right by a number of pages (default 1); moves the pointer over that window first.

mac_keyA

Press a key or modifier chord, e.g. 'return', 'esc', 'cmd-c', 'cmd-shift-v', 'arrow-up'. Pass app to refuse input unless that app is frontmost (focus guard).

mac_typeA

Type text at the current focus without modifier keys. Pass app to refuse input unless that app is frontmost (focus guard). Not IME-safe: with a CJK input method active, keystrokes may be re-segmented — use mac_paste for reliable text entry.

mac_pasteB

Write text to the clipboard and paste it with Cmd+V. Pass app to refuse input unless that app is frontmost (focus guard).

mac_menu_commandB

Run an app's menu bar command via accessibility traversal (locale-safe).

browser_launchB

Launch the browser with a persistent profile (headed by default; pass headless:true for headless).

browser_navigateA

Navigate the current tab to an http(s) URL. file:// is disabled unless NORACU_ALLOW_FILE_URL=1.

browser_snapshotB

Return the page's ARIA accessibility snapshot plus a clickable element index list (indexes feed browser_click).

browser_screenshotA

Screenshot the page with optional fullPage, format png|jpeg, quality (1-100, jpeg) and clip {x,y,width,height}; returns the image plus DPR/viewport metadata.

browser_clickA

Click a page element, preferring element_index; selector is a fallback, xy pixel coordinates not recommended. Use element_index from the latest browser_snapshot (valid 30s); returns element_no_longer_valid when stale.

browser_fillA

Fill an input field matched by selector; fill replaces the whole value (browser_type appends keystrokes).

browser_press_keyC

Press a key or chord, e.g. 'Enter' or 'Control+A'.

browser_typeA

Type text via the keyboard into the focused element; type appends keystrokes (browser_fill replaces the whole value).

browser_scrollC

Scroll the page up or down by a number of pages.

browser_readC

Read the page's visible text, optionally scoped to a selector.

browser_evaluateC

Evaluate JavaScript in the page and return the result.

browser_closeB

Close the browser.

phone_statusA

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Return the iPhone Mirroring session status as JSON (running, window, onscreen, frontmost, live, overlay, paused).

phone_launchB

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Ensure iPhone Mirroring is running, brought to the front, and clicks Resume when the connection is paused.

phone_screenshotA

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Screenshot the iPhone screen (the Mirroring window, captured by window id so it works even when covered).

phone_ocrA

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. OCR the iPhone screen into text with coordinates.

phone_findB

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Locate text on the iPhone screen.

phone_tapA

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Tap at {x, y} in normalized 0-1 coordinates. Refused with mirror_not_live when the mirror is paused.

phone_longpressB

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Long-press at {x, y} for an optional duration in seconds.

phone_swipeA

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Swipe (mouse drag) from [x,y] to [x,y] over an optional duration in ms, for gestures such as Home Screen paging; to move a list use phone_scroll.

phone_homeA

EXPERIMENTAL. Go to the iPhone Home Screen via the iPhone Mirroring menu (works without python/pyobjc when the mirror is connected); falls back to an imctl swipe.

phone_app_switcherA

EXPERIMENTAL. Open the iPhone App Switcher via the iPhone Mirroring menu (works without python/pyobjc when the mirror is connected); falls back to an imctl gesture.

phone_scrollA

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Scroll the list under the mirror up or down by about distance window heights (default 0.5), using trackpad-style scroll events.

phone_typeB

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Type text via the clipboard (IME-safe).

phone_keyA

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Press a key: return, delete, up, down, left, or right.

phone_openA

EXPERIMENTAL. Needs iPhone Mirroring and a python3 with pyobjc. Open an app via the mirroring Spotlight menu command/shortcut, type the name, OCR-pick the matching app row and tap it; returns to the home screen when not found.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 35 tools

Disambiguation4/5

Tools are cleanly separated by platform prefixes (mac_, browser_, phone_) and each targets a distinct action. Minor potential confusion exists among text-entry tools (mac_type vs mac_paste vs mac_key) and gesture tools (phone_scroll vs phone_swipe), but descriptions clearly explain when to use each.

Naming Consistency5/5

All tool names consistently use snake_case with a platform prefix followed by an action or resource, e.g. browser_navigate, mac_click, phone_screenshot. There are no mixed camelCase or inconsistent verb styles.

Tool Count2/5

The server exposes 35 tools, which is a very large surface for an MCP server. Although they are split across three coherent domains (Mac, browser, iPhone), the total volume increases selection burden and exceeds a comfortably scoped toolset.

Completeness4/5

Coverage is broad across Mac accessibility/input, browser automation, and iPhone mirroring, with lifecycle tools such as launch, screenshot, inspect, interact, and close. Minor gaps remain, such as explicit browser tab/history management and a dedicated Mac app-launch tool, but core workflows are covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues