Skip to main content
Glama

memory-mcp

npm version npm downloads License: MIT Node TypeScript

Persistent memory + automatic git snapshots for Claude Code. Never lose context. Never lose code.

🧠 45 memories | šŸ“Š 2.8K tokens | šŸ“ø 23 snapshots | ā±ļø 5m ago

Why memory-mcp?

Problem

Solution

Re-explaining your project every session

Auto-captures decisions, patterns, architecture

Context window fills up, knowledge lost

Two-tier memory: CLAUDE.md (instant) + deep search

Broke something, can't remember what worked

Git snapshots on every save, instant rollback

No idea what Claude "knows" about your project

Visual dashboard shows all context

Worried about cloud storage

100% local files, your git repo

Related MCP server: Axme-code

What makes it different

  • Git Snapshots — Every memory save commits your entire project. Roll back anytime.

  • Two-Tier Memory — CLAUDE.md loads instantly, deep store searchable mid-conversation.

  • LLM-Powered — Haiku extracts what matters, consolidates duplicates, prunes stale info.

  • Visual Dashboard — See your context: tokens, memories by type, snapshot history.

  • Zero friction — No commands to run. It just works silently.

Quick Start

# Install globally
npm install -g claude-code-memory

# Interactive setup (API key + hooks)
memory-mcp setup

# Initialize a project
memory-mcp init ~/Projects/my-app

That's it. Start coding. Memories accumulate automatically.

How It Works

graph TB
    subgraph "Phase 1: Silent Capture"
        A[Claude Code Session] -->|User sends message| B[Claude responds]
        B -->|Hook fires: Stop/PreCompact/SessionEnd| C[extractor.js]
        C --> D[Read transcript from cursor]
        D --> E[Chunk if >6000 chars]
        E --> F[Send to Haiku LLM]
        F -->|Extract memories as JSON| G[Dedup via Jaccard similarity]
        G --> H[Save to .memory/state.json]
        H --> I[Decay confidence scores]
        I --> J{Consolidation needed?}
        J -->|>80 memories or every 10 extractions| K[Haiku merges/drops]
        J -->|No| L[Sync CLAUDE.md]
        K --> L
    end

    subgraph "Phase 2: Recovery"
        M[New session starts] -->|Built-in behavior| N[Claude reads CLAUDE.md]
        N --> O[Claude has full project context]
    end

    subgraph "Phase 3: Deep Recall"
        O --> P{Need specific context?}
        P -->|memory_search| Q[Keyword search across memories]
        P -->|memory_ask| R[Haiku synthesizes answer from top 30 matches]
        P -->|memory_related| S[Tag-based retrieval]
    end

    subgraph "Data Store"
        H -.-> T[(.memory/state.json<br/>Full memory store)]
        L -.-> U[(CLAUDE.md<br/>~150 line summary)]
        T -.->|MCP tools read| Q
        T -.->|MCP tools read| R
        T -.->|MCP tools read| S
    end

    style A fill:#4a9eff,color:#fff
    style F fill:#ff6b6b,color:#fff
    style K fill:#ff6b6b,color:#fff
    style R fill:#ff6b6b,color:#fff
    style T fill:#ffd93d,color:#000
    style U fill:#6bcb77,color:#000

Two-tier memory architecture:

Layer

Purpose

Size

CLAUDE.md

Auto-read on session start. Top ~150 lines of the most important context.

Compact

.memory/state.json

Full memory store. Searchable via MCP tools mid-conversation.

Unlimited

Silent capture via hooks:

Claude Code hooks fire after every response (Stop), before context compaction (PreCompact), and at session end (SessionEnd). A fast LLM (Haiku) reads the transcript and extracts:

  • Architecture — how the system is structured

  • Decisions — why X was chosen over Y

  • Patterns — conventions and how things are done

  • Gotchas — non-obvious pitfalls

  • Progress — what's done, what's in flight

  • Context — business context, deadlines, preferences

Smart memory management:

  • Jaccard similarity deduplication (no duplicate memories)

  • Confidence decay (progress fades after 7 days, context after 30)

  • LLM-powered consolidation (merges overlapping memories, prunes stale ones)

  • Line-budgeted CLAUDE.md (stays under ~150 lines, most important first)

Updating

To update an existing installation:

npm install -g claude-code-memory --force

