nika mcp serves the read-only oracle over stdio — the in-binary MCP
server every wired client talks to. Its contract is one sentence:
Agents can inspect freely, execute deliberately. The oracle validates
and teaches; running a workflow stays on the CLI, where --max-cost-usd,
the permits boundary and the trace file live.
The released binary serves stdio by default. Streamable HTTP also
ships on 0.120.1: nika mcp --transport http (POST JSON-RPC,
origin-gated, loopback on port 8123 by default). Widening --bind
beyond loopback is on you: put TLS + auth in front first. Either
transport, there is no write tool and no way to make the oracle execute
anything. That is the design, not a gap: generation and repair belong to
the authoring skill, execution belongs to a
human-gated nika run.
Start it
No binary yet?brew install supernovae-st/tap/nika — other paths (script,
Docker) in installation. Then every client
uses the same two fields:
nika wire <client> writes this stanza into the right config file.
Targets on the released binary include cursor · vscode · windsurf ·
claude · claude-desktop · codex · gemini · qwen · opencode · hermes ·
zed · continue · cline · lmstudio · junie · grok · kimi (and
detected / all). For any other MCP-capable client, paste the stanza
into its server config — see per-client wiring.
The 9 tools
Projected from the live wire (tools/list), never hand-counted:
The split is deliberate: validate (
nika_check · nika_explain) and
learn (nika_schema · nika_examples · nika_template · nika_canon ·
nika_catalog · nika_tools · nika_inspect).
Why read-only is the whole point
A.nika can declare exec: shell steps — that is the language working
as designed. An MCP tool that ran workflows would hand every wired agent a
shell with your credentials, one prompt-injection away. So the oracle refuses
the category:
- No
nika_run, nonika_generate, no write tools — ever. Authoring is the skill’s job (the agent writes the file, you review it); running is the CLI’s job (nika run, with budget flags, under your eyes). - Secrets never transit the oracle. The catalog names the env var a provider needs; it never reads or returns values.
- What the trace’s hash chain proves — and what it does not — is stated
plainly in machine surfaces: tamper-evidence
for the recorded run, not a signature. Author-binding signatures exist
(
nika sign); they do not replacenika trace verify.
Context budget
The oracle is lean by design — a handful of read-only tools with compact outputs, sized so wiring it costs an agent almost nothing. Clients that support per-server tool filtering can narrow further (e.g. expose onlynika_check + nika_template to a coding agent).
Verify a wiring
Ask the connected agent to list its tools — the nine names above should appear. From a shell, the JSON-RPC handshake works too:nika_check call. workflow takes the file’s
source text (the oracle has no filesystem access by design), so shell in
the file’s contents:
content[0].text —
same output as nika check, over the wire.