Prototyp · Vorschau: alle Server aus der offiziellen Registry, alle 30 Minuten synchronisiert. Bewertungen und Benutzerkonten folgen in einem späteren Schritt.
PopNx MCPMCP-Server für alle, die KI nutzen · in einfachen Worten erklärt

KeyboardExtAX

von NikitosinaVersion 0.1.2i★ –iLäuft auf deinem Computer
Name in der Registryio.github.Nikitosina/keyboard-ext-ax

Installieren

Überblick

Beschreibung vom Entwickler (englisches Original)

Accessibility snapshots and tap coordinates for active third-party iOS keyboards in Simulator.

Die drei Säulen von PopNx MCP

Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.

Was du damit machen kannst

Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.

  • Verbindung: Läuft auf deinem Computer
  • Transport: stdio
  • Kategorie: Sonstiges

Installation

Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.

Bevor du installierst

  • Basischecks: 1 von 1 bestanden
  • Läuft auf deinem Computer mit den Rechten deines Benutzerkontos (Dateien, Netzwerk, Apps).
  • Das trägst du selbst ein: DEVELOPER_DIR, KEYBOARD_EXT_AX_CACHE_DIR

Du brauchst

  • PyPIuv für Python installiert (für den Befehl uvx)

Welche App nutzt du?

Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.

Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein

{
  "mcpServers": {
    "keyboard-ext-ax": {
      "command": "uvx",
      "args": [
        "keyboard-ext-ax",
        "mcp"
      ],
      "env": {
        "DEVELOPER_DIR": "your-value",
        "KEYBOARD_EXT_AX_CACHE_DIR": "your-value"
      }
    }
  }
}

Führe das in deinem Terminal aus

claude mcp add keyboard-ext-ax --env DEVELOPER_DIR=your-value --env KEYBOARD_EXT_AX_CACHE_DIR=your-value -- uvx keyboard-ext-ax mcp

Trag die leeren Werte ein, bevor du ihn startest.

In Cursor öffnen

Oder kopier die Einstellungen selbst

In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen

