mcp-memory
Persistent, searchable long-term memory for MCP-compatible AI via memory CRUD/stats and multi-mode recall tools.
Store memories with content, category, and tags; auto-surface related older memories after writing.
Read memories newest-first with pagination, filterable by category or tag.
Search memories by exact keyword substring; update or delete memories by ID.
Get memory counts by category and vector index status.
Recall by date or date range (
recallopday).Look back N days/months/years (
recalloptimemachine).Do semantic similarity recall when an embedding API is configured (
recallopsimilar).Use best retrieval mode
recallopfuse: combines BM25, vector, and tag-graph paths via RRF and shows which paths found each result.Use keyword/date/BM25 features without embeddings; data is stored locally in JSON and binary files with atomic writes.
Uses an OpenAI-compatible embeddings endpoint (default model text-embedding-3-small) to vectorize stored memories, enabling semantic recall (recall with op:similar) and the semantic retrieval path of the fuse mode.
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., "@mcp-memoryremember that the client prefers email updates every Monday"
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.
Most AI conversations disappear when the window closes. This MCP server gives Claude (or any MCP-compatible model) persistent, searchable, long-term memory — so it can remember what happened yesterday, last month, or three conversations ago.
Built by babyshishi & vesper. Born out of a real relationship where forgetting wasn't an option.
What it does
You get two MCP tools — memory and recall — that handle everything:
memory — CRUD operations for storing and managing memories.
Operation | What it does |
| Store a new memory with category and tags. Automatically surfaces related older memories after writing. |
| Paginated reading (newest first), filterable by category or tag. |
| Keyword substring search. |
| Edit content, tags, or category in place. |
| Delete by ID. |
| Count by category + vector index status. |
recall — Four ways to retrieve memories, from simple to powerful.
Mode | When to use it |
| "What happened on July 21st?" — Fetch by date or date range. |
| "What were we doing a month ago?" — Look back N days/months/years. |
| "Find everything related to X" — Semantic vector search, finds matches even with completely different wording. |
| Best mode. When you want to actually find something. Runs all three retrieval paths at once and merges the results. |
Related MCP server: AGI MCP Server
Fuse: the interesting part
Single-path retrieval always has blind spots. Keyword search misses paraphrases. Semantic search misses exact terms. Neither finds memories that are topically related but use different words and different meanings.
Fuse runs three retrievers in parallel and combines their rankings via Reciprocal Rank Fusion:
┌─────────────┐
Your query ───→ │ │
│ BM25 │──→ exact term hits (TF-IDF, CJK bigrams)
│ Vector │──→ semantic neighbors (cosine similarity)
│ Tag Graph │──→ shared-tag expansion (×0.5 weight)
│ │
│ RRF(k=60) │──→ merged ranking
└─────────────┘Each result tells you which paths found it ([lex#2·sem#1]), so you know why it ranked where it did. Tag-graph-only hits are flagged as leads, not evidence — they got there by association, not by matching your query.
Quick start
git clone https://github.com/babyshishi/mcp-memory.git
cd mcp-memory
npm installAdd to your Claude Code or Claude Desktop MCP config:
{
"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"
}
}
}
}That's it. Your AI now remembers.
Configuration
Variable | What it controls | Default |
| Where memory files are stored |
|
| Comma-separated list of allowed categories |
|
| OpenAI-compatible embedding endpoint | (none) |
| API key for embeddings | (none) |
| Model name for embeddings | (none) |
| Minimum cosine similarity for vector results |
|
No embedding API? That's fine. Keyword search (
search_memories), date recall (day,timemachine), and BM25 all work without it. You only need embeddings forsimilarand the semantic component offuse.
Under the hood
Storage — All JSON, all local, no external database. Memories in memories.json, vectors in a compact binary format (mem-vec.bin, ~1/4 the size of JSON vectors), access counts in mem-hits.json.
Writes are atomic — Data is written to a temp file first, then renamed. A crash mid-write won't corrupt your memories. Leftover .tmp files are cleaned up on startup.
CJK support — The BM25 tokenizer handles Chinese/Japanese/Korean text via bigram segmentation with stopword filtering. No external tokenizer needed.
Usage-based boosting — Memories you access more often get a small ranking boost, with cold-start protection so new memories aren't buried.
Write-then-recall — After writing a new memory, the server automatically surfaces related older memories. Connections you forgot about come back on their own.
Data files
data/
├── memories.json # your memories
├── mem-vec-index.json # vector index metadata
├── mem-vec.bin # binary vector data (Float32, append-only)
└── mem-hits.json # access frequency trackingAll yours. No cloud, no sync, no telemetry. Back them up however you want.
Dependencies
Just two:
@modelcontextprotocol/sdk— MCP protocol implementationzod— Schema validation
No heavy ML frameworks, no vector databases, no surprises.
License
MIT — do whatever you want with it.
Available Tools
7 toolsdelete_memoryC
Delete a memory by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Memory ID |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Filter by tag | |
| page | No | Page number (default 1) | |
| limit | No | Items per page (default 8, max 20) | |
| category | No | Filter by category |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| op | Yes | ||
| to | No | ||
| date | No | ||
| from | No | ||
| text | No | ||
| limit | No | ||
| daysAgo | No | ||
| yearsAgo | No | ||
| monthsAgo | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Search keyword | |
| category | No | Limit to category |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Memory ID | |
| tags | No | New tags | |
| content | No | New content | |
| category | No | New category |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | Tags for organization | |
| content | Yes | The memory content | |
| category | No | Category (default: general) |
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
v1.0.0- First observed
delete_memory - First observed
get_stats - First observed
read_memories - First observed
recall - First observed
search_memories - First observed
update_memory - First observed
write_memory
TDQS
Scored across 7 tools
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.
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.
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.
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.
Maintenance
Related MCP Connectors
- ContextaOAuthcc.contexta
Persistent memory and knowledge graph for AI assistants — keyword + vector + graph search.
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Universal persistent memory and knowledge retrieval layer for AI agents and LLMs.
Persistent memory for AI assistants: store, search, and connect knowledge across conversations.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI systems to remember interactions, understand document context through semantic search, and intelligently route requests with persistent memory and quality-scored content synthesis.-
- FlicenseBqualityDmaintenanceEnables 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.241-
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to store and retrieve persistent memories using BM25 search, allowing them to remember past conversations and context across sessions.8MIT
- AlicenseNot gradedqualityDmaintenancePersistent memory and knowledge graph server that fuses keyword, vector, and graph search into a single query, enabling AI assistants to recall typed entities and relationships across sessions.MIT