Skip to main content
Glama

mcp-memory

A standalone MCP (Model Context Protocol) memory server with persistent storage, vector recall, and 3-way fuse retrieval.

Features

  • Memory CRUD — Write, read, search, update, and delete memories with categories and tags

  • Vector recall — Semantic similarity search using any OpenAI-compatible embedding API

  • BM25 search — Full-text keyword search with CJK bigram tokenization

  • 3-way fuse retrieval — Combines BM25 + semantic vectors + tag graph via Reciprocal Rank Fusion (RRF) for the best results

  • Binary vector storage — Compact append-only format (~1/4 the size of JSON), with lazy compaction

  • Usage-based boosting — Frequently accessed memories rank slightly higher, with cold-start protection

  • Atomic writes — Write-to-temp-then-rename prevents data corruption on crashes

Related MCP server: MCP Server + Document Memory System

Quick Start

npm install
npm start

Or configure it in your Claude Desktop / Claude Code MCP settings:

{
  "mcpServers": {
    "memory": {
      "command": "node",
      "args": ["/path/to/mcp-memory/src/index.js"],
      "env": {
        "MCP_MEMORY_DIR": "/path/to/your/data",
        "EMBEDDING_API_URL": "https://api.openai.com/v1",
        "EMBEDDING_API_KEY": "sk-...",
        "EMBEDDING_MODEL": "text-embedding-3-small"
      }
    }
  }
}

Environment Variables

Variable

Description

Default

MCP_MEMORY_DIR

Directory for memory data files

./data

EMBEDDING_API_URL

OpenAI-compatible embedding API base URL

(none — semantic search disabled)

EMBEDDING_API_KEY

API key for the embedding service

(none)

EMBEDDING_MODEL

Embedding model name

(none)

SIMILARITY_THRESHOLD

Minimum cosine similarity to return results

0.45

Semantic search (recall with op:similar or op:fuse) requires an embedding API. Without it, you can still use keyword search and date-based recall.

MCP Tools

Memory CRUD

  • write_memory — Write a new memory with optional category and tags. After writing, surfaces related older memories.

  • read_memories — Paginated reading (newest first), filterable by category or tag.

  • search_memories — Exact substring keyword search.

  • update_memory — Update content, tags, or category of an existing memory.

  • delete_memory — Delete a memory by ID.

  • get_stats — Memory count by category and vector index status.

Recall (Multi-mode Retrieval)

The recall tool supports four modes via the op parameter:

  • day — Fetch memories by date or date range

  • timemachine — See what happened N days/months/years ago

  • similar — Semantic vector search (finds related memories even with different wording)

  • fuse — ★ Best mode. 3-way fusion search combining:

    • Lexical (BM25) — Exact term matching with TF-IDF weighting

    • Semantic (vector) — Cosine similarity via embedding vectors

    • Graph (tag) — Shared-tag neighborhood expansion

    Results are merged using Reciprocal Rank Fusion (RRF), which combines rankings without needing to normalize scores across different methods.

How Fuse Search Works

Query: "that time we fixed the server crash"

    BM25 (lexical)          Vector (semantic)        Tag Graph
    ┌──────────────┐       ┌──────────────┐       ┌──────────────┐
    │ #1 server log│       │ #1 prod outage│      │ #1 deploy note│
    │ #2 crash fix │       │ #2 crash fix  │      │ #2 server cfg │
    │ #3 ...       │       │ #3 ...        │      │ #3 ...        │
    └──────┬───────┘       └──────┬────────┘      └──────┬────────┘
           │                      │                       │ (×0.5)
           └──────────────────────┴───────────────────────┘
                                  │
                          RRF Fusion (k=60)
                                  │
                    ┌─────────────┴─────────────┐
                    │  #1 crash fix [lex#2·sem#2]│
                    │  #2 prod outage [sem#1]    │
                    │  #3 server log [lex#1]     │
                    └───────────────────────────┘

Each result is annotated with which retrieval paths found it and their ranks, so you can judge confidence.

Data Storage

All data is stored as JSON files in the data directory:

  • memories.json — Memory entries

  • mem-vec-index.json — Vector index metadata (slot mappings)

  • mem-vec.bin — Binary vector data (Float32, append-only)

  • mem-hits.json — Access frequency tracking

License

MIT

Available Tools

7 tools
delete_memoryC

Delete a memory by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesMemory ID

TDQS

C2.7/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavioral traits. It makes no statement about whether deletion is permanent, irreversible, whether it returns a success/failure indicator, what happens for non-existent IDs, or any side effects. For a destructive operation, this is a severe gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Although the single sentence is short, this is under-specification rather than conciseness. The description omits critical behavioral context, making it more of a truncated placeholder. A concise definition should pack essential information into few words, not drop essential information entirely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a delete tool with no annotations and no output schema, the description is incomplete. An agent needs to know if deletion is irreversible, if there is a confirmation step, error handling for missing IDs, and what the return value is. None of this is provided, leaving the agent unable to predict consequences.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% because the single 'id' parameter already has a description ('Memory ID'). The tool description's 'by ID' merely restates that same semantic without adding format, constraint, or contextual information beyond the schema. Per the rubric, baseline 3 applies since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Delete'), clearly names the resource ('memory'), and identifies the required identifier ('by ID'). This unambiguously distinguishes it from sibling operations like write_memory, read_memories, search_memories, and update_memory, even without reading their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives, when not to use it, or any exclusions. It does not mention prerequisites like first searching for the memory ID, nor does it state that this is the only way to permanently remove a memory. The agent must infer usage solely from the name and verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_statsB

