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; a Streamable HTTP transport
(nika mcp --transport http — POST JSON-RPC, origin-gated against
DNS-rebinding, loopback bind by default on port 8123) has landed on main
and ships with the next release, for managed hosts that cannot spawn a
process. 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 for
cursor · vscode · windsurf · claude · codex · opencode · hermes (and
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.yaml 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. Signed attestations are a separate, future layer.
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.