Skip to main content
Ikenga 3 engines Download

@ikenga/mcp-iyke · v0.2.1 · Apache-2.0

Let the agent you already use drive your workspace.

Any MCP client — Claude Code, Cursor, or your own tool — can navigate panes, read workspace state, inspect logs, and interact with the UI. The agent and the workspace share a wire.

You ask Claude Code to set something up, it completes the task, and you switch to the desktop app to check the result. Then you switch back. Then back again. Two windows, two contexts, a constant seam. @ikenga/mcp-iyke closes that seam.

The agent reads what's on screen

iyke_state returns the current sidebar mode, the focused pane's route, and the full pane tree. iyke_dom returns an accessibility-tree snapshot of the focused pane — the same structure Playwright uses to identify elements. iyke_screenshot returns a PNG of the window or a specific pane.

The agent can see where you are and what's in front of you — without you describing it.

The agent navigates

iyke_go navigates the focused pane to any route. iyke_split opens a second (or third) pane, horizontally or vertically. iyke_focus switches which pane is active by id or by 1-based index. iyke_mode switches the sidebar activity mode. iyke_open opens a new tab — a route, a chat, an artifact, a mini-app.

The agent interacts with UI elements

iyke_click, iyke_type, and iyke_key let the agent interact with elements the same way a user would. iyke_wait blocks until a condition is met: text appears, a selector resolves, a ref goes away.

This is useful for driving pkgs that don't have their own API surface — the agent can work with the visual UI directly.

The agent inspects the runtime

iyke_logs returns the last 500 console and error log entries from the running webview. iyke_network returns the last 100 fetch/XHR entries with status and duration. iyke_query_cache dumps the TanStack Query cache for the focused pane.

When the agent is debugging a pkg, it can read the evidence without you opening DevTools.

The agent talks to iframe pkgs

iyke_iframe_state reads the latest state published by an iframe pkg (like Tasks). iyke_iframe_send fires a postMessage into a pkg pane. Pkgs that expose structured state become legible to the agent without a custom API.

Full tool list

Layout & navigation

ToolWhat it does
iyke_stateCurrent sidebar mode + focused pane route + full pane tree
iyke_goNavigate the focused pane to a route path
iyke_modeSwitch sidebar activity mode
iyke_openOpen a new tab (route, terminal, chat, artifact, mini-app)
iyke_splitSplit a pane horizontally or vertically
iyke_focusFocus a pane by id or 1-based DFS leaf index
iyke_closeClose a pane (focused pane if pane_id omitted)

Runtime inspection & interaction

ToolWhat it does
iyke_domAccessibility-tree snapshot of the focused pane
iyke_logsLast 500 console + error log entries from the webview
iyke_networkLast 100 fetch/XHR network entries with status + duration
iyke_screenshotPNG of the window or a specific pane
iyke_waitWait until a predicate is satisfied (text / selector / ref / gone)
iyke_clickClick an element by ref, selector, or text
iyke_typeType into an input, textarea, or contenteditable
iyke_keyDispatch a keyboard combo (e.g. Ctrl+S, Meta+K)
iyke_query_cacheDump TanStack Query cache for the focused pane
iyke_devtoolsOpen Chrome DevTools (debug builds only)

Iframe pkg state

ToolWhat it does
iyke_iframe_stateRead the latest published state from an iframe pane
iyke_iframe_sendFire a postMessage to an iframe pane

Install

Via Claude Code (recommended)

Install once, and every Claude Code session on your machine has the iyke_* tools available. The shell doesn't need to be running for the install itself — the tools report a structured error until the app is open.

npm install -g @ikenga/mcp-iyke

Then register with Claude Code:

claude mcp add iyke -s user -- iyke-mcp

Via npx (no global install)

claude mcp add iyke -s user -- npx -y @ikenga/mcp-iyke

As an Ikenga package

When installed as a pkg, the shell manages the MCP server's lifecycle — it starts when the shell starts and registers itself with whatever engine (Claude Code, Gemini, Codex) is active.

ikenga add com.ikenga.mcp-iyke

Requires the Ikenga shell. Get Ikenga →

Trust boundary

@ikenga/mcp-iyke reads control.json from your app-local-data directory — macOS: ~/Library/Application Support/app.ikenga/control.json; Linux: $XDG_DATA_HOME/app.ikenga/control.json; Windows: %APPDATA%/app.ikenga/control.json.

The file contains the localhost port, the bearer token, and the owning PID. The MCP server talks only to 127.0.0.1 on that port, with that token. No outbound network calls, no telemetry.

If the Ikenga app isn't running, every tool call returns a structured error immediately — it does not hang. Stale control.json files (left behind by a force-quit) are auto-deleted once they are at least 5 minutes old. Younger stale files are reported rather than silently overwritten, to avoid clobbering an app that is still starting up.

Works with

RequiresIkenga shell running (any version exposing the v1 control bridge)
MCP clientsClaude Code (claude mcp add), Cursor, any MCP-compatible client
Node.js≥ 20
BunRuns without compilation (bun src/index.ts)
NetworkLoopback only — 127.0.0.1 on the port from control.json
Published onnpm — @ikenga/mcp-iyke