Get memory statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavior. It only says 'Get memory statistics', which implies a read operation, but does not state whether any authentication is required, whether results are cached, or what the output format is. This is minimal disclosure for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no extraneous words. It is front-loaded with the verb and object, and it is appropriately sized for a tool with no parameters. Every word earns its place, and nothing could be removed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is incomplete for a tool with no output schema and no annotations. It does not specify what statistics are returned (e.g., count, size, last access times) or provide any context for when to use it. Given the tool's simplicity, it should at least mention the kind of statistics or offer a hint about its purpose relative to the memory system.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema is empty and the baseline is 4. The description adds no parameter-specific information, which is acceptable since there are none to document. It does not need to compensate for schema gaps because there are no gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear action 'Get' and a specific resource 'memory statistics', which distinguishes it from sibling tools that write, read, search, update, delete, or recall memories. However, it does not elaborate on what the statistics encompass, so it is clear but not fully detailed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention that this is for overall memory metrics rather than individual memory content, nor does it suggest any specific scenario or prerequisite. The description leaves selection entirely to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_memoriesA

Read memories with pagination (newest first). Use search_memories for keyword lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagNoFilter by tag
pageNoPage number (default 1)
limitNoItems per page (default 8, max 20)
categoryNoFilter by category

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Although no annotations are provided, the description’s verb 'Read' makes the non-destructive nature clear, and it discloses pagination and newest-first ordering. It does not mention error handling or rate limits, but for a read operation these are minor gaps; the description adds meaningful behavioral context beyond the bare tool name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no waste. The primary purpose and ordering are stated first, followed by the routing alternative. Every word serves a purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no output schema, the description is mostly complete. It states what is read and the ordering, but does not specify what the returned memory objects contain. Given the tool’s low complexity and clear purpose, this is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already fully documented in the input schema. The description only adds the pagination context, which aligns with page and limit, but does not explain the filtering semantics of tag/category or how they combine. This meets the baseline for high schema coverage without adding much extra.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads memories with pagination and newest-first ordering, and it explicitly distinguishes itself from search_memories by directing keyword lookups to that sibling. This gives an agent a precise understanding of what the tool does and how it differs from a close alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a direct usage rule: use read_memories for general paginated reading, and use search_memories when keyword lookup is needed. This explicit routing makes it easy for an agent to choose between the two most similar tools without ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recallA

Multi-mode memory retrieval. • day: Fetch memories by date (date or from+to, YYYY-MM-DD) • timemachine: See what happened N days/months/years ago today • similar: Semantic recall — find related memories even with different wording (requires embedding API) • fuse: ★ 3-way fusion (BM25 + semantic + tag graph → RRF). Best for finding specific things.

ParametersJSON Schema
NameRequiredDescriptionDefault
opYes
toNo
dateNo
fromNo
textNo
limitNo
daysAgoNo
yearsAgoNo
monthsAgoNo

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It discloses a meaningful dependency ('requires embedding API') and explains the fusion mechanism (BM25 + semantic + tag graph → RRF), which adds context beyond the schema. However, it does not mention output shape, pagination, error behavior, or any side effects/read-only guarantees, leaving gaps for an agent to discover at runtime.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and scannable, front-loading the tool's purpose in one line and then using a tight bullet list for each mode. Every line adds useful information with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex multi-mode tool with 9 parameters, no annotations, and no output schema. The description gives helpful mode summaries and key dependency warnings, but does not fully specify required parameters per mode (e.g., what 'similar' and 'fuse' require), limit behavior, or return value expectations. An agent can likely call it, but some trial and error is still needed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate; it does explain several parameter families (date/from/to, daysAgo/monthsAgo/yearsAgo, semantic similarity) in relation to modes. However, it does not describe 'limit', 'text' explicitly, or how parameters combine for the 'fuse' mode, so parameter semantics remain incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs 'multi-mode memory retrieval' and enumerates four distinct retrieval modes with specific meanings. It identifies the resource (memories) and the operation (retrieve/fetch/find), making the purpose clear. It does not explicitly contrast itself with sibling tools like search_memories, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives per-mode usage guidance: day uses date or from+to, timemachine uses relative time, similar requires an embedding API, and fuse is described as best for finding specific things. It provides a clear context for choosing among modes, though it does not address when to use recall versus sibling tools such as search_memories or read_memories.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_memoriesA

