Enhanced Knowledge Graph Memory Server
The Enhanced Knowledge Graph Memory Server is an enterprise-grade MCP server with 106 tools for structured knowledge storage, search, and management across sessions.
Core Knowledge Graph Operations
Create, read, update, and delete entities, relations, and observations
Read the full graph or open specific nodes; normalize observations (coreference resolution, temporal anchoring)
Search & Discovery
Basic, date-range, TF-IDF ranked, boolean, fuzzy, and auto-select search
Semantic (embedding-based), hybrid multi-layer, and smart reflection-based search
Query analysis, search suggestions, and saved/reusable named queries
Hierarchical Organization
Set parent-child relationships; navigate children, parents, ancestors, descendants, and subtrees
Move entities, get root entities, and determine entity depth
Tag & Importance Management
Add, remove, replace, merge, and bulk-apply tags; set importance scores (0–10)
Create tag aliases (synonyms) and resolve tags to canonical forms
Graph Algorithms & Analytics
Find shortest or all paths between entities; detect connected components
Calculate centrality metrics (degree, betweenness, PageRank); get graph statistics and validate integrity
Memory Compression & Archiving
Detect and merge duplicate entities; compress the graph (with dry-run preview)
Archive entities by age, importance, or tags
Import & Export
Export to 7 formats: JSON, CSV, GraphML, GEXF, DOT, Markdown, Mermaid (with optional Brotli compression and streaming)
Import from JSON, CSV, or GraphML with configurable merge strategies
Temporal Features
Search by time window; invalidate relations with end dates; time-travel queries; relation timelines
Governance & Audit
Governed transactions with full audit trail; query audit log; roll back operations
Freshness Tracking
Check, refresh, and report on entity freshness; list stale or expired entities
Memory Lifecycle
Version entities and retrieve version chains; semantic forget (exact or similarity-based deletion)
Configurable observation distillation pipelines; background memory consolidation
Agent & Collaboration Features
Per-agent diary (write/read journal entries) and role profiles
User/agent profile management; collaborative multi-agent context synthesis
Cognitive load analysis and adaptive memory reduction
Ingestion & LLM Query
Ingest conversations, documents, or free-form text into the graph
Answer natural-language questions over the graph
Utilities
Symbolic reference index for cross-session consistency
Named versioned content artifacts attached to entities
Entropy-based noise filtering and information-density scoring
Salience-budget-aware context formatting; project scoping; session failure handling
Storage Backends: JSONL or SQLite (SQLite offers 3–10× faster performance with FTS5 full-text search). Semantic search supports OpenAI or local embedding models.
Enables export of knowledge graph data to Markdown format for documentation and reporting purposes.
Provides export capability to Mermaid format for visualizing knowledge graph relationships and hierarchies as diagrams.
Supports semantic search capabilities using OpenAI embedding models for similarity-based entity matching and intelligent knowledge graph queries.
Offers SQLite backend storage with better-sqlite3 for 3-10x faster performance and FTS5 full-text search capabilities compared to JSONL storage.
Provides TypeScript-based API interfaces and type definitions for entity, relation, and observation management within the knowledge graph system.
Utilizes Zod schemas for input validation and type safety across all API operations and data structures.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Enhanced Knowledge Graph Memory Server find all project notes tagged 'research' from last month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Memory MCP Server
An enhanced fork of the official Model Context Protocol memory server. The fork adds hierarchical nesting, intelligent compression, semantic search, graph algorithms, archiving, advanced search, and multi-format import/export.
Enterprise-grade knowledge graph with 241 tools including hierarchical organization, semantic search with embeddings, graph traversal algorithms, duplicate detection, smart archiving, project scoping, temporal knowledge graph, semantic forget, agent diary, entity bitemporal validity, optimistic concurrency control, role-based access control, W3C Linked Data exports (Turtle / JSON-LD / RDF/XML), PII redaction on export, procedural memory, active retrieval, causal reasoning, world model,
do_not_rememberexclusions, decision rationale (ADR memory + markdown dual-write), structured project context (facts / conventions / commands / glossary), heuristic guidelines, tool affordance + ToolCallObserver pipeline (with MCP shim), observation dedup, spell correction, n-ary event memory, reconstructive (Cue–Tag–Content) memory with snapshot persistence, relation consolidation, agent reflections, and a graph-connectivity hybrid-search channel with evidence-path explanations for long-term memory management.
Table of Contents
Related MCP server: Hippocampus
Features
Core Memory Capabilities
Knowledge Graph Storage: Entity-Relation-Observation model for structured memory
Persistent Memory: Information persists across chat sessions with JSONL or SQLite storage
Dual Storage Backends: JSONL (human-readable) or SQLite with better-sqlite3 (3-10x faster, FTS5 search)
Full CRUD Operations: Create, read, update, delete entities and relations
Flexible Search: Text-based, fuzzy, boolean, semantic, and TF-IDF ranked search
Advanced Features
Category | Tools | Description |
Hierarchical Nesting | 9 | Parent-child relationships for organizing tree structures |
Graph Algorithms | 4 | Path finding, connected components, centrality metrics |
Intelligent Search | 3 | Hybrid multi-layer search with query analysis and reflection |
Semantic Search | 3 | Embedding-based similarity search with OpenAI or local models |
Memory Compression | 4 | Intelligent duplicate detection and merging with similarity scoring |
Advanced Search | 7 | TF-IDF ranking, boolean queries, fuzzy matching, auto-select |
Observation Normalization | 1 | Coreference resolution and temporal anchoring |
Tag Management | 6 | Tags, bulk operations, importance scores |
Tag Aliases | 5 | Tag synonym/alias management |
Saved Searches | 5 | Store and execute frequent queries |
Import/Export | 2 | 7 export formats (incl. W3C Linked Data: Turtle / JSON-LD / RDF/XML) with brotli + PII redaction; 3 import formats |
Graph Analytics | 2 | Statistics, validation, integrity checks |
Ref Index | 4 | Cross-session symbolic reference registration and resolution |
Artifacts | 3 | Named versioned content blobs attached to entities |
Temporal Search | 1 | Time-window filtered search across the knowledge graph |
Distillation | 1 | Configure automated observation distillation pipelines |
Freshness | 5 | Staleness tracking, expiry detection, and freshness reporting |
LLM Query | 1 | Natural-language question answering over the graph |
Governance | 4 | Transactional audit trail, history, and rollback |
Role Profiles | 2 | Per-agent role assignment and profile listing |
Entropy | 2 | Entropy-based noise filtering and information density scoring |
Consolidation | 3 | Background memory consolidation scheduling and control |
Formatter | 1 | Salience-budget-aware context formatting |
Collaborative | 1 | Multi-agent context synthesis |
Failure Handling | 2 | Session failure distillation and graceful session end |
Cognitive Load | 2 | Working-memory load analysis and adaptive reduction |
Dream Engine | 3 | Background memory maintenance: 8-phase sleep-cycle consolidation |
Project Scoping | 1 | List and filter entities by project |
Memory Versioning | 2 | Entity version chains and per-entity version history |
Semantic Forget | 1 | Two-tier deletion: exact match → semantic similarity fallback |
Profiles | 2 | User/agent profile get and update |
Temporal KG | 3 | Temporal relation invalidation, time-travel queries, relation timeline |
Ingestion | 1 | Format-agnostic conversation/document ingestion pipeline |
Agent Diary | 2 | Per-agent persistent journal write and read |
Session & Working Memory | 9 | Session lifecycle, working memory CRUD, TTL, promotion, context wake-up |
Auto-Enhancement | 3 | Auto-link entity mentions, fact extraction, contradiction detection |
Context Compression | 1 | N-gram text abbreviation with legend for token savings |
Consolidation Pipeline | 3 | Session consolidation, pattern detection, entity summarization |
Decay & Salience | 5 | Time-based decay, importance scoring, weak memory cleanup, reinforcement |
Multi-Agent | 5 | Agent registration, cross-agent search, visibility, conflict resolution |
Observability | 4 | D3.js graph visualization, transcript splitting, query cost estimation |
Dedup | 1 | Priority-based smart deduplication |
Entity Bitemporal | 5 | Time-travel queries: invalidate entities/observations, entity_as_of, timelines |
Optimistic Concurrency | 1 |
|
RBAC | 4 | Role-based access control: assign/revoke/check/list reader/writer/admin/owner permissions |
Procedural Memory | 5 | Executable how-to sequences with EWMA-refined success rate |
Active Retrieval | 1 | Iterative query rewriting until coverage threshold met |
Causal Reasoning | 4 | Chain discovery, counterfactual queries, cycle detection |
World Model | 3 | Graph snapshots, fact validation, outcome prediction |
Comparison with Official Memory Server
Feature | Official | Enhanced (This Fork) |
Entity/Relation/Observation Management | ✅ | ✅ |
Basic Search | ✅ | ✅ |
Hierarchical Nesting | ❌ | ✅ Parent-child trees |
Graph Algorithms | ❌ | ✅ Path finding, centrality |
Semantic Search | ❌ | ✅ Embedding-based similarity |
Memory Compression | ❌ | ✅ Duplicate detection |
Brotli Compression | ❌ | ✅ Backups, exports, responses |
Smart Archiving | ❌ | ✅ Criteria-based |
Advanced Search | ❌ | ✅ TF-IDF + Boolean + Fuzzy |
SQLite Backend | ❌ | ✅ better-sqlite3 (3-10x faster) |
Full-Text Search | ❌ | ✅ FTS5 with BM25 ranking |
Timestamps | ❌ | ✅ createdAt + lastModified |
Import/Export Formats | ❌ | ✅ 7 export / 3 import |
Input Validation | ❌ | ✅ Zod schemas |
Backup & Restore | ❌ | ✅ Compressed snapshots |
Intelligent Search | ❌ | ✅ Hybrid + Query Analysis + Reflection |
Observation Normalization | ❌ | ✅ Coreference resolution + temporal anchoring |
Total Tools | 11 | 160 |
Code Structure | Monolithic | Modular (5 src files in this repo; core graph in |
Quick Start
1. Install from NPM
npm install -g @danielsimonjr/memory-mcpOr use with npx (no installation required):
npx @danielsimonjr/memory-mcp2. Configure Claude Desktop
Add to claude_desktop_config.json:
Using NPM Global Install:
{
"mcpServers": {
"memory": {
"command": "mcp-server-memory"
}
}
}Using NPX:
{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@danielsimonjr/memory-mcp"]
}
}
}3. Restart Claude Desktop
Restart Claude Desktop to load the enhanced memory server.
4. Start Using
Tell Claude:
Please remember that I prefer TypeScript over JavaScript.
Tag this as "preferences" with importance 8.
Create a parent entity called "Development Preferences" and nest this under it.Installation
Local Build
# Clone repository
git clone https://github.com/danielsimonjr/memory-mcp.git
cd memory-mcp
# Install and build
bun install
bun run build
# Run tests
bun run test
# Type check
bun run typecheckClaude Desktop Configuration
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (Mac) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["<PATH_TO>/memory-mcp/dist/index.js"],
"env": {
"MEMORY_FILE_PATH": "<PATH_TO>/memory.jsonl"
}
}
}
}VS Code
Add to .vscode/mcp.json:
{
"servers": {
"memory": {
"command": "node",
"args": ["/path/to/memory-mcp/dist/index.js"]
}
}
}Core Concepts
Entities
Primary nodes in the knowledge graph.
interface Entity {
name: string; // Unique identifier
entityType: string; // Classification
observations: string[]; // Facts about the entity
parentId?: string; // Parent entity name for hierarchical nesting
tags?: string[]; // Lowercase tags for categorization
importance?: number; // 0-10 scale for prioritization
createdAt?: string; // ISO 8601 timestamp
lastModified?: string; // ISO 8601 timestamp
}Relations
Directed connections between entities.
interface Relation {
from: string; // Source entity name
to: string; // Target entity name
relationType: string; // Relationship type (active voice)
createdAt?: string; // ISO 8601 timestamp
lastModified?: string; // ISO 8601 timestamp
}Observations
Discrete facts about entities. Each observation should be atomic and independently manageable.
API Reference
Complete Tool List (241 Tools)
Tool count: 241 tools across 65 categories. The sections Extended Tools and Hybrid Search Options list the options that existing tools accept. For full per-tool schemas see docs/architecture/API.md or
src/server/toolDefinitions.ts.
Entity Operations (4 tools)
Tool | Description |
| Create multiple new entities |
| Remove entities and their relations |
| Read entire knowledge graph |
| Retrieve specific nodes by name |
Relation Operations (2 tools)
Tool | Description |
| Create relations between entities |
| Remove specific relations |
Observation Management (3 tools)
Tool | Description |
| Add observations to entities |
| Remove specific observations |
| Normalize observations (resolve pronouns, anchor dates) |
Search (7 tools)
Tool | Description |
| Search with filters (tags, importance) |
| Filter by date range |
| TF-IDF relevance ranking |
| Boolean queries (AND/OR/NOT) |
| Typo-tolerant search |
| "Did you mean?" suggestions |
| Auto-select best search method |
Intelligent Search (3 tools)
Tool | Description |
| Multi-layer search combining semantic, lexical, and symbolic signals |
| Extract entities, temporal references, and classify query complexity |
| Reflection-based iterative search until results meet adequacy threshold |
Semantic Search (3 tools)
Tool | Description |
| Search by semantic similarity using embeddings |
| Find entities similar to a reference entity |
| Build or rebuild the semantic search index |
Saved Searches (5 tools)
Tool | Description |
| Save search query for reuse |
| Execute a saved search |
| List all saved searches |
| Delete a saved search |
| Update saved search parameters |
Tag Management (6 tools)
Tool | Description |
| Add tags to an entity |
| Remove tags from an entity |
| Set entity importance (0-10) |
| Bulk tag operation |
| Replace tag globally |
| Merge two tags into one |
Tag Aliases (5 tools)
Tool | Description |
| Create tag synonym |
| List all aliases |
| Remove an alias |
| Get aliases for canonical tag |
| Resolve alias to canonical form |
Hierarchical Nesting (9 tools)
Tool | Description |
| Set/remove parent relationship |
| Get immediate children |
| Get parent entity |
| Get all ancestors (parent chain) |
| Get all descendants (recursive) |
| Get entity + descendants with relations |
| Get entities with no parent |
| Get depth in hierarchy |
| Move entity to new parent |
Graph Algorithms (4 tools)
Tool | Description |
| Shortest path between entities (BFS) |
| All paths with max depth limit |
| Detect isolated subgraphs |
| Calculate centrality metrics (degree, betweenness, PageRank) |
Graph Analytics (2 tools)
Tool | Description |
| Comprehensive graph statistics |
| Validate graph integrity |
Compression & Archiving (4 tools)
Tool | Description |
| Find similar entities by threshold |
| Merge multiple entities into one |
| Auto compression with dry-run |
| Archive by age, importance, or tags |
Import & Export (2 tools)
Tool | Description |
| Export in 7 formats (JSON, CSV, GraphML, GEXF, DOT, Markdown, Mermaid) with compression |
| Import from JSON/CSV/GraphML with merge strategies |
Ref Index (4 tools)
Tool | Description |
| Register a symbolic reference pointing to an entity |
| Resolve a symbolic reference to its target entity |
| Remove a registered symbolic reference |
| List all registered symbolic references |
Artifacts (3 tools)
Tool | Description |
| Create a named versioned content blob attached to an entity |
| Retrieve an artifact by name and optional version |
| List all artifacts, optionally filtered by entity |
Temporal Search (1 tool)
Tool | Description |
| Search entities and observations within a time window |
Distillation (1 tool)
Tool | Description |
| Configure automated observation distillation pipelines |
Freshness (5 tools)
Tool | Description |
| Check freshness status of a specific entity |
| List entities that have exceeded their staleness threshold |
| List entities past their explicit expiry date |
| Reset the freshness timestamp on an entity |
| Generate a full freshness report across the graph |
LLM Query (1 tool)
Tool | Description |
| Answer natural-language questions over the knowledge graph |
Governance (4 tools)
Tool | Description |
| Execute a governed, audited graph transaction |
| Query the audit log with filters |
| Retrieve full audit history for an entity |
| Roll back a previously recorded operation |
Role Profiles (2 tools)
Tool | Description |
| Assign a role profile to the current agent context |
| List all available agent role profiles |
Entropy (2 tools)
Tool | Description |
| Enable entropy-based noise filtering for search results |
| Compute information-density entropy score for an entity |
Consolidation (3 tools)
Tool | Description |
| Start the background memory consolidation service |
| Stop the background memory consolidation service |
| Trigger an immediate consolidation pass |
Formatter (1 tool)
Tool | Description |
| Format context output respecting a token salience budget |
Collaborative (1 tool)
Tool | Description |
| Synthesize a unified context view from multiple agent memory spaces |
Failure Handling (2 tools)
Tool | Description |
| Distill and store key observations from a failed session |
| Gracefully end a session and persist in-flight state |
Cognitive Load (2 tools)
Tool | Description |
| Analyze working-memory load in the current context |
| Adaptively reduce memory set to fit cognitive load target |
Project Scoping (1 tool)
Tool | Description |
| List all project IDs present in the graph and filter entities by project |
Memory Versioning (2 tools)
Tool | Description |
| Retrieve all versions of a versioned entity by name |
| Get the full version chain from root to latest for an entity |
Semantic Forget (1 tool)
Tool | Description |
| Delete an entity by exact name, falling back to semantic similarity if no exact match found |
Profiles (2 tools)
Tool | Description |
| Retrieve a user or agent profile entity |
| Update observations and metadata on a profile entity |
Temporal KG (3 tools)
Tool | Description |
| Mark a relation as ended by setting its temporal validity end date |
| Retrieve all relations for an entity that were valid at a given point in time |
| Return a chronological list of relation events for an entity |
Ingestion (1 tool)
Tool | Description |
| Ingest a conversation, document, or free-form text into the knowledge graph |
Agent Diary (2 tools)
Tool | Description |
| Append an entry to the agent's persistent diary |
| Read diary entries for an agent, optionally filtered by date range |
Entity Bitemporal Validity (5 tools)
Tool | Description |
| Stamp |
| Time-travel query: returns entity state at a given ISO 8601 timestamp, or |
| All temporal versions of an entity in chronological order; integrates the supersession chain |
| Per-observation invalidation via parallel |
| Filter observations valid at a given timestamp; observations without meta are treated as unbounded |
Optimistic Concurrency Control (1 tool)
Tool | Description |
| Update an entity with optional |
RBAC (4 tools)
Tool | Description |
| Grant |
| Remove a specific role assignment matched by |
| Check whether an agent can perform |
| List all role assignments for an agent; optional |
Procedural Memory (5 tools)
Tool | Description |
| Persist an executable how-to sequence: 1-indexed steps with optional fallback chains and free-form trigger phrases |
| Load a procedure by id |
| Token-overlap match a context description against stored procedures; returns ranked Jaccard-like scores |
| Apply caller feedback after execution; updates |
| Load step by 1-indexed |
Active Retrieval (1 tool)
Tool | Description |
| Iterative query-rewriting retrieval (search → score coverage → rewrite); up to 3 rounds, and it stops early when the coverage reaches 0.6. Pure symbolic — no LLM provider required. |
Causal Reasoning (4 tools)
Tool | Description |
| Causal chains ending at the named effect; sorted by product-of-edge causalStrength |
| Symmetric counterpart starting at the named cause |
| "If we remove edge (removeFrom → removeTo), is |
| Detect cycles in the causal subgraph rooted at |
World Model (3 tools)
Tool | Description |
| Capture a fresh snapshot of the live graph (capped at 1000 entities; over-cap prefers high-importance) |
| Validate a candidate observation against a target entity via |
| Predict downstream effects of an action by walking the causal subgraph (delegates to |
Extended Tools
export_graph— Acceptsformat: 'turtle' | 'rdf-xml' | 'json-ld'for W3C Linked Data exports. AcceptsredactPii: trueto scrub PII (email / SSN / credit-card / phone / IPv4) from observations with thePiiRedactor.create_entities— Accepts freshness fields (ttl,confidence), project scope (projectId), and bitemporal fields (validFrom,validUntil,observationMeta) per entity.set_memory_visibility— Auto-promotes plain entities toAgentEntity(stampsagentId/memoryType/confidence) instead of silently returningnull. Supports a time window and a role gate (allowedRoles,visibleFrom,visibleUntil).
Tool Affordance (11 tools)
Tool | Description |
| Record a tool call outcome (success/failure) into affordance stats |
| Per-tool success-rate and usage statistics |
| Suggest the best tool for a task based on recorded affordances |
| List all recorded tool affordances |
| Remove one tool's affordance record |
|
|
| Mark an observed tool call completed successfully |
| Mark an observed tool call failed |
| Mark an observed tool call partially successful |
| Cancel an in-flight tool observation |
| Count of currently in-flight observed tool calls |
Heuristic Guidelines (10 tools)
Tool | Description |
| Store a heuristic guideline ("when X, prefer Y") |
| Fetch one heuristic by id |
| List stored heuristics |
| Count of stored heuristics |
| Heuristics matching a context string |
| Strengthen a heuristic after successful application |
| Record evidence contradicting a heuristic |
| Detect mutually contradictory heuristics |
| Remove one heuristic |
| Remove all heuristics |
Project Context (12 tools)
Tool | Description |
| Create/replace a project's structured context record |
| Fetch a project's context record |
| Append a fact to a project context |
| Append a coding/workflow convention |
| Append a named command (e.g. build/test invocations) |
| Append a glossary term + definition |
| Remove a fact by index/value |
| Remove a convention |
| Remove a command |
| Remove a glossary term |
| Delete a project's context record |
| Render the context as LLM-ready markdown |
Decision Rationale (10 tools)
Tool | Description |
| Record a proposed decision with rationale |
| Mark a decision accepted |
| Mark a decision rejected |
| Supersede a decision with a newer one |
| Decisions matching a context string |
| Follow a decision's supersession chain |
| List decisions (filterable by status) |
| Fetch one decision by id |
| Render a decision as ADR markdown |
| Parse ADR markdown back into a decision record |
Exclusion / do_not_remember (5 tools)
Tool | Description |
| Add a rule for content that must not be remembered |
| List exclusion rules |
| Remove one exclusion rule |
| Check whether a text would be excluded |
| Existing memories matching an exclusion rule |
Observation Dedup (2 tools)
Tool | Description |
| Exact duplicate observations across entities |
| Near-duplicates via Jaccard token similarity |
Spell Correction (3 tools)
Tool | Description |
| "Did you mean?" suggestions for a query term |
| Rebuild the spell-check vocabulary from the graph |
| Current vocabulary size |
Active Project Scope (2 tools)
Tool | Description |
| Set the server's active project-scope filter (per-session mutable state) |
| Get the active project scope ( |
Engineering / Diagnostics (10 tools)
Tool | Description |
| Server + storage diagnostic snapshot |
| Quick health check |
| Graph integrity check |
| Rebuild search indexes |
| Stats for the global search caches |
| Bust all global search caches |
| Entity/relation/observation counts + on-disk footprint |
| Verbose single-entity snapshot (observations, relations, hierarchy) |
| Hierarchy as nested JSON |
| Incoming/outgoing relations + degree counts for one entity |
Event Memory (5 tools)
Tool | Description |
| Reify an action as an event hub entity with role-typed relations ( |
| Load one event with its resolved role endpoints |
| Query by actor / target / action / flowKey / time range, chronologically ordered |
| Full timeline of a named flow (e.g. a release or incident) |
| "Who did what (to target / in context / within range)?" join over events |
Reconstructive Memory (5 tools)
Tool | Description |
| Distill dialogue turns into the Cue–Tag–Content associative graph (also persisted into the live knowledge graph) |
| Answer a query via active multi-step traversal; returns evidence + trajectory |
| CTC graph size statistics |
| Serialize the CTC graph to a |
| Restore the CTC graph from the sidecar (survives restarts) |
Relation Consolidation (2 tools)
Tool | Description |
| Dry-run the three-tier relation janitor: spelling variants, inverse duplicates, semantic duplicates (with embeddings) |
| Apply tier 1+2 merges ( |
Agent Reflection (4 tools)
Tool | Description |
| Persist an evidence-backed generalized lesson (scope: session / project / global) |
| List reflections, filterable by scope / source / confidence |
| Reflections relevant to a session (sourceSessionId + evidence overlap) |
| Soft-delete a reflection out of default listings |
Hybrid Search Options
hybrid_search— Accepts four additive options:graphWeight: a graph-connectivity channel through normalized PageRank.expandNeighbors: a one-hop expansion of the top results with damped scores.explain: annotates results with evidence paths from the query anchors.lookFor: ranks the expansion neighbors by a free-text connection description.
Configuration
Environment Variables
Variable | Description | Default |
| Path to storage file |
|
| Storage backend: |
|
| Embedding provider: |
|
| OpenAI API key (required if provider is | - |
| Embedding model to use |
|
| Base URL of a local |
|
| Auto-index entities on creation |
|
Storage Backends
Feature | JSONL (Default) | SQLite (better-sqlite3) |
Format | Human-readable text | Native binary database |
Transactions | Basic | Full ACID with WAL mode |
Full-Text Search | Basic | FTS5 with BM25 ranking |
Performance | Good | 3-10x faster |
Concurrency | Single-threaded | Thread-safe with async-mutex |
Best For | Small graphs, debugging | Large graphs (10k+ entities) |
Using SQLite:
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["/path/to/memory-mcp/dist/index.js"],
"env": {
"MEMORY_STORAGE_TYPE": "sqlite",
"MEMORY_FILE_PATH": "/path/to/data/memory.db"
}
}
}
}Storage Files
When you set MEMORY_FILE_PATH, the server automatically creates related files:
/your/data/directory/
├── memory.jsonl # Main knowledge graph
├── memory-saved-searches.jsonl # Saved search queries
├── memory-tag-aliases.jsonl # Tag synonym mappings
└── .backups/ # Timestamped backups
├── backup_2026-01-08_10-30-00-123.jsonl
└── backup_2026-01-08_10-30-00-123.jsonl.meta.jsonMigration Tool
Convert between JSONL and SQLite formats:
cd tools/migrate-from-jsonl-to-sqlite
npm install && npm run build
# JSONL to SQLite
node dist/migrate-from-jsonl-to-sqlite.js --from memory.jsonl --to memory.db
# SQLite to JSONL
node dist/migrate-from-jsonl-to-sqlite.js --from memory.db --to memory.jsonlDevelopment
Prerequisites
Bun 1.4+ (install + scripts;
bun.lockis authoritative)Node.js 22+ (shipped runtime — CI smokes
dist/under Node)TypeScript 7+
Build Commands
bun install # Install dependencies
bun run build # Build TypeScript
bun run test # Run tests
bun run typecheck # Strict type checking
bun run watch # Development watch mode
bun run clean # Remove dist/ directory
bun run docs:deps # Generate dependency graphArchitecture
This repo is a thin MCP wrapper. All graph logic, managers, and storage live in @danielsimonjr/memoryjs. The version range is in package.json.
memory-mcp (this repo) @danielsimonjr/memoryjs (npm dep)
┌──────────────────────────┐ ┌──────────────────────────────────┐
│ src/index.ts │ │ ManagerContext (lazy init) │
│ src/server/MCPServer.ts │───────▶│ EntityManager, RelationManager │
│ src/server/toolDefs.ts │imports │ SearchManager, IOManager, etc. │
│ src/server/toolHandlers │ │ GraphStorage / SQLiteStorage │
│ src/server/responseComp.│ │ StorageFactory + 100+ modules │
└──────────────────────────┘ └──────────────────────────────────┘
5 source files 77+ source files (extracted)
MCP protocol + dispatch All graph + search + storageLayer | Lives in | Files |
MCP protocol (stdio transport, tool registration, dispatch) |
| 5 |
Tool schemas (241 tools across 65 categories) |
| 1 |
Handler registry + Zod validation + response compression |
| 2 |
Managers (Entity / Relation / Search / IO / Tag / Hierarchy / Analytics / Compression / Archive / GraphTraversal / SemanticSearch / RankedSearch / etc.) |
| 100+ |
Storage (JSONL + SQLite with FTS5 + StorageFactory + TransactionManager) |
| — |
Embedding providers (OpenAI / local / none) + VectorStore |
| — |
Project Structure
memory-mcp/
├── src/ # Source (5 TypeScript files)
│ ├── index.ts # Entry point: ManagerContext + start MCPServer; re-exports memoryjs types
│ └── server/
│ ├── MCPServer.ts # MCP Server setup, stdio transport, request handlers
│ ├── toolDefinitions.ts # 241 tool schemas (name, description, inputSchema)
│ ├── toolHandlers.ts # Handler registry: validate args → call manager → format response
│ └── responseCompressor.ts # Brotli + base64 wrapper for >256KB payloads
├── tests/ # Test suite
│ ├── unit/ # Unit tests (response compressor, tool defs, validate-fact handler, API.md Returns gate)
│ ├── integration/ # MCP server lifecycle
│ ├── e2e/tools/ # Per-category tool tests + handler-smoke broad coverage
│ ├── knowledge-graph.test.ts # Core graph operations (smoke against memoryjs)
│ └── file-path.test.ts # Storage path resolution
├── dist/ # Compiled output (rebuilt on `npm install` via `prepare`)
├── docs/ # Documentation
│ ├── architecture/ # API.md, ARCHITECTURE.md, COMPONENTS.md, OVERVIEW.md, TEST_COVERAGE.md
│ ├── guides/ # HIERARCHY.md, COMPRESSION.md, ARCHIVING.md, QUERY_LANGUAGE.md
│ ├── development/ # WORKFLOW.md
│ ├── roadmap/ # FUTURE_FEATURES.md, PERFORMANCE_AND_CAPABILITIES.md
│ └── reports/ # Historical sprint reports
├── tools/ # Standalone utilities (each builds independently)
│ ├── chunking-for-files/ # File splitting
│ ├── compress-for-context/ # CTON compression
│ ├── create-dependency-graph/ # Dependency analyzer
│ └── migrate-from-jsonl-to-sqlite/ # Storage backend converter
├── CHANGELOG.md # Version history
└── README.md # This fileDependencies
Production (3 direct deps — everything else is transitive via memoryjs):
@danielsimonjr/memoryjs: ^4.2.0 — knowledge graph engine (storage, managers, search, embeddings, RBAC, OCC, bitemporal, causal, etc.)@modelcontextprotocol/server: ^2.0.0 — MCP protocol implementation (Serverand the stdio transport)zod: ^4.6.5 — runtime input validation (schemas re-exported from memoryjs)
Development:
typescript: ^7.0.2typescript6: npm:typescript@6.0.3 — thecreateProgramAPI for the API.md Returns gate (version 7 oftypescripthas none)vitest: ^5.0.5@vitest/coverage-v8: ^5.0.5esbuild: ^0.28.2 — builds the plugin bundle (scripts/build-bundle.mjs)shx: ^0.4.0 — cross-platform shell commands forcleanscript@types/node: ^26
Note:
better-sqlite3,async-mutex,@danielsimonjr/workerpool, and the embedding providers (OpenAI /@xenova/transformers) are transitive deps via@danielsimonjr/memoryjs. They are not listed in this repo'spackage.json.
Documentation
Comprehensive documentation in docs/:
Architecture
API.md - Complete API documentation for all 241 tools
ARCHITECTURE.md - Technical architecture and system design
COMPONENTS.md - Component breakdown and responsibilities
OVERVIEW.md - High-level project overview
DEPENDENCY_GRAPH.md - Module dependencies
User Guides
HIERARCHY.md - Parent-child relationships (9 tools)
COMPRESSION.md - Duplicate detection and merging
ARCHIVING.md - Memory lifecycle and archiving
QUERY_LANGUAGE.md - Boolean search syntax
Development
WORKFLOW.md - Development procedures
MIGRATION.md - Version upgrade guide
Companion skill
This plugin ships a memory skill (memory-mcp:memory, /memory) — a playbook over the knowledge-graph tools covering graph CRUD/search/maintenance, project indexing, and storage migration. See skills/memory/SKILL.md.
Contributing
We welcome contributions!
See:
CONTRIBUTING.md - Contribution guidelines
CODE_OF_CONDUCT.md - Community standards
Ways to Help:
Report bugs
Request features
Submit pull requests
Improve documentation
Add tests
Changelog
All notable changes, with the version of each, are documented in CHANGELOG.md.
License
MIT License - see LICENSE
Acknowledgments
Original Project
Enhanced fork of Model Context Protocol memory server by Anthropic.
Developer
Major Enhancements
Hierarchical nesting with parent-child relationships
Graph algorithms: path finding, centrality, connected components
Semantic search with embedding-based similarity
Brotli compression for backups, exports, and responses
Memory compression with intelligent duplicate detection
Smart archiving with criteria-based filtering
Advanced search: TF-IDF, boolean, and fuzzy matching
Multi-format import/export with merge strategies
SQLite backend with better-sqlite3 (3-10x faster)
Transaction support with ACID guarantees
Comprehensive test suite (this wrapper repo has its own tests; full-coverage core graph tests live in
@danielsimonjr/memoryjs)
Repository: https://github.com/danielsimonjr/memory-mcp NPM: https://www.npmjs.com/package/@danielsimonjr/memory-mcp Issues: https://github.com/danielsimonjr/memory-mcp/issues
Available Tools
241 toolsaccept_decisionB
v2.1.0 — Transition a proposed decision to accepted. Returns one of: accepted | already-accepted | not-found | illegal-transition | conflict | vanished-mid-update.
Inputs: id (required).
adaptive_reduce_memoriesB
Adaptively reduce a set of memories until their cognitive load falls below the configured threshold by removing low-salience redundant memories
Inputs: entityNames (required), salienceScores (required), loadThreshold.
adaptive_retrieveA
3B.5 — Run iterative query-rewriting retrieval. Up to maxRounds of (search → score coverage → rewrite). Stops early when coverage ≥ minCoverage or no expansion tokens. Pure symbolic — no LLM provider required.
Inputs: query (required), maxRounds, minCoverage, budgetTokens, +1 more.
add_exclusion_ruleA
v2.1.0 — Add a content-pattern exclusion rule (do_not_remember). Hard-deletes existing matches (per scope) and write-blocks future ones when consulted by upstream callers. v1 substring-only.
Inputs: pattern (required), scope, reason, entityType.
add_heuristicC
v2.1.0 — Register a new condition→action heuristic. Storage-backed; default confidence 0.5. Pass an explicit content-addressed id (e.g. h_<sha256(condition|action)>) for caller-managed idempotency.
Inputs: action (required), condition (required), id, agentId, +3 more.
add_observationsC
Add new observations to existing entities in the knowledge graph
Inputs: observations (required).
add_procedureA
3B.4 — Persist a new procedural memory (executable how-to sequence). Steps are ordered (1-indexed) with optional fallback chains. Auto-generates id when omitted. Distinct from semantic facts and episodic events.
Inputs: steps (required), id, name, triggers, +1 more.
add_tag_aliasC
Add a tag alias (synonym mapping)
Inputs: alias (required), canonical (required), description.
add_tagsC
Add tags to an entity
Inputs: tags (required), entityName (required).
add_tags_to_multiple_entitiesC
Add the same tags to multiple entities at once
Inputs: tags (required), entityNames (required).
add_working_memoryA
Create a TTL-based short-term working memory entry scoped to a session. Working memories auto-expire and can be promoted to long-term storage.
Inputs: content (required), sessionId (required), taskId, ttlHours, +1 more.
analyze_cognitive_loadB
Analyze the cognitive load of a set of entities: token density, redundancy ratio, diversity score, and composite load score
Inputs: entityNames (required), loadThreshold.
analyze_queryA
Analyze a search query to extract entities, temporal references, question type, and complexity. Useful for understanding query structure before searching.
Inputs: query (required), includePlan.
analyze_relation_duplicatesA
Dry-run the three-tier relation janitor: tier 1 finds trivial relationType spelling variants (WorksAt/works-at/works_at) and redundant bidirectional mirrors; tier 2 (when an embedding provider is configured) finds semantically equivalent same-pair relations. Report-only — never mutates the graph.
Inputs: no named parameters.
append_project_commandB
v2.1.0 — Append a documented project command (dedup by name).
Inputs: name (required), command (required), purpose (required), projectId (required).
append_project_conventionC
v2.1.0 — Append one convention to a project context (auto-creates; dedups).
Inputs: projectId (required), convention (required).
append_project_factB
v2.1.0 — Append one fact to a project context (auto-creates the record on first call; dedups).
Inputs: fact (required), projectId (required).
append_project_glossary_termC
v2.1.0 — Append a glossary term (dedup by term).
Inputs: term (required), projectId (required), definition (required).
archive_entitiesC
Archive old or low-importance entities
Inputs: tags, dryRun, olderThan, importanceLessThan.
archive_reflectionA
Archive a reflection by id so it no longer appears in default listings or relevance matches (soft delete — the record is retained).
Inputs: id (required).
audit_historyA
Get the full audit history for a specific entity in chronological order
Inputs: entityName (required).
audit_queryB
Query the audit log for operations matching filter criteria (operation type, agent ID, entity name, date range)
Inputs: limit, since, until, agentId, +2 more.
auto_link_observationsA
Detect entity mentions in observation text and suggest cross-reference relations. Unlike normalize_observations (which resolves pronouns/dates), this finds entity name mentions.
Inputs: text (required).
boolean_searchC
Perform boolean search with AND, OR, NOT operators
Inputs: query (required), tags, maxImportance, minImportance.
cache_clearA
v12.5.0 — Bust all four global search caches. Idempotent; safe after manual graph edits to drop stale results.
Inputs: no named parameters.
cache_statsA
v12.5.0 — Per-tier snapshot of the global search caches (basic / ranked / boolean / fuzzy) showing hits / misses / size / hitRate. Process-local — every fresh server process starts at zero.
Inputs: no named parameters.
check_exclusionA
v2.1.0 — Check whether content would be blocked by any active forward-blocking rule. Returns {blocked, ruleId?, reason?}. Past-only rules are skipped.
Inputs: content (required), entityType.
check_freshnessB
Calculate the freshness score (0–1) for a specific entity based on its TTL and confidence
Inputs: entityName (required).
check_graphA
v12.5.0 — Detect orphan relations (from/to references a missing entity), missing parents (entity.parentId references a missing entity), and hierarchy cycles. Reports findings. With apply=true, deletes orphan relations and clears missing parentIds; cycles are always reported but never auto-repaired (no safe default for which edge to break).
Inputs: apply.
clear_expired_memoriesA
Remove all working memories that have exceeded their TTL. Complements get_expired_entities (which lists but does not delete).
Inputs: no named parameters.
clear_heuristicsA
v2.1.0 — Drop every heuristic (across all entities of type "heuristic").
Inputs: no named parameters.
clear_project_contextB
v2.1.0 — Wipe the four arrays (facts/conventions/commands/glossary) for projectId; keeps the entity.
Inputs: projectId (required).
compress_contextA
Compress text using n-gram abbreviation with a legend for token-efficient context loading. Unlike format_with_salience_budget (which allocates token budget), this does text-level compression.
Inputs: text (required), level.
compress_graphC
Compress the graph by merging similar entities
Inputs: dryRun, threshold.
compute_entropyB
Compute the Shannon entropy of a text string (in bits per character)
Inputs: text (required), minEntropy.
configure_distillationA
Configure the distillation pipeline policy (default, noop, or none) that filters memories before context formatting
Inputs: policy (required).
confirm_memoryA
Boost a memory's confidence score without resetting its timestamp. Unlike refresh_entity (which resets to 1.0), this incrementally increases confidence.
Inputs: memoryName (required), confidenceBoost.
consolidate_relationsA
Run relation-duplicate analysis and — when apply=true — merge tier 1+2 duplicate groups (delete variants, create the canonical survivor with summed confirmationCount). apply=false (default) is identical to analyze_relation_duplicates.
Inputs: apply.
consolidate_sessionA
Run the full ConsolidationPipeline on a session: promote working memory, merge duplicates, summarize, and extract patterns. Unlike run_consolidation_now (which runs the dedup scheduler), this is a comprehensive session-scoped pipeline.
Inputs: sessionId (required).
counterfactual_queryA
3B.6 — "What if we remove edge (removeFrom → removeTo)? Is predict still reachable from seed?" Returns chains from seed to predict that DO NOT use the removed edge. Pure: does not mutate the graph.
Inputs: seed (required), predict (required), removeTo (required), removeFrom (required), +1 more.
create_artifactB
Create an artifact entity (tool output, code snippet, API response, etc.) with a stable auto-generated ref
Inputs: content (required), toolName (required), artifactType (required), sessionId, +1 more.
create_entitiesB
Create multiple new entities in the knowledge graph. Supports v1.6 freshness (ttl/confidence), v1.8 project scoping, and η.4.4 bitemporal validity (validFrom/validUntil/observationMeta).
Inputs: entities (required).
create_reflectionA
Persist an agent reflection — a generalized lesson distilled from experience, backed by evidence entities. Deduplicated by evidence hash; scoped to session, project, or global.
Inputs: scope (required), summary (required), evidence (required), generalizationConfidence (required), +6 more.
create_relationsC
Create multiple new relations between entities in the knowledge graph. Relations should be in active voice
Inputs: relations (required).
delete_entitiesC
Delete multiple entities from the knowledge graph
Inputs: entityNames (required).
delete_observationsC
Delete specific observations from entities
Inputs: deletions (required).
delete_relationsC
Delete multiple relations from the knowledge graph
Inputs: relations (required).
delete_saved_searchC
Delete a saved search
Inputs: name (required).
deregister_refB
Remove a stable alias (ref) from the RefIndex
Inputs: ref (required).
detect_causal_cyclesC
3B.6 — Detect cycles in the causal subgraph rooted at seed. CAVEAT: treats prevents as a directed edge, not as logical negation — prevents+enables triangles ARE flagged.
Inputs: seed (required), maxDepth.
detect_contradictionsB
Find conflicting observations within an entity using semantic similarity
Inputs: entityName (required), threshold.
detect_heuristic_conflictsA
v2.1.0 — Pair-wise overlap/contradiction detection across stored heuristics. Surfaces overlap (same condition tokens, different actions) and contradiction (opposing actions on overlapping conditions; negation prefixes such as "do not" / "never" / "avoid").
Inputs: no named parameters.
detect_patternsB
Detect recurring token-based patterns across observations of a given entity type
Inputs: entityType (required), minOccurrences.
diagA
v12.5.0 — Runtime + storage diagnostic snapshot: node version, platform, storage path/type/size, entity + relation counts, ISO timestamp. Good first call when something feels off.
Inputs: no named parameters.
diary_readA
Read recent diary entries for a specialist agent. Returns entries in reverse chronological order. Optionally filter by topic.
Inputs: agentId (required), lastN, topic.
diary_writeA
Write a timestamped diary entry for a specialist agent. Each agent gets its own persistent diary (entity: diary-{agentId}). Use for code review findings, architecture decisions, ops incidents, etc.
Inputs: entry (required), agentId (required), topic.
distill_failureB
Distill lessons from a failed session by tracing the causal chain and extracting actionable insights
Inputs: sessionId (required), maxCauseChainLength, minLessonConfidence.
dream_run_nowA
Run a single dream cycle immediately. Returns detailed per-phase results.
Inputs: phases.
dream_startA
Start the DreamEngine background memory maintenance. Runs 8 phases (temporal anchoring, freshness sweep, entropy pruning, consolidation, compression, entity enrichment, pattern promotion, graph hygiene) on a configurable interval.
Inputs: phases, intervalMs, maxDurationMs, runOnSessionEnd.
dream_stopA
Stop the DreamEngine background process.
Inputs: no named parameters.
enable_entropy_filterB
Enable or disable the Shannon entropy gate that drops low-information memories during consolidation
Inputs: enabled (required), minLength, minEntropy.
end_sessionA
End a session and trigger failure distillation if the session outcome was a failure
Inputs: outcome (required), sessionId (required), distillFailures.
entity_as_ofA
η.4.4 — Time-travel query for an entity. Returns the entity at a given point in time, or null if it was already invalidated then. An entity is valid at asOf when validFrom <= asOf AND (validUntil is undefined OR validUntil >= asOf).
Inputs: asOf (required), name (required).
entity_neighborsA
v12.5.0 — Incoming + outgoing relations for one entity, plus in/out degree counts. Lighter than inspect_entity when you only need the graph-topology view.
Inputs: name (required).
entity_timelineB
η.4.4 — Get all temporal versions of an entity in chronological order (by validFrom asc, with unbounded entities last). Returns the v1.8 supersession chain when one exists.
Inputs: name (required).
estimate_query_costA
Estimate execution cost (time, tokens) for all available search methods on a given query. Unlike analyze_query (which extracts entities/complexity), this predicts per-method performance.
Inputs: query (required).
execute_saved_searchC
Execute a previously saved search by name
Inputs: name (required).
export_decision_as_adr_markdownA
v2.1.0 — Render a stored decision as ADR-format markdown (# title, Status, Context, Decision, Consequences bullet list, Alternatives bullet list, optional Supersedes link).
Inputs: id (required).
export_graphA
Export knowledge graph in various formats with optional brotli compression and streaming for large graphs. Supports W3C Linked Data formats (turtle, rdf-xml, json-ld) added in η.5.4.
Inputs: format (required), filter, compress, redactPii, +3 more.
extract_factsB
Extract structured facts from observation text using rule-based extraction
Inputs: text (required).
find_all_pathsC
Find all paths between two entities up to a maximum depth
Inputs: source (required), target (required), maxDepth, direction, +1 more.
find_causesA
3B.6 — Find causal chains ending at the named effect. Searches paths from candidate causes via causal relation types (causes/enables/prevents/precedes/correlates). Sorted by score = product of per-edge causalStrength.
Inputs: effect (required), candidates (required), maxDepth.
find_decisions_by_contextB
v2.1.0 — Substring search across context, decision, and consequences fields.
Inputs: query (required).
find_duplicate_observationsA
v2.1.0 — Find verbatim duplicate observation strings across distinct entities (SHA-256 exact tier). Complementary to MemoryEngine.checkDuplicate (turn-level) and CompressionManager.findDuplicates (whole-entity). Report-only.
Inputs: maxGroups, projectId, sessionId, entityType, +1 more.
find_duplicatesC
Find potential duplicate entities based on similarity
Inputs: threshold.
find_effectsB
3B.6 — Find causal chains starting at the named cause and reaching any candidate effect. Symmetric counterpart to find_causes.
Inputs: cause (required), candidates (required), maxDepth.
find_jaccard_duplicate_observationsB
v2.1.0 — Find near-duplicate observation strings across distinct entities via token-Jaccard similarity with union-find grouping. More expensive than the exact tier (O(o²)); opt-in for higher recall.
Inputs: maxGroups, projectId, sessionId, entityType, +1 more.
find_matching_memories_for_ruleA
v2.1.0 — Dry-run preview: return entities whose observations would match the candidate exclusion pattern. Does NOT persist the rule.
Inputs: pattern (required), entityType.
find_shortest_pathC
Find the shortest path between two entities in the knowledge graph
Inputs: source (required), target (required), direction, relationTypes.
find_similar_entitiesC
Find entities similar to a given entity using semantic similarity. Requires embedding provider.
Inputs: entityName (required), limit, minSimilarity.
forget_memoryA
Forget (delete) observations matching the given content. Tries exact match first; falls back to semantic search at 0.85 similarity threshold if available. Supports dryRun to preview what would be deleted.
Inputs: content (required), dryRun, projectId, threshold.
forget_weak_memoriesA
Bulk-delete memories that fell below a decay threshold. Unlike forget_memory (content match) or archive_entities (criteria-based move), this uses decay-based importance scoring.
Inputs: dryRun, maxCount, threshold.
format_project_context_for_llmA
v2.1.0 — Render the ProjectContextRecord as a prose summary suitable for the wakeUp L0 layer or a system prompt. Honors budgetChars with ellipsis truncation.
Inputs: projectId (required), budgetChars.
format_with_salience_budgetB
Format memories for LLM prompt consumption with proportional token allocation based on salience scores
Inputs: entityNames (required), salienceScores (required), totalTokenBudget (required), header, +1 more.
freshness_reportB
Generate a freshness report across all entities showing fresh, stale, and expired counts
Inputs: threshold.
fuzzy_searchC
Perform fuzzy search with typo tolerance
Inputs: query (required), tags, threshold, maxImportance, +1 more.
get_aliases_for_tagC
Get all aliases for a canonical tag
Inputs: canonicalTag (required).
get_ancestorsC
Get all ancestor entities of an entity
Inputs: entityName (required).
get_artifactB
Retrieve an artifact entity by its stable ref or entity name
Inputs: ref (required).
get_centralityC
Calculate centrality metrics for entities in the graph
Inputs: topN, algorithm, direction, sampleRate, +2 more.
get_childrenC
Get all child entities of an entity
Inputs: entityName (required).
get_connected_componentsB
Find all connected components in the knowledge graph
Inputs: no named parameters.
get_context_profileA
Get a ContextWindowManager profile configuration (salience weights, retrieval strategy). Unlike get_profile (user profile facts), this returns context-aware retrieval settings.
Inputs: name (required).
get_decayed_memoriesA
List memories whose importance has fallen below a threshold due to time-based decay. Unlike get_stale_entities (which uses freshness timestamps), this uses decay engine importance calculations.
Inputs: threshold.
get_decisionA
v2.1.0 — Sync lookup by DecisionId.
Inputs: id (required).
get_decision_chainA
v2.1.0 — Walk the supersedes link backward from the supplied id to the original proposal. Returns chain oldest-first; cycle-protected.
Inputs: id (required).
get_descendantsC
Get all descendant entities of an entity
Inputs: entityName (required).
get_entity_depthC
Get the depth of an entity in the hierarchy
Inputs: entityName (required).
get_entity_versionsA
Get the latest version of an entity. If the entity has been superseded by newer versions (via contradiction detection), returns the most recent one.
Inputs: entityName (required).
get_eventA
Load one recorded event by its entity name, joining the event hub with its role-typed relation endpoints (actor, target, context, participants).
Inputs: name (required).
get_event_flowA
All events sharing a flow key (flow: tag), chronologically ordered — the full timeline of a named flow (e.g. a release, an incident).
Inputs: flowKey (required).
get_expired_entitiesB
Return all entities that have passed their TTL expiry
Inputs: no named parameters.
get_graph_statsC
Get statistics about the knowledge graph
Inputs: no named parameters.
get_heuristicC
v2.1.0 — Sync lookup by HeuristicId.
Inputs: id (required).
get_parentC
Get the parent entity of an entity
Inputs: entityName (required).
get_procedureC
3B.4 — Load a procedure by id.
Inputs: id (required).
get_procedure_stepA
3B.4 — Load a specific step from a procedure by 1-indexed order, OR get the next step relative to currentOrder.
Inputs: id (required), order (required), next.
get_profileB
Get the user profile. Returns static facts (long-lived preferences) and dynamic facts (recent session context). Profiles are scoped by projectId.
Inputs: projectId.
get_project_contextC
v2.1.0 — Sync lookup of the ProjectContextRecord for projectId.
Inputs: projectId (required).
get_project_scopeA
Returns the active project scope for this server session (set via set_project_scope). Returns { projectId } where projectId is null when no scope is active.
Inputs: no named parameters.
get_relevant_reflectionsA
Reflections relevant to a session: matches by sourceSessionId, plus evidence overlap with the supplied session entity names. Use at session start to surface applicable past lessons.
Inputs: sessionId (required), limit, minConfidence, sessionEntityNames.
get_root_entitiesB
Get all root entities (entities without parents)
Inputs: no named parameters.
get_search_suggestionsC
Get search suggestions for a query
Inputs: query (required), maxSuggestions.
get_stale_entitiesB
Return all entities whose freshness score is below a threshold
Inputs: threshold.
get_subtreeC
Get entity and all its descendants as a subgraph
Inputs: entityName (required).
get_tool_affordance_statsC
v2.1.0 — Flat rolling stats for a tool: success_rate, total_calls, common_failure_modes, avg_duration_ms.
Inputs: toolName (required).
get_version_chainA
Get all versions of an entity in its version chain. Returns versions sorted by version number ascending. Works from any entity in the chain (resolves to root automatically).
Inputs: entityName (required).
get_visible_memoriesA
Get all memories visible to a specific agent based on visibility rules and trust levels
Inputs: agentId (required).
get_world_stateA
3B.7 — Capture a fresh snapshot of the live graph: entitiesByName + takenAt timestamp + size. Capped at maxSnapshotSize (default 1000); over-cap prefers high-importance entities.
Inputs: no named parameters.
graph_sizeA
v12.5.0 — Graph + storage footprint: entity / relation / observation counts, distinct tag count, avg observations per entity, on-disk byte size + JSONL line count.
Inputs: no named parameters.
healthA
v12.5.0 — Fast integrity checks: storage:loadGraph, entities:distinct-names, relations:no-orphans, hierarchy:no-cycles-no-missing-parents. Returns per-check duration; ok=false when any check fails.
Inputs: no named parameters.
heuristic_countB
v2.1.0 — Count of stored heuristics.
Inputs: no named parameters.
hierarchy_treeA
v12.5.0 — Hierarchy tree as nested JSON. With an explicit root, returns just that subtree; without, returns all root entities. Useful for visualising parent/child structure.
Inputs: root.
hybrid_searchA
Search using combined semantic, lexical, and metadata signals. Provides better recall than single-signal search by fusing multiple relevance signals. v3 additive options: graphWeight adds a graph-connectivity (PageRank) channel, expandNeighbors appends one-hop neighbors of top results, explain annotates results with evidence paths from query anchors, lookFor ranks expansion neighbors by a free-text connection description.
Inputs: query (required), limit, explain, filters, +4 more.
import_graphC
Import knowledge graph from various formats
Inputs: data (required), format (required), dryRun, mergeStrategy.
index_embeddingsA
Index all entities for semantic search. Call this after adding entities to enable semantic search. Requires embedding provider.
Inputs: forceReindex.
ingestA
Ingest pre-normalized conversation data into the knowledge graph. Chunks messages by exchange pairs (user+assistant), creates entities with verbatim observations. Format-agnostic: normalize chat exports before calling.
Inputs: messages (required), tags, dryRun, source, +2 more.
ingest_dialogueB
Distill raw dialogue turns into the Cue–Tag–Content associative memory graph (MRAgent-style "memory is reconstructed, not retrieved"). Episodic/semantic/topic layers are also persisted into the live knowledge graph. Multiple calls accumulate.
Inputs: turns (required).
inspect_entityA
v12.5.0 — Verbose snapshot of one entity: observations (resolved via ObservationManager so the column-store sidecar is consulted), outgoing + incoming relations, tags, importance, timestamps, parentId, immediate children, full ancestors. Errors when entity not found.
Inputs: name (required).
invalidate_entityA
η.4.4 — Mark an entity as no longer valid by setting validUntil. Idempotent. Does not delete the entity — entity_as_of still returns it for past asOf timestamps. Orthogonal to v1.8 supersession.
Inputs: name (required), ended.
invalidate_observationA
η.4.4 — Mark a specific observation on an entity as no longer valid. Creates a parallel observationMeta[] entry if absent. Throws if observation not found on entity.
Inputs: content (required), entityName (required), ended.
invalidate_relationA
Mark a relation as no longer valid. Sets the validUntil timestamp on the matching active relation. Use for temporal facts that have ended (e.g., "Kai no longer works on Orion").
Inputs: to (required), from (required), relationType (required), ended.
list_artifactsB
List all artifact entities, with optional filtering by tool name, type, or date
Inputs: since, toolName, artifactType.
list_decisionsB
v2.1.0 — List decisions, optionally filtered by status / sourceSessionId / sourceProjectId.
Inputs: limit, status, sourceProjectId, sourceSessionId.
list_exclusion_rulesB
v2.1.0 — Return every registered ExclusionRule.
Inputs: no named parameters.
list_heuristicsC
v2.1.0 — All registered heuristics.
Inputs: no named parameters.
list_projectsA
List all distinct project IDs in the knowledge graph. Returns sorted array of projectId values, excluding global/unscoped entities.
Inputs: no named parameters.
list_reflectionsA
List stored agent reflections, filterable by scope, source session/project, and minimum generalization confidence. Archived reflections are excluded unless includeArchived is set.
Inputs: limit, scope, minConfidence, includeArchived, +2 more.
list_refsA
List all registered refs in the RefIndex, optionally filtered by entity name
Inputs: entityName.
list_role_profilesA
List all built-in role profiles with their salience weight and context budget configurations
Inputs: no named parameters.
list_saved_searchesB
List all saved searches
Inputs: no named parameters.
list_tag_aliasesB
List all tag aliases
Inputs: no named parameters.
list_tool_affordancesC
v2.1.0 — All recorded ToolAffordanceRecords.
Inputs: no named parameters.
load_reconstructive_memoryA
Restore the Cue–Tag–Content reconstructive graph from the -reconstructive.json sidecar written by save_reconstructive_memory, replacing the current in-memory graph. Errors if no sidecar exists.
Inputs: no named parameters.
match_heuristicsA
v2.1.0 — Find heuristics whose condition matches input via Jaccard token-overlap × confidence; sorted descending, then by priority.
Inputs: input (required), limit, minScore.
match_procedureB
3B.4 — Token-overlap match a context description against stored procedures. Returns ranked matches with Jaccard-like scores.
Inputs: context (required), threshold, candidateIds.
merge_entitiesC
Merge multiple entities into one
Inputs: entityNames (required), targetName.
merge_tagsC
Merge two tags into a target tag across all entities
Inputs: tag1 (required), tag2 (required), targetTag (required).
move_entityC
Move an entity to a new parent
Inputs: entityName (required), newParentName (required).
normalize_observationsC
Normalize entity observations by resolving pronouns and anchoring relative dates. Improves search matching quality.
Inputs: options, persist, entityName.
observations_as_ofA
η.4.4 — Get observations valid at a given point in time. Observations with no observationMeta entry are treated as unbounded (always-valid).
Inputs: asOf (required), entityName (required).
observe_tool_cancelA
v2.1.0 — Drop an in-flight observation without recording (e.g. user cancelled). No-op on unknown callId.
Inputs: callId (required).
observe_tool_completeA
v2.1.0 — Record successful completion. Computes durationMs from observe_tool_start. No-op on unknown callId.
Inputs: callId (required), result.
observe_tool_errorA
v2.1.0 — Record failure with an error message. No-op on unknown callId.
Inputs: callId (required), errorMessage (required).
observe_tool_partialB
v2.1.0 — Record a partial result (tool returned a usable but incomplete result). No-op on unknown callId.
Inputs: callId (required), reason (required).
observe_tool_startA
v2.1.0 — Begin observing a tool call. Returns a callId the caller threads through observe_tool_complete / observe_tool_error / observe_tool_partial / observe_tool_cancel. Emits toolCall:start on the observer EventEmitter.
Inputs: toolName (required), args.
open_nodesC
Open specific nodes by their names
Inputs: names (required).
parse_adr_markdownA
v2.1.0 — Parse a hand-written or previously-exported ADR markdown into a DecisionInput shape (static; no persistence). Returns null when required Context or Decision sections are missing.
Inputs: text (required).
predict_outcomeC
3B.7 — Predict downstream effects of an action by walking the causal subgraph. Delegates to CausalReasoner.findEffects.
Inputs: action (required), candidates (required).
priority_dedupA
Smart priority-based deduplication that keeps the highest-scored entity per duplicate group (importance > recency > observation count > tags)
Inputs: dryRun.
promote_working_memoryC
Promote a working memory entry to long-term episodic or semantic storage
Inputs: memoryName (required), targetType.
propose_decisionB
v2.1.0 — Propose a new architecture-decision-record (ADR-equivalent). Creates a "proposed" DecisionRecord. Default importance 8.
Inputs: context (required), decision (required), agentId, importance, +6 more.
query_as_ofA
Query relations valid at a specific point in time. Returns only relations where validFrom <= date AND (validUntil is undefined OR validUntil >= date). Time-travel query for temporal knowledge graphs.
Inputs: asOf (required), entityName (required), direction.
query_eventsA
Query recorded events by any combination of actor, target, action, flowKey, and inclusive time range. Results are chronologically ordered (occurredAt, falling back to createdAt). Uses relation/type indexes — never a full-graph scan.
Inputs: actor, limit, action, target, +2 more.
query_natural_languageC
Decompose a natural language query into a structured search plan and return matching entities
Inputs: query (required).
rbac_assign_roleA
η.6.1 — Grant a role to an agent. Roles: reader (read), writer (read+write), admin (read+write+delete), owner (all four). Optional resourceType narrows to one type; optional scope narrows to a name prefix; optional validUntil expires the grant.
Inputs: role (required), agentId (required), notes, scope, +3 more.
rbac_check_permissionB
η.6.1 — Check whether an agent can perform an action on a resource type. Falls back to defaultRole=reader for agents with no assignments.
Inputs: action (required), agentId (required), resourceType (required), now, +1 more.
rbac_list_assignmentsB
η.6.1 — List role assignments for an agent (active or all).
Inputs: agentId (required), now, activeOnly.
rbac_revoke_roleA
η.6.1 — Remove a specific role assignment. Matching is by agentId + role + resourceType (exact, including undefined).
Inputs: role (required), agentId (required), resourceType.
read_graphB
Read the entire knowledge graph
Inputs: no named parameters.
reconstructive_memory_statsA
Size statistics of the reconstructive (Cue–Tag–Content) memory graph: cue / tag / content node counts and edge counts.
Inputs: no named parameters.
reconstruct_memoryA
Answer a query via active multi-step traversal of the reconstructive (Cue–Tag–Content) memory graph. Returns accumulated evidence, the step-by-step trajectory, and whether the loop stopped early on a satisfied condition vs. budget.
Inputs: query (required), maxSteps, perStepBudget, evidenceTarget.
record_eventA
Record an n-ary event: the action becomes a first-class event hub entity with role-typed relations (actor_of/targeted/occurred_in/participant_in). Missing endpoints auto-create as concept stubs. Optional flowKey groups events into a named flow.
Inputs: actor (required), action (required), detail, target, +5 more.
record_heuristic_contradictionC
v2.1.0 — Record a counter-example: bumps contradictions; lowers confidence (new = old - old*0.2). OCC-protected.
Inputs: id (required).
record_tool_outcomeA
v2.1.0 — Record a single tool-call outcome directly via ToolAffordanceManager (bypasses ToolCallObserver). Creates the record on first call; appends to rolling window on subsequent. Throws "conflict" on concurrent writer mismatch.
Inputs: outcome (required), toolName (required), durationMs, errorMessage.
refine_procedureB
3B.4 — Apply caller feedback after a procedure execution. Increments executionCount and updates successRate via EWMA (α=0.2).
Inputs: id (required), succeeded (required), notes, recordedAt.
refresh_entityB
Reset freshness for an entity by updating its creation timestamp to now and resetting confidence to 1.0
Inputs: entityName (required).
register_agentA
Register an agent for multi-agent operations with identity metadata. Unlike set_agent_role (which applies a role profile), this registers agent identity with type, trust level, and capabilities.
Inputs: agentId (required), type, trustLevel, capabilities.
register_refA
Register a stable alias (ref) pointing to an entity name in the RefIndex for O(1) lookups
Inputs: ref (required), entityName (required), description.
reindexA
v12.5.0 — Rebuild search-side indexes that may have drifted (TF-IDF/BM25 ranked + spell-checker vocabulary). Pass ranked=false or spell=false to scope. Returns per-target ok flag + durationMs.
Inputs: spell, ranked.
reinforce_heuristicC
v2.1.0 — Record a successful application: bumps support; raises confidence asymptotically (new = old + (1-old)*0.1). OCC-protected — surfaces "conflict" when concurrent writer collides.
Inputs: id (required).
reinforce_memoryA
Boost a memory's decay resistance by increasing confirmation count and/or confidence. Unlike refresh_entity (timestamp reset) or set_importance (static score), this modulates the decay model.
Inputs: memoryName (required), confidenceBoost, confirmationBoost.
reject_decisionA
v2.1.0 — Transition a proposed decision to rejected with a reason. Returns rejected | already-rejected | not-found | illegal-transition | conflict | vanished-mid-update.
Inputs: id (required), reason (required).
remove_exclusion_ruleA
v2.1.0 — Drop an exclusion rule by id. Does NOT restore previously deleted memories — the contract is "user said forget".
Inputs: id (required).
remove_heuristicC
v2.1.0 — Drop a heuristic by id.
Inputs: id (required).
remove_project_commandC
v2.1.0 — Remove a command by name. Returns true if found.
Inputs: projectId (required), commandName (required).
remove_project_conventionC
v2.1.0 — Remove a single convention. Returns true if found.
Inputs: projectId (required), convention (required).
remove_project_factC
v2.1.0 — Remove a single fact. Returns true if found.
Inputs: fact (required), projectId (required).
remove_project_glossary_termC
v2.1.0 — Remove a glossary entry by term. Returns true if found.
Inputs: term (required), projectId (required).
remove_tag_aliasC
Remove a tag alias
Inputs: alias (required).
remove_tagsC
Remove tags from an entity
Inputs: tags (required), entityName (required).
remove_tool_affordanceC
v2.1.0 — Drop a tool-affordance record by toolName.
Inputs: toolName (required).
replace_tagC
Replace a tag with a new tag across all entities
Inputs: newTag (required), oldTag (required).
resolve_agent_conflictB
Resolve a conflict between two agent memories using a specified strategy
Inputs: primaryMemory (required), conflictingMemory (required), strategy.
resolve_refB
Resolve a stable alias (ref) to its entity name via the RefIndex
Inputs: ref (required).
resolve_tagC
Resolve a tag to its canonical form
Inputs: tag (required).
rollback_operationA
Reverse a specific committed operation using its audit entry ID (restores entity to before-snapshot)
Inputs: auditEntryId (required).
run_consolidation_nowA
Run a consolidation cycle on demand, independently of the scheduled interval
Inputs: no named parameters.
run_decay_cycleA
Run a single pass of time-based importance decay across all agent memories. Returns count of decayed and forgotten memories.
Inputs: no named parameters.
save_reconstructive_memoryA
Serialize the in-memory Cue–Tag–Content reconstructive graph to a JSON sidecar next to the storage file (-reconstructive.json). The CTC graph is process-local; save before shutdown to survive restarts.
Inputs: no named parameters.
save_searchC
Save a search query for later reuse
Inputs: name (required), query (required), tags, description, +2 more.
score_salienceA
Calculate 5-component relevance score for an entity: baseImportance, recencyBoost, frequencyBoost, contextRelevance, noveltyBoost. Use with format_with_salience_budget to score then format.
Inputs: entityName (required), queryText, sessionId, taskDescription.
search_autoB
Automatically select and execute the best search method based on query characteristics and graph size. Returns results along with the selected method and reasoning.
Inputs: query (required), limit.
search_by_date_rangeB
Search entities within a date range, with optional filtering by entity type and tags. At least one of startDate or endDate should be provided.
Inputs: tags, endDate, startDate, entityType.
search_by_timeB
Search entities using a natural language time expression (e.g. "last week", "yesterday", "in January")
Inputs: query (required), field, includeUndated.
search_cross_agentA
Search across agent memories with trust-weighted scoring and visibility filtering
Inputs: query (required), requestingAgentId (required), agentIds.
search_nodesC
Search for nodes in the knowledge graph based on query string, with optional tag and importance filtering
Inputs: query (required), tags, maxImportance, minImportance.
search_nodes_rankedC
Perform TF-IDF ranked search
Inputs: query (required), tags, limit, maxImportance, +1 more.
semantic_searchC
Search for entities using semantic similarity. Requires embedding provider to be configured via MEMORY_EMBEDDING_PROVIDER.
Inputs: query (required), limit, minSimilarity.
session_checkpointA
Create a checkpoint snapshot of the current session state for later restore
Inputs: sessionId (required), name.
session_endA
End an agent session via AgentMemoryManager with summary generation and working memory promotion. Unlike end_session (which handles failure distillation on graph entities), this manages the full agent session lifecycle.
Inputs: sessionId (required), status.
session_restoreC
Restore a session from a previously created checkpoint
Inputs: checkpointId (required).
session_startA
Start a new agent session via AgentMemoryManager. Tracks session lifecycle, enables working memory, and supports session chaining. Returns a SessionEntity with id and timestamps.
Inputs: metadata, parentSessionId, taskDescription.
set_agent_roleB
Apply a built-in role profile (researcher, planner, executor, reviewer, coordinator) to adjust salience weights and context budgets
Inputs: role (required).
set_entity_parentB
Set the parent of an entity for hierarchical organization
Inputs: entityName (required), parentName (required).
set_governance_policyA
Set the active governance policy controlling which write operations (create, update, delete) are permitted for future requests
Inputs: canCreate, canDelete, canUpdate.
set_importanceC
Set the importance score of an entity (0-10)
Inputs: entityName (required), importance (required).
set_memory_visibilityA
Set the visibility of a memory entity for multi-agent access control. Auto-promotes plain entities to AgentEntity (stamps agentId/memoryType/etc.) instead of failing silently. Supports η.5.5.b extensions: allowedRoles (role gate), visibleFrom/visibleUntil (time-window gate).
Inputs: agentId (required), memoryName (required), visibility (required), visibleFrom, +2 more.
set_project_scopeA
Set the active project scope for this server session. New entities passed without an explicit projectId may be auto-stamped with this value by scope-aware handlers; pass an empty string to clear the scope. Returns { projectId } where projectId is the new active scope (null when cleared).
Inputs: projectId (required).
smart_searchC
Intelligent search with automatic query planning and reflection-based refinement. Iteratively improves results until adequate.
Inputs: query (required), limit, includePlan, maxIterations, +1 more.
spell_rebuild_vocabularyA
v2.1.0 — Force a rebuild of the SpellChecker vocabulary + n-gram index. Call after bulk entity churn; the lazy cache is otherwise correct for low-churn graphs.
Inputs: no named parameters.
spell_suggestA
v2.1.0 — Suggest close matches for a (potentially misspelled) query over the vocabulary of entity names + tag values. Two-stage: bigram-Jaccard pre-filter (NGramIndex) + Levenshtein re-rank.
Inputs: query (required), limit, minScore, maxDistance.
spell_vocabulary_sizeA
v2.1.0 — Return the count of unique terms in the SpellChecker vocabulary (entity names + tag values by default). Mostly diagnostic.
Inputs: no named parameters.
split_transcriptB
Split concatenated multi-session transcripts into per-session chunks via delimiter detection. Preprocessing step before ingest.
Inputs: text (required).
start_consolidationB
Start the background consolidation scheduler that periodically deduplicates and merges memories
Inputs: intervalMs, autoMergeDuplicates.
stop_consolidationA
Stop the background consolidation scheduler
Inputs: no named parameters.
suggest_toolA
v2.1.0 — Suggest tools matching a task hint, ranked by successRate × recency factor (1.0 at ≤1d, linearly decays to 0.1 at ≥30d).
Inputs: taskHint (required), limit, minScore.
summarize_entityA
Auto-summarize redundant observations within a single entity. Unlike compress_graph (which merges similar entities), this condenses observations within one entity.
Inputs: entityName (required), threshold.
supersede_decisionA
v2.1.0 — Mark an accepted decision as superseded by another. illegal-transition when target is not accepted. not-found when target or replacement is missing.
Inputs: by (required), id (required).
synthesize_collaborative_contextA
Synthesize context by traversing the graph neighbourhood from a seed entity and merging high-salience neighbors across agents
Inputs: seedEntityName (required), maxDepth, queryText, currentTask, +2 more.
timelineB
Get chronological relation history for an entity. Returns ALL relations (current and expired) sorted by validFrom ascending. Shows the full story of an entity over time.
Inputs: entityName (required), direction.
tool_observer_in_flight_countA
v2.1.0 — Diagnostic: number of in-flight (started but not yet completed) tool-call observations.
Inputs: no named parameters.
update_entityB
η.5.5.c — Update an entity with optional optimistic concurrency control. Pass expectedVersion to assert the live entity is at that version; throws VersionConflictError on mismatch. Omit for legacy last-write-wins. OCC-guarded writes auto-increment version.
Inputs: name (required), updates (required), expectedVersion.
update_profileA
Add a fact to the user profile. Static facts are long-lived (preferences, role, tools). Dynamic facts are recent (current project, active work).
Inputs: type (required), content (required), projectId.
update_saved_searchC
Update a saved search
Inputs: name (required), updates (required).
upsert_project_contextB
v2.1.0 — Merge structured project knowledge into the ProjectContextRecord for projectId. Array fields (facts/conventions/commands/glossary) append + dedup; scalars overwrite. One record per projectId.
Inputs: projectId (required), facts, commands, glossary, +1 more.
validate_fact_against_worldB
3B.7 — Validate a candidate observation against a target entity. Delegates to MemoryValidator.validateConsistency. Returns null if no validator is wired.
Inputs: entityName (required), observation (required).
validate_graphB
Validate the knowledge graph for integrity issues
Inputs: no named parameters.
visualize_graphA
Generate a self-contained interactive HTML page with a D3.js force-directed graph visualization. Nodes are colored by type and sized by importance.
Inputs: title, maxEntities.
wake_upA
Initialize a 4-layer memory stack context (~600 tokens). L0 loads profile identity, L1 loads top entities by importance. Returns a compact boot context for LLM consumption.
Inputs: compress.
who_did_whatA
Convenience join answering "who did what (to target / in context / within time range)?" over recorded events. Returns actor + action + event tuples; events without a resolvable actor are omitted.
Inputs: limit, target, context, timeRange.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 241 tools
With 241 tools, many serve overlapping or very similar purposes (e.g., 10+ search methods, multiple consolidation/decay/dream tools). While individual descriptions are detailed, the sheer volume makes it difficult for an agent to reliably select the correct tool without deep study.
The vast majority of tools follow a consistent verb_noun (snake_case) pattern. However, a few outliers like 'health', 'diag', 'reindex', and 'cache_stats' break this pattern, slightly reducing consistency.
241 tools is far beyond what is reasonable for an MCP server. Even for a complex knowledge graph system, this overwhelming number forces agents to navigate an excessively large tool surface, causing confusion and inefficiency.
The tool set is extraordinarily comprehensive, covering CRUD for entities, relations, and observations; multiple search paradigms; graph analysis; temporal queries; RBAC; decisions; procedures; causal reasoning; events; reflections; and more. No obvious gaps in the intended functionality.
Maintenance
Related MCP Connectors
Persistent memory, knowledge graph, task management and more for AI agents via MCP.
Personal knowledge graph as an AI memory layer over MCP - read, save, and link your memories.
Cloud-hosted MCP server for durable AI memory
Persistent, portable memory for AI assistants — your private memory graph, from any MCP client.
Related MCP Servers
- AlicenseBqualityDmaintenanceA customized MCP memory server that enables creation and management of a knowledge graph with features like custom memory paths and timestamping for capturing interactions via language models.104MIT
- AlicenseNot gradedqualityBmaintenanceOpen-source MCP memory server providing persistent, cross-platform context for AI tools via a knowledge graph with encrypted storage.2 npm13AGPL 3.0
- AlicenseAqualityCmaintenanceEnhanced MCP knowledge graph memory server with cloud persistence and semantic search, acting as a drop-in replacement for the standard memory server.10207 npmMIT
- AlicenseNot gradedqualityCmaintenanceA universal MCP server providing persistent, structured memory through a knowledge graph with graph storage, semantic vector search, and multi-hop traversal for AI agents and IDEs.18 PyPI1MIT