To update hooks (e.g., after a bug fix):

memory-mcp setup

Requirements

  • Claude Code CLI

  • Node.js 18+

  • Anthropic API key (for the Haiku-based extractor, ~$0.001 per extraction)

CLI Commands

memory-mcp setup              Interactive first-time setup
memory-mcp init [dir]          Initialize memory for a project
memory-mcp status [dir]        Show memory status and health
memory-mcp statusline [dir]    Compact one-line status (great for shell prompts)
memory-mcp context [dir]       Show context metrics and token usage
memory-mcp context --html      Generate visual HTML dashboard
memory-mcp search <query>      Search memories by keyword
memory-mcp ask <question>      Ask a question, get answer from memory
memory-mcp consolidate [dir]   Merge duplicates, prune stale memories
memory-mcp key [api-key]       Set or check Anthropic API key
memory-mcp snapshots [dir]     List git snapshot history
memory-mcp snapshot-enable     Enable automatic git snapshots
memory-mcp snapshot-disable    Disable git snapshots
memory-mcp help                Show help

Context Dashboard

Visualize your memory usage with memory-mcp context:

Context Dashboard

  Project: my-app

  Total Context
  2.8K estimated tokens

  Tier 1 CLAUDE.md (auto-loaded)
  ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ 1.0K
  45 lines, 44 in memory block

  Tier 2 .memory/state.json (searchable)
  ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆ 1.8K
  29 active, 5 archived, 24 superseded

  Memories by Type
  architecture ā–ˆā–ˆā–ˆā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘   8 memories (291 tokens)
  decision     ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘  18 memories (540 tokens)
  gotcha       ā–ˆā–ˆā–ˆā–ˆā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘  10 memories (332 tokens)
  progress     ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘ā–‘  19 memories (538 tokens)

  Git Snapshots
  ā— Enabled on __memory-snapshots
  42 commits → origin

Use memory-mcp context --html to generate an interactive browser dashboard.

Git Snapshots

Automatic project versioning tied to your working sessions. Every memory extraction commits your entire project to a hidden branch.

# Enable during init (you'll be prompted)
memory-mcp init ~/Projects/my-app

# Or enable later
memory-mcp snapshot-enable

# View snapshot history
memory-mcp snapshots

# Compare two snapshots
memory-mcp snapshot-diff abc123 def456

# Restore to a previous state
memory-mcp snapshot-restore abc123

# Disable (preserves existing snapshots)
memory-mcp snapshot-disable

How it works:

  • Commits go to __memory-snapshots branch (invisible in normal workflow)

  • Optional push to remote (e.g., origin)

  • Commit messages include what memories were extracted

  • Full project state captured, not just memory files

Use cases:

  • Roll back after breaking changes

  • See what your project looked like during a specific session

  • Track project evolution alongside context evolution

MCP Tools (used by Claude mid-conversation)

When configured as an MCP server, Claude can access these tools during a session:

Tool

Description

memory_search

Keyword search across all memories

memory_related

Get memories by tag or area

memory_ask

Ask a question, get an LLM-synthesized answer from memory

memory_save

Manually save a memory

memory_recall

List all memories with filters

memory_delete

Remove a memory

memory_consolidate

Trigger memory consolidation

memory_consciousness

Generate the full consciousness document

memory_stats

Show memory statistics

memory_init

Set project name and description

What Gets Stored

Memories are categorized into six types:

architecture   "Next.js 14 app router with Supabase backend, Stripe for billing"
decision       "Chose server components for public pages because of SEO requirements"
pattern        "All API routes validate input with zod and return NextResponse"
gotcha         "Supabase RLS policy on word_lists requires user_id OR org_id, not both"
progress       "Auth complete, billing webhook handling in progress"
context        "Client wants launch by March, focus on core features only"

File Structure

After initialization, your project gets:

your-project/
ā”œā”€ā”€ CLAUDE.md              ← auto-updated memory summary (read on session start)
ā”œā”€ā”€ .memory/
│   ā”œā”€ā”€ state.json         ← full memory store
│   └── cursor.json        ← tracks what's been processed
ā”œā”€ā”€ .mcp.json              ← MCP server configuration
└── .claude/
    └── settings.json      ← hook configuration

CLAUDE.md Format

The memory block is inserted between markers, preserving any existing CLAUDE.md content:

