MCP API Reference
The desktop app's Rust backend ships a working local Model Context Protocol server in v0.6.0-beta: a real, compiled, loopback-only JSON-RPC 2.0 implementation. It has no button in the shipped app yet: the current interface (src-leptos) does not call it, so today it starts only via its Tauri commands directly (start_mcp_server, stop_mcp_server, mcp_server_status), not by clicking anything in the cockpit.
No UI toggle yet
An earlier draft of the app's frontend (a root-level index.html/main.ts, not part of the current build) sketched a Settings checkbox for this. That frontend was superseded by src-leptos (the one tauri.conf.json actually builds), which has no MCP UI at all. The backend commands are real and shipped; the button to reach them is not.
Reaching it today
Once started (via the Tauri commands above, default port 3456), the wire protocol matches this reference exactly. A Goose-compatible client config:
{ "mcpServers": { "loci": { "url": "http://localhost:3456" } } }Compatible with Goose, Claude Code, and Continue.dev, or any MCP client that speaks HTTP JSON-RPC.
Resources
Three read templates under the loci:// URI scheme:
| URI | Returns |
|---|---|
loci://locus/{id} | A single locus |
loci://room/{roomId}/loci | Every locus in a room |
loci://search?q={query} | Keyword search over locus titles and content |
Tools
Two write tools, deliberately narrow:
create_locus(title, content, tags?, room_id?)tag_locus(id, tags)
Nothing else is exposed. No delete, no room creation, no arbitrary file access.
Security model
- Loopback-only. The listener binds
127.0.0.1only; the bind is enforced before the port opens, requested port must fall in1024–65535. expose_roomsallowlist.~/.loci/config.jsoncarries anmcp.expose_roomslist. Empty means every room is exposed; a non-empty list scopes every resource and tool to just those rooms.X-Loci-Content-Trust: user-authoredis attached to every response: an attestation to the consuming agent that the content came from your own authored palace, not from an untrusted foreign source.X-Loci-Threat-Gate: THREAT-01:enforcedmarks the standing rule that no conversation data (chat transcripts, session logs) is ever served through this path, only palace content you wrote.
See Architecture for where this sits in the stack, Security for the full inbound-surface picture, and the repo's desktop/README.md for the implementation-level MCP section.