A label property graph on SQLite/Postgres with multi-ontology routing and a gated MCP server.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
An embedded knowledge graph you own completely β in one SQLite file.
SQLite-native Β· zero-dependency core Β· MCP-ready Β· event-sourced Β· reversible.
Model anything as entities and relationships β agent memory, app ontologies, declarative datasets, "SQLite but my data is a graph" β without running Neo4j, RDF, Docker, or a separate graph service. No Cypher, no JVM, no server: five tables and one file you can copy, inspect, and version.
Python 3.10+ Β· MIT Β· zero-dependency core Β· library + CLI + MCP
The world isn't rows in a table β it's things, the kinds of things they are, and how they relate. A label property graph captures exactly that, and not much more: nodes (entities), typed edges (relationships), labels (sets), and JSON properties (everything else). There's no schema to design up front; meaning accretes as facts, and the shape stays as flexible as the domain it describes.
That flexibility is what makes it a natural substrate for AI agents. Hand an agent an MCP connection to this graph and it can do what agents are uniquely good at: read a domain, model what it learns, connect ideas, and reason over structure instead of prose. Every write is gated, attributed, and appended to an event log β so an agent can reshape the graph freely while you keep the receipts: audit it, replay it to any point in time, or roll a change back with one command. A memory that records why, not just what β in one embeddable file that travels wherever the agent runs: a laptop, a CI job, a serverless function, a Pi.
Small enough to hold in your head. Flexible enough to model anything.
It's built for graphs you want to own completely β small enough to inspect, fast enough to embed, transparent enough to trust:
The design center is read-heavy, single-writer, up to low millions of nodes β the same sweet spot as SQLite itself: one file, in-process, no server to run. That covers a surprising amount of real work. For workloads past that center, Performance maps out exactly where the curve bends and a purpose-built graph engine starts to earn its extra moving parts.
Honest comparisons β reach for the right tool, and know exactly when that tool is this one.
Use Neo4j when you need deep traversal, complex Cypher pattern matching, concurrent writers, or clustered graph infrastructure. Use kgrdbms when you want a small embedded graph, agent memory, auditability, local-first ownership, and SQLite deployment simplicity.
NetworkX is great for in-memory algorithms. kgrdbms is for persistent graph state with durable storage, CLI/MCP access, event history, and rollback.
RDFLib is for RDF graphs and linked-data workflows. kgrdbms is a label property graph with RDF as an export/import boundary, not a triplestore.
Because some domains are naturally entities and relationships, not rectangular tables. kgrdbms keeps the storage boring while making the model graph-shaped.
A label property graph needs only four primitives:
| Primitive | What it is |
|---|---|
| Node | a stable id, a kind, a display name |
| Edge | a typed, directed relationship between two nodes |
| Label | set memberships on a node (many per node) |
| Property | a JSON-valued key/value bag on a node or an edge |
Store those in SQLite, add a few indexes, and you have a knowledge graph. Everything else in this project β traversal, an append-only history, a safety gate, the CLI, the MCP server β is built on top of those four facts.
1. Boring storage is a feature. SQLite already solved durability, transactions, indexes, and recursive queries. We don't reinvent any of it. One file, copy it to back it up, open it with any SQLite tool to inspect it.
2. The schema fits on a screen. Five tables, no surprises. You can read the entire storage layer and know exactly where every fact lives. Legibility beats cleverness.
3. The state is a pure function of data. What you query is a projection.
The source of truth is an append-only log of facts plus an optional declared
seed. Your whole graph is reproducible: state = replay(seed + log). That one
property buys audit, undo, and time-travel for free.
4. Mutation is gated, and the gate has two layers. When you let an agent rewrite your graph over a wire, you need rules. Some rules are configurable (policy); some must be un-negotiable (compiled-in invariants). We separate mechanism from policy on purpose.
5. One engine, many doors. A library call, a kg command, and an MCP tool
all flow through the same gated, logged write path into the same file. There is
no "CLI version" of the truth and "MCP version" of the truth β there's one.
6. Pay for speed only when you ask. Every single write commits on its own
(safe by default). Bulk paths (batch(), add_nodes, add_edges) let you opt
into ~10Γ throughput when you mean to.
The graph is five tables. That's the whole storage layer.
Design notes that matter:
Factual signals from GitHub, npm, and our automated checks β not a rating.
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/knowledge-graph-rdbms)<a href="https://allmcps.com/mcp/knowledge-graph-rdbms"><img src="https://allmcps.com/api/badge/knowledge-graph-rdbms?style=directory" alt="Knowledge Graph RDBMS on AllMCPs" /></a>