<!-- MEMORY:START -->
# MyProject
A brief description

_Last updated: 2026-01-27 | 45 active memories, 62 total_

## Architecture
- Next.js 14 app router with Supabase backend
- Auth via NextAuth with Google and email providers

## Key Decisions
- Chose server components for SEO pages
- Using Supabase RLS instead of API-level auth

## Patterns & Conventions
- All API routes use zod validation
- Tailwind only, no CSS modules

## Gotchas & Pitfalls
- RLS policy requires user_id OR org_id, not both

## Current Progress
- Auth: complete
- Billing: in progress

## Context
- Launch target: March

_For deeper context, use memory_search, memory_related, or memory_ask tools._
<!-- MEMORY:END -->

Global vs Per-Project Install

Global (recommended): hooks work for all projects automatically.

memory-mcp setup  # select "global" when prompted

Per-project: hooks and MCP configured per project.

memory-mcp init /path/to/project

Configuration

API key is resolved in order:

  1. ANTHROPIC_API_KEY environment variable

  2. ~/.memory-mcp/config.json

  3. ~/.config/anthropic/api_key

  4. ~/.anthropic/api_key

Cost

The extractor uses Claude Haiku for memory extraction and consolidation. Typical cost:

  • ~$0.001 per extraction (after each Claude response)

  • ~$0.005 per consolidation (every ~10 extractions)

  • A full day of coding: ~$0.05–0.10

License

MIT

Available Tools

10 tools
memory_askA

Ask a question and get an answer synthesized from project memories. Like RAG over your project knowledge.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesQuestion about the project

TDQS

A3.9/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. It clearly indicates a read-only-style query and the synthesizing behavior. It does not mention potential side effects or limitations, but for this tool's simple query nature, the description is adequate.

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 filler. The RAG analogy clarifies the behavior without adding length.

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

Completeness5/5

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

A simple tool with one parameter and no output schema. The description fully conveys purpose, input scope, and output nature, making it complete for its complexity.

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% for the single parameter 'question', and the description adds no extra meaning beyond what the schema already provides. Baseline 3 is appropriate.

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 a specific action: asking a question and receiving a synthesized answer from project memories. It distinguishes itself from sibling tools by emphasizing synthesis rather than raw recall or search.

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

Usage Guidelines3/5

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

The usage context is implied: use when you want a synthesized answer over project knowledge. However, it does not explicitly contrast with siblings like memory_recall or memory_search, which are likely alternatives for direct retrieval.

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

memory_consciousnessA

Generate the full consciousness document. This is what gets written to CLAUDE.md.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose side effects. It says 'gets written to CLAUDE.md', implying a file write, but does not mention whether it overwrites existing content, requires prior memory state, or changes anything else. This is a significant transparency gap for a potentially mutating operation.

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, front-loaded with the main action and a clarifying detail. No wasted words, and the connection to CLAUDE.md adds value without verbose explanation.

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?

The description is sufficient for a zero-parameter tool in terms of basic function, but it lacks guidance on when to run it, what happens to existing CLAUDE.md content, and how this relates to the memory lifecycle (init, save, consolidate). Without annotations or an output schema, it should provide at least a note about side effects.

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 0 parameters, so the schema provides no parameter descriptions. The baseline for tools with no params is 4, and the description adds relevant context about the output destination ('written to CLAUDE.md'), which is useful for understanding the tool's behavior.

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 'Generate' and names the resource 'the full consciousness document', then ties it to a concrete output location ('written to CLAUDE.md'). This clearly distinguishes it from the sibling memory tools, which focus on saving/recalling/searching memory items rather than producing the overall consciousness document.

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 explicit guidance on when to use this tool versus alternatives. The only contextual hint is that it generates the consciousness document that gets written to CLAUDE.md, but it doesn't state prerequisites, ordering, or situations where this is preferred over memory_init or memory_consolidate.

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

memory_consolidateA

Manually trigger memory consolidation. Merges duplicates, removes outdated memories, keeps memory sharp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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. It does disclose that the tool merges duplicates and removes outdated memories, which implies a destructive action. However, it does not warn about permanence, reversibility, or potential data loss, leaving some ambiguity about the consequences.

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, focused sentence that front-loads the primary verb and resource, followed by clarifying actions. There is no fluff or repetition, making it extremely concise and well-structured.

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?