{
  "mcpServers": {
    "keyboard-ext-ax": {
      "command": "uvx",
      "args": [
        "keyboard-ext-ax",
        "mcp"
      ],
      "env": {
        "DEVELOPER_DIR": "your-value",
        "KEYBOARD_EXT_AX_CACHE_DIR": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

In VS Code öffnen

Oder kopier die Einstellungen selbst

In .vscode/mcp.json in deinem Projekt einfügen

{
  "servers": {
    "keyboard-ext-ax": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "keyboard-ext-ax",
        "mcp"
      ],
      "env": {
        "DEVELOPER_DIR": "your-value",
        "KEYBOARD_EXT_AX_CACHE_DIR": "your-value"
      }
    }
  }
}

Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.

Dieser Server läuft auf deinem Computer, und ChatGPT kann sich nur mit Servern im Internet verbinden. Wähle eine andere App.

Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.

Werte, die du selbst einträgst

  • DEVELOPER_DIR env
    Optional path to the Xcode Developer directory used to build and run the XCTest harness.
  • KEYBOARD_EXT_AX_CACHE_DIR env
    Optional cache directory for shared build products and per-simulator runner state.

Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.

Was er kann

Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.

Basischecksi

Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 7. Nov. 2026

  • ✓ Bestanden

    Entwickler passt zum Repo

    Der Registry-Name wurde mit dem GitHub-Konto Nikitosina bestätigt, dem das Repo gehört

  • … Noch nicht geprüft

    Wird noch gepflegt

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • … Noch nicht geprüft

    Hat eine Lizenz

    Dieses Repo haben wir noch nicht von GitHub gelesen

  • – Nicht zutreffend

    Endpunkt antwortet

    Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet

  • – Nicht zutreffend

    Anmeldung mit OAuth

    Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen

  • … Noch nicht geprüft

    Keine versteckten Anweisungen in Tool-Beschreibungen

    Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen

Im Vergleich mit anderen in Sonstigesi

  • Mehr Sterne als 0 % der anderen 32744 Server in dieser Kategorie
  • Neuer in der Registry veröffentlicht als 47 % der anderen 32744 Server in dieser Kategorie
  • Basischecks gleich gut wie oder besser als bei 100 % der anderen 32744 Server in dieser Kategorie

Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.

Häufige Fragen

Ist KeyboardExtAX sicher?

Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.

Welche Schlüssel oder Codes braucht er?

Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.

Läuft er auf meinem Computer oder in der Cloud?

Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).

Wird er noch gepflegt?

Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (0.1.2) kam letzten Monat in die Registry.

Welche Apps können ihn nutzen?

Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Python (uv) auf deinem Computer.

Was kann ich stattdessen nutzen?

In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, Date Math

Alternativen

Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.

So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti

Spec Driven Development

von formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Läuft auf deinem Computer★ 440MITAktualisiert vor 14 Monaten
Installieren

Remote Desktop Commander

von desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Läuft in der Cloud★ 211Aktualisiert vorgestern
Installieren

Date Math

von JowenDelaPena

Exact date/time math for agents: business days, holidays, time zones, cron, RRULE, SLA. x402 paid.

Läuft in der CloudAktualisiert heute
Installieren

README vom Entwickler

README öffnen

Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.

KeyboardExtAX

Fast, read-only accessibility snapshots of active third-party iOS keyboard extensions in Simulator.

Why this project exists

A custom iOS keyboard runs in a separate app-extension process. When a client app presents that keyboard, ordinary UI automation usually sees the client application's accessibility tree but not the keyboard's useful descendants. The entire keyboard may appear as one opaque element.

That creates a practical automation gap:

  • screenshots can show the keyboard, but extracting reliable tap coordinates from pixels is slow and brittle;
  • the client application's accessibility snapshot does not necessarily expose the extension's keys and controls;
  • starting a new XCTest session for every query is expensive and can disturb keyboard focus;
  • XCTest element handles become stale whenever the keyboard changes layout;
  • automation agents should not need to manage test plans, ports, build products, or runner processes.

KeyboardExtAX fills that gap. It attaches XCTest directly to the already-running keyboard extension by bundle identifier, parses its accessibility hierarchy, and returns plain JSON with absolute logical coordinates. A persistent runner keeps warm snapshots fast, while a small controller owns building, caching, ports, and per-simulator lifecycle.

KeyboardExtAX observes only. Use a separate automation tool, such as XcodeBuildMCP, to launch apps, focus text fields, and perform gestures with the returned coordinates.

Quick start: MCP

Configure keyboard-ext-ax-mcp as a stdio MCP server. Most MCP clients use a configuration shaped like this:

{

"mcpServers": { "KeyboardExtAX": { "command": "keyboard-ext-ax-mcp", "env": { "DEVELOPER_DIR": "/Applications/Xcode.app/Contents/Developer" } } } }

If the MCP client does not inherit your shell PATH, replace the command with the absolute path printed by command -v keyboard-ext-ax-mcp.

The server exposes one tool:

keyboard_snapshot(

simulator_id: " ", extension_bundle_id: "com.example.keyboard.extension", raw: false )

Example input:

{

"simulator_id": "2D78332B-A3C3-4CEE-962B-99EF531FD201", "extension_bundle_id": "com.example.keyboard.extension" }

The result is returned as structured MCP content. The MCP layer delegates directly to the same controller used by the CLI, so build caching, sessions, errors, and output are identical.

Quick start: CLI

With the client text field focused and the requested keyboard visible:

keyboard-ext-ax snapshot \

--simulator \ --extension com.example.keyboard.extension

Add --output /tmp/keyboard.json to write the result to a file. Add --raw for the nested tree and XCTest diagnostics.

Scope and limitations

KeyboardExtAX currently supports:

  • macOS hosts;
  • iOS Simulator;
  • third-party keyboard extensions;
  • Xcode 26.5;
  • read-only accessibility snapshots.

It does not:

  • tap, swipe, or type;
  • launch or foreground the client app;
  • select or enable a keyboard for the user;
  • access physical iOS devices;
  • guarantee compatibility with widgets, Live Activities, or other extension types;
  • guarantee parser compatibility with untested Xcode versions.

The parser reads XCUIApplication.debugDescription. Its text format is not a documented compatibility contract, so each Xcode version must be validated before support is claimed.

Requirements

  • macOS
  • Xcode 26.5 with the desired iOS Simulator runtime installed
  • Python 3.10 or newer
  • A keyboard app and extension already installed in the target simulator
  • The keyboard enabled in Settings → General → Keyboard → Keyboards
  • A foreground client app with a focused text field

If multiple Xcode installations are present, select one with DEVELOPER_DIR or --developer-dir:

export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

Installation

Homebrew (recommended)
brew install nikitosina/tap/keyboard-ext-ax
PyPI with uv

Install both executables permanently:

uv tool install keyboard-ext-ax

Or run the MCP server without a persistent installation:

uvx keyboard-ext-ax mcp
From source
git clone https://github.com/Nikitosina/KeyboardExtAX.git

cd KeyboardExtAX python3 -m venv .venv .venv/bin/python -m pip install -e . source .venv/bin/activate

Every installation provides keyboard-ext-ax and keyboard-ext-ax-mcp. The MCP server can be started with either keyboard-ext-ax-mcp or keyboard-ext-ax mcp.

The bundled Xcode project is ready to use. XcodeGen is needed only when modifying keyboard_ext_ax/harness/project.yml.

Output

The default response is a compact, flat array:

{

"ok": true, "snapshot_id": "9543E2AA-C4D9-4281-9645-7792F7953FE3", "simulator_udid": "2D78332B-A3C3-4CEE-962B-99EF531FD201", "extension_bundle_id": "com.example.keyboard.extension", "pid": 12345, "elapsed_ms": 103.4, "round_trip_ms": 106.1, "session_reused": true, "total_ms": 171.8, "elements": [ { "ref": "0.0.3", "type": "Key", "identifier": "space", "label": "Space", "frame": { "x": 112, "y": 746, "width": 178, "height": 44 }, "center": { "x": 201, "y": 768 }, "tap_x": 201, "tap_y": 768 } ] }

Element fields
FieldMeaning
refStable path within this snapshot only. Refresh it after layout changes.
typeXCTest accessibility element type.
identifierAccessibility identifier, when provided by the extension.
labelAccessibility label, when provided by the extension.
frameAbsolute logical frame in Simulator coordinates.
centerExact floating-point frame center.
tap_x, tap_yRounded integer center, ready for a gesture tool.

Coordinates are Simulator logical coordinates, not screenshot pixels. Do not rescale them before passing them to XcodeBuildMCP for the same simulator.

Session management

keyboard-ext-ax status

keyboard-ext-ax status --simulator keyboard-ext-ax stop --simulator keyboard-ext-ax stop --all

One runner is maintained per simulator. Multiple simulators can be queried concurrently. If a reused runner loses the extension process, KeyboardExtAX recycles it once and returns client_refocus_required.

Errors

Errors are JSON objects with stable codes.

CodeMeaningRecovery
client_refocus_requiredA new or restarted runner is ready.Refocus the client text field and repeat the request.
extension_not_activeXCTest could not attach after three attempts.Confirm that the requested extension—not the system keyboard—is visible, then retry.
runner_start_failedThe persistent XCTest runner did not become ready.Inspect the returned log and log_tail.
build_failedThe XCTest harness failed to build.Inspect the returned build log and verify the selected Xcode.
xcode_unavailableXcode could not be located or queried.Set DEVELOPER_DIR or pass --developer-dir.
extension_bundle_id_missingThe runner received no extension identifier.Supply extension_bundle_id.
snapshot_failedXCTest raised an unexpected snapshot error.Retry with raw: true and inspect diagnostics.

The CLI exits with:

  • 0 for success;
  • 2 for a normal snapshot-state error such as inactive extension;
  • 1 for lifecycle, build, or controller failures.

Architecture

MCP client / CLI

│ ▼ KeyboardExtAXController ├─ build cache ├─ per-simulator lock and state ├─ free-port allocation └─ XCTest runner lifecycle │ JSON over loopback TCP ▼ PersistentKeyboardExtAXTests │ XCUIApplication(bundleIdentifier:) ▼ Active keyboard extension process │ ▼ Parsed tree → compact elements → MCP/CLI JSON

The host app included in this repository is XCTest scaffolding. Snapshot mode does not launch it and does not replace the consumer's foreground client app.

License

KeyboardExtAX is available under the MIT License.

PopNx fragen