Embedded graph database for agents: declare association rules once, edges maintain themselves.
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.
The graph that stays true β and knows who's allowed to see it.
An embedded Rust graph database where edges are a schema declaration: write a rule once, and every write creates, maintains, and retracts the matching edges. Ships a 24-tool MCP server and a live graph of the repository it is pointed at.
Pre-1.0 alpha β APIs and formats may change between minor versions.

Install the Claude Code plugin, from any directory:
Open the repository you want graphed and type /mushroom:mushroom. The skill builds the graph on
first use and answers with it from then on.
Or install into one project (or your home directory) without the plugin β same skill, invoked
bare as /mushroom:
Either way, the first thing the assistant does is read the repository back to you. This is a real
run against this repository β ingest-git took 2.5 s, map 0.18 s:
From there: context for one file or symbol from every side, impact before an edit, owners,
why with the commits that prove a link, recall and remember for durable notes.
Full walkthrough: docs/site/code-graph.md.
SET f.top_author_id = β¦ moves the TOP_AUTHOR edge and
re-derives that author's KNOWS edges before the write closes β the SET in the GIF above is
that one write. An editor hook does the same for your code: touch re-extracts an edited file
after every Edit, Write and MultiEdit, in about 180 ms on this repository's graph.ingest-git to sync: only new commits replay,
deleted files drop their derived edges, and renamed files carry their history to the new path.explain names the rule and the score behind an edge, so "which files
change together with src/api.rs, and why?" has an answer your assistant can quote instead of
a guess.mask with a query and the same graph answers
differently per caller; write statements are rejected on masked queries.mushroomdb asof ./db --commit 5 --query "β¦" replays the
WAL to a past commit, derived edges included.What it is
/mushroom skill and a Claude Code plugin.LOCK file, any
number of readers, and every handle picks up a peer's commits by refresh() rather than
reopening β so a running serve, an editor hook, a git hook and a CLI command can share one
store. docs/site/concurrency.mdWhat it isn't
Most graph databases require you to create edges manually or run a batch similarity script after
each load. mushroomdb makes edge creation a schema declaration. A rule like "connect every Person
to every Org whose skills list overlaps theirs by at least 50%" is written once:
After that, every insert_node and set_prop evaluates the rule incrementally. The engine writes
the edge, stores the Jaccard score, and retracts the edge if the properties later diverge β without
any manual work.
Watch it live β a Cypher SET changes one property, the founded_within rule fires, and new
scored edges appear in the bundled explorer:

Open the Rules panel, and the Why slide-over shows the exact predicate arithmetic behind every derived edge:

Six predicate kinds ship today. They compose via All(...) (AND, score = min) and Any(...)
(OR, score = max), nested up to depth 4.
| Predicate | What it tests |
|---|---|
KeyMatch | FK equality β source field matches destination key |
FieldEqual | Exact match on a named scalar field (string, int, float, bool) |
Overlap | Jaccard on list-valued fields, min threshold |
NumericWithin | Absolute numeric difference within a tolerance; score = `1 - |
GeoRadius | Haversine distance on [lat, lon] fields within km; score = 1 - dist/radius |
VectorSimilar | Cosine similarity on float arrays, min threshold |
Auto-FK: fields ending in _id whose values match existing node keys get KeyMatch rules created
automatically at ingest time. VectorSimilar accepts approximate: true to switch candidate
selection to in-tree HNSW (per-query recall min 0.90, mean 0.998 at 5k nodes / dim 1536,
fixed-seed probe). Full reference: docs/site/rules.md.
subscribe_rule (Rust) and GET /subscribe (WebSocket) stream
EdgeFired / EdgeRetracted the moment they hit the WAL β not polled, not batched. Bounded
65,536-event queue; slow consumers get a Lagged { missed: N } marker instead of a disconnect.
docs/site/subscriptions.mdedge_history, node_history, and was_linked answer which rule created a
link and at which commit. GraphDb::open_at(&dir, 5) replays to a past commit, derived edges
included; out-of-range commits return CommitOutOfRange, never wrong data.
docs/site/timetravel.mddocs/site/views.mddb.suggest_rules() (or mushroomdb suggest ./db) profiles your data and
ranks candidate rules with estimated edge counts and rationale. Seeded sampling, so the same
database always returns the same suggestions. No rule is ever applied automatically.
docs/site/suggest.mdGraph structure captures the shape of real knowledge β entities, associations, similarity, and lineage β and rule-derived edges keep those associations fresh as new facts arrive.
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/mushroomdb)<a href="https://allmcps.com/mcp/mushroomdb"><img src="https://allmcps.com/api/badge/mushroomdb?style=directory" alt="Mushroomdb on AllMCPs" /></a>