The tool is simple (0 parameters, no output schema), and the description explains what it does. However, it omits what the agent should expect after triggering (e.g., no return value description, no confirmation behavior). Given the lack of annotations and output schema, this is a noticeable gap but not fatal.

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, and the schema coverage is 100% (trivially). The description does not need to explain parameters, and the baseline for 0-parameter tools is 4. It appropriately adds no redundant parameter information.

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's purpose with a specific verb ('trigger') and resource ('memory consolidation'). It further elaborates with concrete actions (merges duplicates, removes outdated memories), which distinguishes it from sibling tools like memory_save or memory_delete.

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

Usage Guidelines3/5

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

The phrase 'Manually trigger' implies that the tool is for on-demand maintenance, but it does not provide explicit guidance on when to use it versus alternatives. No mention of prerequisites or typical use cases, so the usage is only implied, not clearly instructed.

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

memory_deleteB

Delete a specific memory by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesMemory ID to delete

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description bears the full burden of disclosing behavioral traits. It indicates a destructive action ('Delete') but does not mention irreversibility, confirmation requirements, cascading effects, or result feedback. The description adds no extra disclosure beyond the obvious mutation.

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, direct sentence with no fluff. Every word earns its place, and the key information (action and target) is front-loaded.

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?

Given the tool's simplicity (one parameter, straightforward delete operation) and the high schema coverage, the description is sufficiently complete for basic invocation. It lacks behavioral transparency details (e.g., results) but remains adequate for a simple deletion tool.

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 input schema already covers the sole parameter 'id' with a clear description ('Memory ID to delete'), so schema coverage is 100%. The description does not add any further semantic detail beyond what the schema provides, hence the baseline score of 3.

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') and resource ('memory by ID'), clearly distinguishing it from sibling tools like memory_save or memory_search. It is concise and unambiguous.

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, no mention of prerequisites, exclusions, or scenarios where deletion is appropriate or inappropriate. The description simply states the action without contextual usage cues.

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

memory_initA

Initialize project memory with name and description.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProject name
descriptionYesBrief project description

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not mention side effects, idempotency, whether it overwrites existing memory, or any prerequisites. For a mutation tool like this, the lack of such transparency is a significant gap.

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 exactly one sentence, front-loaded with the primary action, and contains no unnecessary words. It is highly concise and to the point.

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?

The tool is simple with only two parameters fully described in the schema, making the description minimally adequate. However, with no output schema and no annotations, the description does not explain return values, idempotency, or the consequences of initialization, leaving it incomplete for a mutation tool.

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% with clear descriptions for both parameters ('Project name' and 'Brief project description'). The description merely repeats the parameter names without adding additional meaning, so it stays at the baseline of 3.

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 the specific verb 'Initialize' with the resource 'project memory' and mentions the key inputs (name and description). This clearly distinguishes it from sibling tools like memory_save or memory_recall, which operate on existing memory.

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

Usage Guidelines3/5

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

The verb 'Initialize' implies that this tool is for setting up new project memory, which suggests when to use it, but the description does not explicitly state when to use it versus alternatives or mention any exclusions. This is implied usage rather than clear guidance.

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

memory_recallA

