Tree-structured knowledge base as an MCP server
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Tree-structured knowledge base as an MCP server.
LLM sessions are ephemeral. outline-mcp gives them a persistent, editable knowledge tree β sections and content nodes that can be browsed (toc), annotated with properties, and evolved across sessions. Nodes with inject=true are automatically included in session context.
~/.claude.json)cargo install)If the path argument is omitted, defaults to outline-book.json in the current directory.
--mcp-http serves the same tools over MCP's streamable HTTP transport, so several devices can share one shelf. A single process owns the directory β book JSON plus the per-slug .events.db β which keeps the single-writer storage model intact, so there is no sync or conflict resolution to configure.
Point clients at /mcp on that address:
Binding beyond loopback requires a token. Startup is refused without one, before any listener is opened:
Every request must then carry Authorization: Bearer <token> β set it wherever your MCP client configures request headers. TLS termination is a reverse-proxy concern. Logs go to stderr in both transports; stdout stays reserved for the stdio protocol channel.
Service templates for running this as a daemon live in contrib/systemd/ and contrib/launchd/. docs/runbooks/ covers moving an existing shelf to a central host (data-migration.md) and verifying a deployment end to end (multi-device-smoke.md).
init β Create a new empty booknode_create β Add sections and content nodes (with optional properties)toc β View the table of contents with numbered IDs (e.g. 1, 2-3). Supports filter by propertiesselect_book β Select a book. Nodes with inject=true property have their body auto-appended (draft nodes excluded)checklist β Export a section (or the whole book) as a Markdown checklist with checkboxesnode_update β Edit title, body, type, placeholder, properties, or status (active/draft) of a nodenode_move β Relocate or delete nodes (with descendants)node_batch_move β Move or delete multiple nodes in a single atomic call (requires UUID or UUID-prefix IDs)node_batch_update β Update title/body/type/properties/status on multiple nodes atomicallynode_query β Search nodes by property values, status (active/draft), or type (section/content); optionally include body in resultsimport β Import a book from a previously exported JSON filegen_routing β Generate a Markdown routing table from nodes with routing property across all bookssnapshot_create / snapshot_list / snapshot_restore β Full book versioning (create, list, restore)node_history β View per-node change log with before/after diffsdump β Export full book as JSON filetoc assigns human-friendly numbered IDs:
These IDs (1, 1-2, 2-1, etc.) work in most tools. Full UUIDs and title substring matching are also supported as fallbacks.
Note:
node_batch_moveandnode_batch_updaterequire UUID or UUID-prefix IDs. Hierarchical toc IDs are intentionally rejected to prevent positional drift when the tree is modified mid-batch.
Nodes can have key-value properties for metadata:
inject=true β Node body is automatically included in select_book output (context injection)routing=<scene> β Marks the node for gen_routing output. Use | to assign multiple scenes (e.g. routing="testing|TDD")routing_ref=<text> β Overrides the default Β§ID Title reference in the routing table (e.g. routing_ref="select_book γ§ε
¨δ½εη
§")"true" appear as tags in toc: 1. My Rule [inject]toc supports filtering: filter={"inject": "true"} shows only matching nodesThe repository is a Cargo workspace with three crates: an rmcp-independent SDK (outline-mcp-core), the MCP protocol layer (outline-mcp-rmcp), and the server binary (outline-mcp).
Downstream applications that want to embed the tree / snapshot / changelog logic without pulling rmcp can depend on outline-mcp-core directly:
Tree-structured format that can be re-imported:
The snapshot subsystem now persists to a per-book SQLite event log ({shelf_dir}/{slug}.events.db) in addition to the existing on-disk .snap.{millis}.json files. Existing installs must run the migrator once to fold pre-existing on-disk snapshots into the event log β until they do, those snapshots stay on disk but are not visible to snapshot_list / snapshot_restore.
1. Back up the shelf directory. The migrator is idempotent and does not delete files, but the shelf directory is the source of truth for your books; a copy is cheap insurance.
2. Run the migrator.
The migrator scans every {slug}.snap.{millis}.json file under <shelf-dir>, imports each into {shelf-dir}/{slug}.events.db with its original timestamp preserved, and leaves the source .json file in place. Output looks like:
Pass --slug <slug> to migrate one book at a time.
3. Verify (optional). Re-running the migrator is a no-op β every file will report as skipped.
.snap.*.json files. Keep them for a while as a second layer of backup.snapshot_create between the upgrade and the migrator run). Run the migrator before doing new writes.tracing::warn! on stderr. MCP clients that swallow server stderr (Claude Code included) will not surface it β treat the migrator command as the canonical way to check.snapshot_tag (as opposed to labeled at snapshot_create time) lose the "time the label was attached" value in their sidecar .meta.json's internal created_at field. The label text itself is preserved, and created_at is never exposed through the MCP surface β this is an internal-metadata drift, not user-visible.Licensed under either of
at your option.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/outline-mcp)<a href="https://allmcps.com/mcp/outline-mcp"><img src="https://allmcps.com/api/badge/outline-mcp?style=directory" alt="Outline MCP on AllMCPs" /></a>