Search memories by keyword (exact substring match). For semantic search, use recall with op:similar or op:fuse.

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesSearch keyword
categoryNoLimit to category

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden and it makes a meaningful disclosure: searches are exact substring matches, which prevents the agent from assuming semantic or fuzzy behavior. It also signals that semantic variants belong to recall. It doesn't mention case sensitivity, ordering, or pagination, but those are secondary for a simple search tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The primary matching behavior is front-loaded, and the alternative is given only after the core purpose is clear. Every phrase contributes to selection or invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity tool with one required parameter, the description plus schema is sufficient to invoke it correctly and to avoid the main confusion with recall. It does omit the return shape and any result-limiting behavior, but those are not critical for basic use given the simple signature.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both parameters are already documented in the schema. The description adds value mainly by clarifying that `keyword` is matched as an exact substring, but it doesn't elaborate on `category` beyond the schema's 'Limit to category.' This meets the baseline without going beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Search memories') and immediately qualifies the core behavior as an 'exact substring match.' This distinguishes it from the semantic recall sibling without requiring the agent to inspect either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence explicitly states when not to use this tool: 'For semantic search, use recall with op:similar or op:fuse.' This gives the agent a clear routing rule and names the exact alternative operations, leaving no ambiguity about which tool handles fuzzy/semantic queries.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_memoryC

Update an existing memory by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesMemory ID
tagsNoNew tags
contentNoNew content
categoryNoNew category

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden of behavioral disclosure. It reveals that the operation is a mutation of an existing memory, but it does not explain whether omitted fields are left untouched or cleared, whether the memory must exist, what error behavior occurs, or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single front-loaded sentence with no filler. Every word contributes to identifying the action, target, and required identifier.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has multiple optional fields and sibling write operations, yet the description omits partial-update semantics, error behavior, and return value details. With no annotations and no output schema, this level of context is insufficient for an agent to call the tool confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already describes all four parameters (id, tags, content, category) with 100% coverage, so the baseline is 3. The description adds no additional semantic detail beyond the schema, which is acceptable but not additive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific action ('Update'), a resource ('an existing memory'), and the key selector ('by ID'). It is clear on its own, but it does not explicitly distinguish itself from the sibling tool write_memory, so the differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use update_memory versus write_memory, read_memories, search_memories, or recall. The description implies this tool is for modifying an existing memory, but it does not state exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_memoryB

Write a new memory. Choose a category that fits the content.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for organization
contentYesThe memory content
categoryNoCategory (default: general)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must disclose behavioral traits. It only states that it writes a memory, but does not mention side effects, return values, error behavior, or requirements. There is no indication of whether it overwrites existing memories or what happens on success, which is a significant gap for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that avoids verbosity. However, it is so brief that it sacrifices substantive content. It earns points for efficiency but could be structured better by front-loading critical behavioral information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with three parameters and no output schema, the description lacks essential context: no mention of what the tool returns, no indication of when to use it vs. update_memory, and no behavioral details. Given no annotations, this is incomplete and leaves the agent guessing about the tool's full effect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds a small hint about category selection ('Choose a category that fits the content') but does not introduce new semantics beyond the schema. It meets the baseline for a well-covered schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Write a new memory' which clearly identifies the verb (write/create) and resource (memory). It is distinct from siblings like read_memories, update_memory, and delete_memory, leaving no ambiguity about what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. It does not mention that this is for creating new memories, while update_memory handles modifications, or that search_memories is for retrieval. The phrase 'Choose a category' is about parameter selection, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv1.0.0
    • First observeddelete_memory
    • First observedget_stats
    • First observedread_memories
    • First observedrecall
    • First observedsearch_memories
    • First observedupdate_memory
    • First observedwrite_memory

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

The core CRUD tools (write/read/update/delete) are clearly distinct. However, search_memories and recall overlap in retrieval, though recall's modes (similar/fuse) are semantically distinct from exact substring matching, so boundaries are mostly clear.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (write_memory, read_memories, search_memories, update_memory, delete_memory, get_stats). 'recall' is a single verb but fits the action-oriented style without breaking consistency.

Tool Count5/5

Seven tools is well-scoped for a memory management server, covering all essential operations without redundancy or bloat. Each tool serves a clear purpose and earns its place.

Completeness5/5

The set provides full CRUD lifecycle (create, read, update, delete), plus dedicated search and statistical functions. The multi-mode recall covers advanced retrieval needs, leaving no obvious gaps in the memory domain.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.
    14
    -
  • F
    license
    B
    quality
    D
    maintenance
    Enables persistent memory for AI systems by providing tools for episodic, semantic, and procedural data storage through a vector-and-graph-enhanced database. It allows models to maintain long-term continuity using similarity search, thematic clustering, and identity tracking.
    24
    1
    -
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent long-term memory for AI agents through semantic search and automated knowledge graph extraction. It enables agents to store, recall, and reason over facts, preferences, and relationships across multiple conversations and sessions.
    14
    14 npm
    MIT