KeyboardExtAX MCP server
io.github.Nikitosina/keyboard-ext-ax·v0.1.2Accessibility snapshots and tap coordinates for active third-party iOS keyboards in Simulator.
0 stars25 downloads/wk
Reviews
Write oneNobody has reviewed KeyboardExtAX yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
KeyboardExtAX tools (1)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
keyboard_snapshotReturn the active keyboard extension accessibility tree and tap coordinates.
Public scan report
scanner v0.1.10 · 2026-10-15 · same rubric, same numbers if you re-run it
- Code scan6 source files scanned25/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 22 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
How KeyboardExtAX compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 92/100
- higher than 95% of 48,255 servers
- Tools
- 1
- the typical server has 7
- Tools that change things
- 0%
- typical: 0%. Fewer write tools means less an agent can break
- Downloads a week
- 25
- more than 11% of 12,191 servers with a package
What its tools let an agent do: 1 read
Release history: 2 versions in the registry since 2026-09-18, latest 2026-09-23, typically one every 5 days.
Install KeyboardExtAX in Claude Code, Cursor or VS Code
claude mcp add keyboard-ext-ax -- uvx keyboard-ext-ax
What the publisher says
From the KeyboardExtAX repository's README, as published. We do not edit it. Read it on GitHub
<!-- mcp-name: io.github.Nikitosina/keyboard-ext-ax -->
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: "<SIMULATOR_UDID>",
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 <SIMULATOR_UDID> \
--extension com.example.keyboard.extensionAdd --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
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Grade history
- 2026-09-19restoreB → Ascore 92
KeyboardExtAX: common questions
- Is KeyboardExtAX MCP server safe?
- Yes, by our scan: it is graded A (92/100). Read the KeyboardExtAX safety report
- How do I install KeyboardExtAX?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does KeyboardExtAX need an API key?
- No secret keys are declared. It reads 2 settings from the environment.
- Is KeyboardExtAX maintained?
- The last commit was 42 days ago (2026-09-23). The latest release is v0.1.2.
- How does KeyboardExtAX compare with other MCP servers?
- safety score 92/100 (higher than 95% of 48,255 servers); tools 1 (the typical server has 7); tools that change things 0% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.