Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

KeyboardExtAX

de Nikitosinaversión 0.1.2i★ –iSe ejecuta en tu computadora
Nombre en el registroio.github.Nikitosina/keyboard-ext-ax

Instalar

Resumen

Descripción del creador (original en inglés)

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

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en tu computadora
  • Transporte: stdio
  • Categoría: Herramientas para desarrolladores

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

Necesitas

  • PyPIuv de Python instalado (para el comando uvx)

¿Qué app usas?

Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.

Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json

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

Ejecuta esto en tu terminal

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

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

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

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "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"
      }
    }
  }
}

Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.

Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.

Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.

Valores que debes completar

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

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 8 nov 2026

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub Nikitosina, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Comparado con otros en Herramientas para desarrolladoresi

  • Más estrellas que el 0% de los otros 4906 servidores de esta categoría
  • Publicado en el registro más recientemente que el 50% de los otros 4906 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 4906 servidores de esta categoría

Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.

Preguntas frecuentes

¿Es seguro KeyboardExtAX?

Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.

¿Qué claves o códigos necesita?

El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.

¿Se ejecuta en mi computadora o en la nube?

Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.1.2) llegó al registro el mes pasado.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: GitHub, Desktop Commander, Cloudflare MCP

Alternativas

Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.

Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi

GitHub

de github

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

Computadora o nube★ 34.245MITActualizado hace 4 días
Instalar

Desktop Commander

de wonderwhy-er

MCP server for terminal commands, file operations, and process management

Se ejecuta en tu computadora★ 10.225MITActualizado hace 16 días
Instalar

Cloudflare MCP

de cloudflare

Cloudflare MCP servers

Se ejecuta en la nube★ 4446Apache-2.0Actualizado hace 14 meses
Instalar

README del creador

Abrir el README

Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.

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.

Pregunta a PopNx