@ikenga/mcp-iyke
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| iyke_stateA | Get the current state of the Ikenga desktop app — sidebar mode, focused pane route, and the full pane tree under shell.panes. shell.panes has shape { leaves: [{ id, focused, activeTabIdx, tabs: [{kind,title}] }], tree: }; use leaves[].id with iyke_focus or iyke_close (pane_id) to operate on a specific pane. Call this before iyke_go / iyke_mode / iyke_focus / iyke_close to check what the user is currently looking at. |
| iyke_goA | Navigate the focused pane to a route path inside the Ikenga desktop app (e.g. "/notes/today"). Path must start with "/". This replaces the focused pane's active tab content; use iyke_open with kind=route to add a new tab instead. |
| iyke_modeA | Switch the activity-bar sidebar mode. Valid modes: app, files, agents, sessions, settings, storyboard, video-engine, canvas-design, image-generator. The first five are core; the rest are mini-apps. |
| iyke_openA | Open a new tab in the focused pane. |
| iyke_splitA | Split the focused pane (or a specific pane via pane_id) into two. "horizontal" splits side-by-side; "vertical" splits top-bottom. Subject to the in-app MAX_LEAVES cap (currently 6). |
| iyke_focusA | Focus a specific pane. Provide either pane_id (leaf id from iyke_state response — shell.panes.leaves[].id) or index (1-based DFS leaf index, matching the in-app ⌃1..⌃6 keyboard shortcuts). |
| iyke_closeA | Close a pane (or the focused pane if pane_id omitted). Closes the entire pane and all its tabs — to close a single tab from the in-app keyboard, use ⌘⇧W (⌘W closes the whole pane). Refuses to close the last remaining pane. |
| iyke_domA | Take an accessibility-tree snapshot of the focused pane. Returns Playwright-style text plus structured JSON. Each interactive element gets a stable ref like e1, e2; pass that ref to iyke_click / iyke_type / iyke_key. Refs invalidate on the next snapshot or page navigation. Use |
| iyke_logsA | Read recent console + error logs (last 500) from the running webview. Includes window error and unhandledrejection captures. |
| iyke_networkC | Read recent fetch + XHR network activity (last 100). Each entry has method, url, status, duration_ms, and error if it failed. |
| iyke_screenshotA | Capture a PNG screenshot of either the full window or a specific pane. Returns the saved path, dimensions, and byte count. Default writes to ~/.local/share/ikenga/screenshots/. |
| iyke_waitA | Wait until a predicate is satisfied or timeout. Use this after iyke_click / iyke_go to wait for the new state to render, instead of fixed sleeps. Returns { satisfied, elapsed_ms, message? }. |
| iyke_clickB | Click an element. Specify exactly one of |
| iyke_typeA | Type text into an input/textarea/contenteditable element. Specify exactly one of |
| iyke_keyA | Dispatch a keyboard combo. Use names like "Enter", "Escape", "Tab", "ArrowDown", and modifiers Ctrl/Alt/Shift/Meta separated by + or , (e.g. "Ctrl+S", "Meta+K"). Optional |
| iyke_query_cacheA | Dump the TanStack Query cache: queryKey, status, fetchStatus, isStale, dataUpdatedAt, errorUpdatedAt, error, and a 200-char data preview for each entry. Useful for diagnosing stale data or failed fetches. |
| iyke_devtoolsA | Open Chrome DevTools for the main webview (debug builds only). Returns 503 in production builds. |
| iyke_iframe_stateC | Read the latest published state object for an iframe pane (storyboard cursor, comp current frame, etc.). Iframes call publishState(key, value) from their iyke-bridge to expose runtime state for inspection. |
| iyke_iframe_sendB | Send a fire-and-forget postMessage to an iframe pane. The iframe bridge listens for known kinds (e.g. "story-select") and acts on the payload. Use to drive mini-app actions from outside the running app. |
| iyke_project_createA | Create a new project in the Ikenga shell. Projects scope chats, installed pkgs, pane layouts, todos, scratchpads and cron jobs — switching project rebinds those surfaces. Slug |
| iyke_project_updateA | Patch fields on an existing project. Only the fields you pass in |
| iyke_project_listA | List projects in switcher order (position ASC, then created_at). Each entry has id, display_name, root_path, icon, color, description, position, is_default, created_at, archived_at. Archived projects are hidden by default — pass include_archived=true to surface them (e.g. when an agent is restoring an old project). |
| iyke_project_archiveA | Archive a project (soft-delete — sets archived_at, no data removed). The project disappears from the default switcher list but its sessions/pkgs/todos remain on disk and can be restored by a later iyke_project_update if needed. Refuses to archive the built-in "Default" project. If the archived project was active, the shell falls back to Default automatically. |
| iyke_project_set_activeA | Switch the shell's active project. Subsequent new chats, scratchpads, todos and pkg installs default to this project; existing project-scoped TanStack queries (sessions, pkgs, todos, scratchpads, cron) refetch automatically. Does NOT navigate panes — pane contents stay put until a phase-2/6-aware surface reads the new active id. Fails if the id is unknown or archived. |
| iyke_project_get_activeA | Return the currently active project (id, display_name, root_path, icon, color, description, position, is_default, created_at). Call this before iyke_project_set_active or any project-scoped mutation so an agent knows which project the user is in. |
| iyke_session_listA | List Claude chat sessions. Filter by project (defaults to active); pass include_all=true to list across all projects. Returns at most 50 threads by default (max 200). Each entry has id, title, cwd, project_id, claude_session_id, created_at, updated_at. |
| iyke_session_moveA | Move a chat thread between projects. Metadata-only — does not restart the claude subprocess. The cwd captured at spawn time stays whatever it was. Fails if the target project is unknown or archived. |
| iyke_session_start_in_projectA | Mint a new Claude chat thread attached to a project. The shell resolves the project root as the session cwd, builds the layered Claude-config overlay dir (skills + agents + commands + merged .mcp.json) for the spawn, and routes the request through the ACP |
| iyke_mcp_listA | List MCP servers visible from a project. Returns each (server name × source) pair so conflicts across tiers are surfaced separately. Each entry reports: source tier (personal | workspace_pkg | project | project_pkg), provider (pkg id or "personal"), lifecycle (long-lived | per-call | on-demand), live state (running / parked / crashed / blocked / not-started / on-demand), and the source file path. Defaults to the active project; pass project_id to query a specific one. |
| iyke_mcp_restartA | Restart a supervised MCP server by pkg id. Restarts every long-lived MCP entry the pkg declares (the supervisor keys per pkg, not per server name). Useful when a child has wedged. Fails with 404 if the pkg is not supervised — per-call MCPs spawn fresh on every tool invocation and have nothing persistent to restart. |
| iyke_pkg_trust_statusA | Get the trust state for a single installed pkg. Returns one of: auto_trusted (built-in com.ikenga.* shipped with the shell), auto_granted (no sensitive permissions declared), granted (user approved a specific manifest version), or needs_approval (sensitive perms declared but no current grant; either never approved, perms changed since last grant, or explicitly revoked). When state is needs_approval, MCP tools/call against this pkg returns the structured |
| iyke_pkg_trust_listA | List trust state for every installed pkg. Returns one entry per pkg with state (auto_trusted / auto_granted / granted / needs_approval), declared sensitive permissions summary, and last grant timestamp when applicable. Use when surveying which third-party pkgs need user approval before their MCP tools can be invoked. |
| iyke_pkg_violations_listA | List kernel-level permission-violation audit rows newest-first. Today only |
| iyke_secret_getA | Read a secret from the vault. The scope arg partitions the read: omit it (or pass an empty string) to read from the active project; pass "workspace" to read a cross-project shared secret; pass "project:" or "pkg:" to target a specific partition. Returns the value as a string, or null when the key does not exist in the chosen scope. Falls back transparently to the legacy unscoped key when a scoped value is missing (with a deprecation log on the host). |
| iyke_secret_setA | Write a secret to the vault under the given scope (same scope semantics as iyke_secret_get). Triggers a re-dump of the runtime env-vault file so sidecars and per-call MCP children pick up the new value on next spawn. Use this sparingly — secrets are sensitive and the values land in the user's encrypted Stronghold snapshot. |
| iyke_secret_deleteA | Delete a secret from the given scope. Same scope semantics as iyke_secret_get. Returns ok even if the key did not exist. Does not touch the legacy unscoped key — to clean up legacy entries, delete the value at the unscoped key directly. |
| iyke_secret_listA | List secret KEY NAMES (not values) in a scope. Same scope semantics as iyke_secret_get. Returns sorted bare key names — the scope prefix is stripped. Use to inventory what secrets are stored in a project without revealing values. |
| iyke_layout_getA | Get the saved layout (pane tree, files-explorer state, panel sizes) for a project. Returns the raw layout_state row contents — each field is the JSON the shell wrote, or null when nothing has been saved for that key. Defaults to the active project; pass project_id to query a specific one. Useful for the conductor pattern (an agent inspecting "what does this project look like to the user"). |
| iyke_layout_resetA | Reset a project's saved layout — deletes the pane tree, files-explorer state, and panel sizes rows. Next time the user (or anyone) switches to this project, the layout-swap orchestrator finds no saved state and leaves the current view in place. Use this to recover from a wedged layout or as part of a clean-slate workflow. |
| iyke_claude_assets_listA | List Claude-config assets (skills, agents, commands, hooks, mcps) discovered for a project, grouped by provider tier. Returns a tree where each asset name maps to one or more AssetSource entries; multiple entries on the same name indicate a conflict between tiers. Defaults to the active project; pass project_id to query a specific one. Use this to see what an agent will actually load in a project context. |
| iyke_claude_asset_pinA | Pin a preferred provider for a Claude-config asset name in a scope. When discovery finds the same asset name in multiple tiers (e.g. a |
| iyke_claude_asset_unpinA | Remove a pinned resolution. Falls back to the default lowest-tier-wins rule. |
| iyke_claude_asset_list_pinsA | List Claude-config asset pins for a scope. Scope is "workspace" (cross-project) or "project:" (this project only). Returns one entry per pin with preferred_tier + preferred_source. |
| iyke_agent_registerA | Register this agent so locks and timers can attribute work to it. Returns an opaque id. Pass the id as holder to iyke_lock_acquire. Repeated calls with the same {id} bump last_seen_at; omit id to mint a new one. |
| iyke_scratchpad_writeA | Create or replace a project-scoped Markdown scratchpad. Use for plans, handoffs, working context that should outlive a chat. |
| iyke_scratchpad_appendA | Append to a scratchpad without overwriting. Creates it if missing. |
| iyke_scratchpad_readA | Read a scratchpad by scope+name. 404 if missing. Returns id, body, updated_at. |
| iyke_scratchpad_listA | List scratchpads in a scope (defaults to active project). Each entry has id, name, updated_at, and a 200-char preview. |
| iyke_scratchpad_deleteB | Delete a scratchpad by scope+name. Idempotent. |
| iyke_kv_setA | Store a small JSON value at scope+key. Cap 64 KB per value; cap 1 MB total per scope. For larger durable text, use scratchpads. Scope defaults to active project. |
| iyke_kv_getB | Read a JSON value at scope+key. Returns { key, value: null } if absent (200, not 404). |
| iyke_kv_deleteB | Delete a KV entry. Idempotent. |
| iyke_kv_listB | List KV entries in a scope. |
| iyke_lock_acquireA | Acquire a project-scoped lease lock on a named resource. Use for short-lived coordination around shared files, plans, migrations. holder is the agent id from iyke_agent_register. ttl_ms defaults to 60000 (clamped to [1000, 600000]). If wait_ms is set, blocks up to that long for an existing lock to expire. |
| iyke_lock_statusA | Check whether a resource is currently locked (active leases only). Returns held=false if the lease has expired. |
| iyke_lock_releaseA | Release a lock you hold. No-op if held by someone else or already expired. |
| iyke_lock_renewA | Extend a lock you hold by ttl_ms. Useful for long-running work that needs more time than the original lease. |
| iyke_todo_createB | Create a project-scoped todo. Tags are free-form strings; assignee is a free-form name (agent or user). Set blocker_id to mark this todo as blocked by another. |
| iyke_todo_updateA | Partial update of a todo. Only supplied fields are changed. Pass status="done" or use iyke_todo_complete for the common case. |
| iyke_todo_listB | List todos in a scope (defaults to active project). Filter by status, tag, assignee. |
| iyke_todo_completeA | Mark a todo as done and stamp completed_at. Equivalent to iyke_todo_update with status=done. |
| iyke_timer_scheduleA | Schedule a one-shot timer in the active project (or specified scope). Pass either fire_at (absolute epoch-ms) or delay_ms (relative from now), not both. When the timer fires the shell emits an OS notification; if agent_id is set, an entry also lands in that agent's inbox (delivered on its next tool call, 24h TTL). |
| iyke_timer_cancelA | Cancel a pending timer by id. No-op if already fired or cancelled. Returns { cancelled: bool }. |
| iyke_timer_listA | List timers in a scope (defaults to active project). Optional status filter: pending | fired | cancelled. Returns timers sorted by fire_at ascending. |
| iyke_pkg_listA | List installed pkgs visible from the active project. Workspace-scoped pkgs are always included; project-scoped pkgs are included only when their project is active unless include_other_projects=true. Each entry: id, version, install_path, enabled, source, scope ("workspace" | "project:"), active_now. |
| iyke_pkg_install_scope_setA | Change the scope of an installed pkg. scope="workspace" (always loaded) or "project:" (loaded only when that project is active). Triggers a kernel reconcile so sidecars start/stop accordingly. |
| iyke_pkg_uninstallA | Uninstall a pkg. Stops its sidecars, removes its registry entries, deletes its files. Project-scoped state in iyke_kv / iyke_scratchpads / iyke_todos survives. Builtins (com.ikenga.*) cannot be uninstalled. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Royalti-io/ikenga-pkg-mcp-iyke'
If you have feedback or need assistance with the MCP directory API, please join our Discord server