KnowledgeGraph
MCP server providing long-term memory for AI agents β knowledge graph with Qwen3 embeddings, continuous learning, and knowledge evolution
Ask AI about KnowledgeGraph
Powered by Claude Β· Grounded in docs
I know everything about KnowledgeGraph. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Knowledge Graph MCP Server
ηΉι«δΈζ | English
Long-term memory system for AI agents. Enables agents to accumulate domain expertise through mentorship or professional practice, automatically recall relevant knowledge, and grow from apprentice to independent expert.
Works with any domain requiring continuous learning + knowledge evolution: software engineering, music production, design, medical diagnosis, legal analysis, etc. Any scenario with an "expert teaches β student practices β gradual internalization" knowledge transfer pattern.
Why This Exists
Claude starts every conversation from zero. In professional apprenticeship-style teaching:
- Expert lessons are forgotten β context compaction drops critical lessons, same mistakes repeat
- AI fabricates terminology β without ground truth, it over-generalizes from single demonstrations
- Knowledge can't evolve β new teachings can't replace contradicted old knowledge
- Search is path-dependent β rephrasing a question yields no results
- Forever a student β no mechanism for the AI's own discoveries to become durable knowledge
Installation
cd mcp/knowledge-graph
npm install
On first startup, the Qwen3-Embedding-0.6B ONNX model (~560MB) is automatically downloaded (one-time only).
MCP Configuration
In your project's .mcp.json:
{
"mcpServers": {
"knowledge-graph": {
"command": "node",
"args": ["/absolute/path/to/mcp/knowledge-graph/main.js"]
}
}
}
Hook Configuration
Add hooks to ~/.claude/settings.json (see Hooks section for full configuration).
Import Existing Knowledge (Optional)
node scripts/import-skills.js # Import markdown files as KG nodes
node scripts/backfill-embeddings.js # Add vector indexes + structural edges
node scripts/backfill-decay.js # Add stability + memory_level + category
Core Design
Why Build From Scratch
After researching 25+ Claude Code memory systems (Claude-Recall, A-MEM, Mnemon, Graphiti, memsearch, etc.), none simultaneously satisfied:
| Requirement | Existing Solutions | This System |
|---|---|---|
| Domain-specific edge types | Generic edges only | 10 semantic edge types (must_precede, aligns_to, etc.) |
| Trust level distinction | No source differentiation | principle (expert-taught) > pattern (observed) > inference (AI-guessed) |
| Anti-fabrication | No protection | principle requires expert's exact quote |
| Fundamentals vs creative space | Treated equally | fundamental never decays, creative is challengeable |
| Memory decay + growth path | Decay exists but no growth | FSRS desirable difficulty + Benna-Fusi 4-level cascade |
| Automation | Depends on user action | 6 hooks covering full lifecycle |
Inspiration Sources
| Source | What We Borrowed |
|---|---|
| Claude-Recall | Hook architecture (search enforcer, correction detector) |
| A-MEM | Edge data model (relation_type + reasoning + weight) |
| CortexGraph | Two-component decay (fast + slow exponential, more realistic than single decay) |
| FSRS (Anki) | Desirable difficulty (fading memories gain MORE stability when recalled) |
| Benna-Fusi | Memory cascade (4-level durability, independent of knowledge source) |
| Stanford Generative Agents | Three-signal retrieval (recency + importance + relevance) |
| Graphiti/Zep | Temporal awareness (valid_from / valid_until) |
Three-Layer Architecture
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Layer 1: Persona (CLAUDE.md) β
β Agent identity + behavioral rules β
β β Loaded every turn for consistent behavior β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 2: Memory (Knowledge Graph MCP) β
β SQLite + sqlite-vec + FTS5 β
β 12 MCP tools + hybrid search β
β β On-demand, doesn't consume context β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Layer 3: Automation (Hooks) β
β 6 hooks covering full lifecycle β
β β Expert doesn't need to remind, fully automatic β
ββββββββββββββββββββββββββββββββββββββββββββββββββββ
Memory Decay & Growth System
Design Philosophy
Apprentice phase: Expert's words carry highest weight β learn fundamentals
Growth phase: Own observations get validated β develop judgment
Expert phase: Own inferences confirmed by practice β form independent views
Trust is a source label (who said it), not a permanent rank. AI's own validated knowledge can become equally durable.
Decay: CortexGraph Two-Component Γ FSRS Stability
R = W_fast Γ e^(-Ξ»_fast Γ t) + W_slow Γ e^(-Ξ»_slow Γ t)
- Fast decay (half-life = S days): "newly learned things are easily forgotten"
- Slow decay (half-life = SΓ10 days): "what survives is remembered for a long time"
- S (stability): initialized by trust + category, grows on access via FSRS
Why not pure exponential or pure power-law: pure exponential forgets too fast, pure power-law retains too much. Two-component blend best fits human forgetting data.
| Knowledge Type | Initial S | Fast Half-Life | Slow Half-Life |
|---|---|---|---|
| Fundamental (has right/wrong) | 365 days | β | β |
| Expert's creative choice | 30 days | 30d | 300d |
| Observed pattern | 7 days | 7d | 70d |
| AI inference | 3 days | 3d | 30d |
Reinforcement: FSRS Desirable Difficulty
stabilityGain = e^(1 - R) Γ gradeMultiplier
Core insight (from FSRS analysis of millions of Anki reviews): A fading memory that gets recalled gains MORE stability than a fresh one.
- R = 0.9 (just accessed) β 1.11Γ growth
- R = 0.3 (almost forgotten) β 2.01Γ growth
Grade sources:
- 4 = Successfully applied (Auto-Capture detects no correction)
- 3 = Normal access
- 1 = Corrected by expert
Growth Path: Benna-Fusi Memory Cascade
Trust (source label) stays unchanged; memory_level (durability) grows independently:
| Level | Condition | Auto-expire? |
|---|---|---|
| 1 New | Default | β when R < 0.02 |
| 2 Verifying | Accessed across 3+ sessions | β when R < 0.02 |
| 3 Consolidated | 14 days + access β₯ 5 | β Never |
| 4 Core | Fundamental, or access β₯ 50 | β Never |
An inference node accessed 50 times reaches level 4 β as durable as a fundamental principle.
Fundamentals vs Creative Space
| Type | metadata.category | Behavior |
|---|---|---|
| Fundamental | "fundamental" | R = 1.0, never decays. Has right/wrong answers |
| Creative | "creative" | Can decay, can be challenged. No right/wrong, only fit |
Search System
Hybrid Three-in-One Search
score = 0.4 Γ vector + 0.2 Γ keyword + 0.3 Γ graph + memoryScore
| Layer | Mechanism | Strength |
|---|---|---|
| Vector | sqlite-vec cosine KNN (Qwen3 1024d) | Same meaning, different words |
| Keyword | FTS5 BM25 (unicode61) | Exact match, multilingual |
| Graph | Recursive CTE, 1-hop expansion | Causal relationships |
| memoryScore | R Γ 0.1 + levelBonus | More used = more important |
Embedding Design
- Model: Qwen3-Embedding-0.6B (ONNX quantized, ~560MB)
- Runs locally: Zero API dependency, works offline
- Why Qwen3: #1 on MTEB multilingual leaderboard, #1 on C-MTEB (Chinese)
- Embeds:
name + content(full text) β vector handles semantic matching, keyword handles exact matching, clear separation of concerns
Anti-Fabrication
AI tends to treat its own guesses as facts. Protection rules:
| Rule | Mechanism |
|---|---|
| Principle requires quote | No expert's exact words β rejected |
| Inference can't create causal edges | must_precede / reason_for reject inference nodes |
| Trust never auto-upgrades | Inference won't become principle (needs expert confirmation + quote) |
| Level is independent of trust | Inference can consolidate to level 4 but still labeled "AI's idea" |
Tools (12)
Knowledge Management
| Tool | Purpose |
|---|---|
store_knowledge | Store a knowledge node. Auto embedding/FTS + suggests edges + initializes decay params |
connect_knowledge | Create a causal edge. Includes anti-fabrication validation |
update_knowledge | Update node in-place. Preserves ID and all edges, auto-updates indexes |
forget_knowledge | Mark as expired. Auto-expires edges + cleans indexes |
Search
| Tool | Purpose |
|---|---|
search_memory | Hybrid search (vector + keyword + graph + memoryScore) |
traverse_graph | Walk causal edges (supports direction/depth/edge type filtering) |
list_knowledge | List by filters (trust/type/element/source, sort by time/access/strength) |
Experience
| Tool | Purpose |
|---|---|
record_experience | Record workflow trace (steps + decisions + outcomes) |
recall_experience | Find similar past experiences by context |
Maintenance
| Tool | Purpose |
|---|---|
maintain_graph | Memory Enzyme β prune / merge / validate / orphan |
crystallize_skill | Check KG-to-skill-file sync status |
memory_stats | Graph statistics |
Hooks (Automation)
Lifecycle Coverage
[New Session]
ββ session-start β auto-repair + memory decay + consolidation detection + edge review
[User Sends Message]
ββ auto-recall β query KG β inject relevant knowledge
β correction detector β detect corrections
[AI About to Act]
ββ search-enforcer β block operations without prior memory search (in specific modes)
[AI Finishes Response]
ββ auto-capture β analyze learning signals β block β main Claude stores via MCP
[Context Compaction]
ββ post-compact β re-inject core knowledge
settings.json Example
{
"hooks": {
"SessionStart": [
{
"matcher": "startup",
"hooks": [{
"type": "command",
"command": "node /path/to/hooks/session-start.js",
"timeout": 10
}]
},
{
"matcher": "compact",
"hooks": [{
"type": "command",
"command": "node /path/to/hooks/post-compact.js",
"timeout": 10
}]
}
],
"UserPromptSubmit": [{
"hooks": [{
"type": "command",
"command": "node /path/to/hooks/auto-recall.js",
"timeout": 10
}]
}],
"Stop": [{
"hooks": [{
"type": "agent",
"model": "claude-opus-4-6",
"prompt": "See auto-capture prompt in settings.json",
"timeout": 60
}]
}],
"PreToolUse": [{
"hooks": [{
"type": "command",
"command": "node /path/to/hooks/search-enforcer.js",
"timeout": 5
}]
}]
}
}
Auto-Capture Design
Agent hooks cannot call MCP tools. Solution: the agent analyzes the conversation β outputs <auto-capture> instructions β blocks the main Claude β main Claude uses MCP tools to store knowledge β Stop fires again β stop_hook_active=true β allows stop.
User experience: the main AI naturally "remembers" to save knowledge, seamlessly using MCP tools.
Session-Start Auto-Maintenance
Automatically runs on every new session:
- Repair dangling edges β edges pointing to expired nodes
- Clean residual indexes β FTS5/vec entries for expired nodes
- Report orphan nodes β nodes with no edges (>5 triggers warning)
- Memory decay β R < 0.02 and level < 3 β expire
- Decay report β show nodes with R < 0.3 (actively decaying)
- Consolidation detection β vector similarity < 0.25 node pairs
- Weak edge cleanup β weight < 0.3 β expire
- Recent edge review β edges created in last 24 hours
Data Model
Nodes
| Field | Description |
|---|---|
| type | rule / procedure / observation / insight / core / preference |
| trust | principle (expert-taught) / pattern (observed) / inference (AI-guessed) |
| stability | FSRS S (days), controls decay speed |
| memory_level | Benna-Fusi level 1-4, controls durability |
| metadata.category | fundamental (has right/wrong) / creative (no right/wrong) |
| source | session ID / "teacher" / "auto-capture" |
| quote | Expert's exact words (required for principle) |
Edges
| Edge | Meaning |
|---|---|
must_precede | A must come before B |
requires_reading | Must read B before operating on A |
refines | A refines/extends B |
contradicts | A contradicts B |
reason_for | A is the reason for B |
causes / implies / aligns_to / tends_to / observed_in | Other semantic relations |
Security
| Risk | Protection |
|---|---|
| SQL injection | Parameterized queries + whitelist validation |
| FTS5 special characters | Sanitize + double-quote wrapping |
| Non-atomic store | Node + FTS wrapped in transaction |
| Invalid ID timeout | try/except returns clear error |
| Stability overflow | Capped at 365 days |
| Single-session level inflation | metadata.sessions tracks cross-session usage |
Integration
Recommended Skill Structure
Knowledge Graph stores "knowledge"; Skill files define "behavior". They complement each other:
- KG: What the expert taught, what was observed, what the AI inferred (storage & retrieval)
- Skill: What to do with that knowledge (executable workflows & checklists)
Recommended skill directory structure:
skills/
βββ <domain>/ # Domain knowledge (e.g., coding/, design/, medical/)
β βββ principles.md # Core principles
β βββ elements/ # Operation workflows per element/module
β β βββ <element>/
β β β βββ workflow.md # Executable tool operation steps
β β βββ checklist.md # Element list + dependency graph + standard flow
β βββ evaluation/ # Quality evaluation criteria
βββ specialty/ # Specialty overrides (if applicable)
β βββ <specialty>/
β βββ <domain>/ # Specialty-specific knowledge overrides
βββ tools/ # Tool usage knowledge
β βββ gotchas/ # Dangerous operations / pitfalls
β βββ batch/ # Batch tool reference
βββ preflight.md # Pre-work required reading checklist
Skill File Writing Principles
# Element Name β Tool Operation Workflow
## Related Elements
| Dependency | Reason | Must Read |
|------------|--------|-----------|
| X | Why X is needed | `path/to/x.md` |
## Operation Steps
1. Specific enough to execute directly
2. Include tool call examples (tool_name + parameters)
3. No abstract descriptions ("do it well" β "use tool X to set param Y to Z")
## Quality Criteria
Concrete values or qualitative descriptions the agent can use to judge.
Key: Skill files must be "executable" β an agent (or subagent) should be able to operate directly after reading, without guessing.
KG-Skill Synchronization
Use crystallize_skill to check if KG contains knowledge not yet reflected in skill files:
crystallize_skill(topic="authentication", skill_paths=["skills/coding/elements/auth/workflow.md"])
Returns unsynced knowledge list β manually update skill files.
Pairing With Other MCP Servers
Knowledge Graph is the memory layer. It typically pairs with a domain-specific MCP for actual operations:
| Combination | Knowledge Graph Handles | Domain MCP Handles |
|---|---|---|
| Software Development | Architecture decisions, code review lessons, bug patterns | IDE / Git / CI operations |
| Design | Design principles, brand guidelines, user feedback | Figma / design tool operations |
| Data Analysis | Analysis methodology, domain knowledge, past analyses | DB / BI tool operations |
| Any Professional Domain | Domain knowledge, workflow experience, expert teaching | Corresponding operation tools |
Knowledge Graph doesn't perform domain operations β it only remembers "how to do it" and "why it's done this way", then automatically recalls relevant knowledge when needed.
Pairing With Session Readers
Knowledge extraction requires reading historical conversations. Recommended to pair with MCP servers that can read Claude Code CLI or other session transcripts, enabling review of teaching processes and knowledge extraction.
References
Academic Papers
| Paper | Contribution |
|---|---|
| FSRS Algorithm | Power-law forgetting curve + desirable difficulty. 19 ML parameters trained on millions of Anki reviews |
| MemoryBank (AAAI 2024) | LLM long-term memory + Ebbinghaus forgetting curve implementation |
| Benna & Fusi (Nature Neuroscience 2016) | Synaptic cascade model. Multi-timescale storage, memory lifetime scales linearly with synapse count |
| Generative Agents (Stanford, UIST 2023) | Recency + importance + relevance three-signal retrieval. Reflection mechanism compresses observations into higher-order insights |
| Zep: Temporal KG Architecture | Bi-temporal model (event time + ingestion time). Edge temporal validity intervals |
| Theories of Synaptic Memory Consolidation | Elastic Weight Consolidation + Synaptic Intelligence. Critical parameter protection |
| Mem0: AI Agent Memory | Production-ready agent memory architecture. Graph + vector hybrid |
Open Source Implementations
| Project | What We Borrowed |
|---|---|
| CortexGraph | Two-component decay (power-law + exponential blend), consolidation threshold, sub-linear frequency n^0.6 |
| Claude-Recall | Search enforcer hook, correction detector, skill crystallization |
| A-MEM | Typed edges (relation_type + reasoning + weight), memory enzyme maintenance |
| Mnemon | 4-graph architecture, intent-aware traversal, importance decay + access-count boosting |
| memsearch (Zilliz) | Standalone memory library extracted from OpenClaw. Hybrid dense+BM25+RRF, SHA-256 dedup |
| second-brain (jugaad-lab) | Category-weighted decay, auto-consolidation (7-day window), entity graph weekly rebuild |
| Graphiti (Zep) | Temporal knowledge graph, bi-temporal model, edge invalidation |
| Hippocampus Memory Skill | Salience formula (0.5Γsemantic + 0.2Γreinforcement + 0.2Γrecency + 0.1Γfrequency), 4-tier memory |
| YourMemory | Simplest implementation: strength = importance Γ e^(-Ξ» Γ days) Γ (1 + recall_count Γ 0.2) |
Cognitive Science
| Concept | Application |
|---|---|
| Ebbinghaus Forgetting Curve | Foundation model for memory strength decaying over time |
| SM-2 Algorithm (SuperMemo) | Classic spaced repetition algorithm. EF (easiness factor) + interval growth |
| Desirable Difficulty | Robert Bjork: appropriate difficulty enhances long-term memory. Core theoretical basis of FSRS |
| Synaptic Tagging and Capture | Synaptic tag + protein synthesis = memory consolidation. Maps to our level promotion mechanism |
Acknowledgments
This system's design integrates wisdom from multiple open-source communities and academic research. Special thanks to:
- open-spaced-repetition for the FSRS algorithm, providing a desirable difficulty model validated on millions of data points
- prefrontal-systems for CortexGraph, whose two-component decay model forms the core of our memory decay engine
- Anthropic for Claude-Recall, whose hook architecture and search enforcer patterns directly inspired our automation layer
- Stanford HCI Group for the Generative Agents paper (Park et al., 2023), whose three-signal retrieval and reflection mechanisms influenced our search scoring and consolidation design
- Benna & Fusi for their synaptic cascade model published in Nature Neuroscience, providing the neuroscience foundation for our memory level growth path
- Zilliz (memsearch), jugaad-lab (second-brain), Zep (Graphiti), and other open-source projects that each contributed valuable implementation experience
Deployment
Included in the Repository
- All
lib/,tools/,hooks/,scripts/source code - Hook configuration examples
Generated by User
knowledge.dbβ automatically created on first startup- Qwen3 ONNX model β automatically downloaded on first embed
node_modules/βnpm install
First-Time Setup
npm install- Configure
.mcp.json+~/.claude/settings.jsonhooks - Start Claude Code β MCP auto-starts β model auto-downloads
- Begin conversation β hooks auto-run β knowledge auto-accumulates
License
MIT