Recall all active memories, optionally filtered by type or tags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter by tags
typeNoMemory type: decision (why X over Y), pattern (conventions), gotcha (pitfalls), architecture (system structure), progress (what's done/in-flight), context (business context)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It does not define what 'active' means, nor does it mention pagination, ordering, or limits. While 'recall' clearly implies a read operation, the meaning of 'active' is a significant ambiguity.

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, well-structured sentence that leads with the verb and resource. It contains no fluff and communicates the core functionality efficiently.

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?

For a simple filtered-list tool, the description is adequate, but it leaves key context unexplained: the meaning of 'active' and the expected return format (since no output schema exists). The lack of such details reduces completeness.

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 input schema already provides 100% coverage, including detailed enum descriptions for the 'type' parameter. The description simply echoes 'filtered by type or tags' without adding any new meaning or context beyond the 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 clearly states the tool recalls all active memories with optional filtering by type or tags. It uses a specific verb and resource, and the phrase 'all active' distinguishes it from siblings like memory_search or memory_related.

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 clearly implies the primary use case: retrieving the complete set of active memories, with the option to narrow results. It does not explicitly mention alternatives or exclusions, but the context of filtering is clear.

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

memory_saveA

Save a memory about this project. Records decisions, patterns, architecture, gotchas, progress, or context for future sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for categorization
typeYesMemory type: decision (why X over Y), pattern (conventions), gotcha (pitfalls), architecture (system structure), progress (what's done/in-flight), context (business context)
contentYesThe memory — be specific and concise
supersedesNoID of memory this replaces

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must carry the behavioral burden. It states the core behavior 'Save a memory' and lists content types, but it does not disclose side effects, whether it appends or replaces (despite the 'supersedes' parameter), or any requirements like prior initialization. This meets a minimal threshold but leaves significant gaps.

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 two sentences, front-loaded with the action 'Save a memory about this project', and the second sentence adds useful enumeration of memory types without redundancy or filler.

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 save tool with four parameters and no output schema, the description provides the core purpose and content categories, while the schema handles parameter details. However, it omits mention of prerequisites (e.g., memory_init), return values, and behavior of the 'supersedes' parameter, leaving the description moderately but not fully complete.

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 input schema provides 100% coverage with descriptions for all four parameters, so the description adds little beyond the schema. It repeats the type enum values but does not clarify tags, content, or supersedes beyond what the schema already details. Baseline 3 is appropriate.

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 action 'Save a memory about this project' and enumerates specific content types (decisions, patterns, architecture, gotchas, progress, context). This distinguishes it from sibling tools like memory_recall or memory_delete by establishing a unique purpose.

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 implies usage for recording new information for future sessions, but it does not explicitly contrast with alternatives like memory_recall or memory_search. It provides clear context ('about this project') but lacks explicit exclusions or prerequisites, though the action verb 'save' strongly signals when it applies.

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

memory_statsA

Show memory statistics: counts by type, active/archived/superseded, last consolidation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It indicates a read-only operation through the verb 'Show', but does not explicitly state 'does not modify memory' or describe any side effects. It also does not mention output format or potential costs, leaving some behavioral aspects unspecified.

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 sentence, front-loaded with the primary action ('Show memory statistics') and succinctly lists the key details. Every word earns its place; no filler or repetition.

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 zero-parameter tool with no output schema, the description is sufficiently complete. It states exactly what statistics are shown. However, it does not describe the output structure (e.g., JSON format), which could be useful but is not critical for a simple stats tool.

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 accepts zero parameters, so the input schema is empty and the baseline is 4. The description adds no parameter details because there are none; it appropriately focuses on the output content.

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 'Show' with a clear resource 'memory statistics' and enumerates exactly what the stats include (counts by type, active/archived/superseded, last consolidation). This clearly distinguishes it from sibling tools like memory_save or memory_delete.

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

Usage Guidelines3/5

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

The description implies when to use the tool (when memory statistics are needed), but does not explicitly state usage context or exclude alternatives. Sibling tools like memory_consolidate might relate, but the description offers no explicit comparison or when-not-to-use guidance.

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

TDQS

A3.6/5.0
Disambiguation4/5

Most tools have distinct purposes, but the retrieval tools (recall, search, related, ask) overlap conceptually. However, each has a clear differentiator: recall lists all, search ranks by keyword, related explores by tag, ask synthesizes an answer. No two tools are truly indistinguishable.

Naming Consistency3/5

All tools share the 'memory_' prefix, but suffixes mix verbs (save, delete, search) with nouns (related, consciousness, stats). This inconsistency is noticeable but the command pattern is still readable.

Tool Count5/5

10 tools is well within the ideal range for a focused domain. Each tool addresses a distinct aspect of memory management without bloat.

Completeness4/5

The core memory lifecycle (init, save, recall, delete, consolidate) is covered, plus useful extras (search, ask, related, stats). Missing an explicit update tool, but delete+re-save works around it.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    A persistent memory layer for Claude Code that maintains project information, technology stack, tasks, decisions, and session history between coding sessions, eliminating the need to re-explain project context.
    9
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Persistent project memory + architectural decisions + pre-execution safety hooks for Claude Code. Local-only storage, multi-repo workspace, automatic knowledge extraction via background auditor.
    41
    14
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Persistent memory for Claude Code — a self-evolving knowledge layer that survives across sessions, grows from every conversation, and surfaces relevant context automatically.
    14
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yuvalsuede/memory-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server