Skip to main content
Glama

MCP-Memory: OKF-Backed Agent Memory Server

MCP-Memory is a Model Context Protocol (MCP) server that equips AI agents (such as Claude Desktop, Cursor, Antigravity, Windsurf, or Codex) with persistent, long-term memory capabilities.

Memory records are formatted using the Open Knowledge Format (OKF v0.2) standard and indexed with a local SQLite instance (supporting FTS5 full-text search) for fast key-value lookups, tag filtering, and content search.

Fast Track: Jump directly to Quick Start


Key Features

  • Persistent State Across Sessions: Enables AI agents to read, store, search, and delete stateful memory snippets that persist across chat turns and sessions.

  • OKF Standard Compliance: Stores every memory item formatted as an OKF v0.2 Markdown document with YAML frontmatter (type, key, namespace, tags, generated, sources, verified, status, stale_after), adhering strictly to SPEC.md and OKF_RULES.md.

  • Dual-Layer Architecture:

    • Human-Browseable OKF Directory: Automatically dumps and syncs every memory to disk as a raw .md file inside the memory/ bundle directory with hierarchical index.md progressive disclosure files (root index.md versioned with okf_version: "0.2") and log.md update history tracking.

    • High-Performance SQLite Indexing: SQLite FTS5 (Full-Text Search) and automatic triggers for sub-20ms key lookups and instant keyword searches.

  • Namespace Isolation: Supports contextual separation (e.g. user/preferences, project/architecture, default).

  • Zero Boilerplate Setup: Quick setup wizard (python3 setup.py) auto-configures installed MCP tools (Antigravity, Claude, Cursor, Windsurf, Codex).


Related MCP server: MCP Vector Memory

MCP Tools

The server exposes six MCP tools to interacting agents:

1. memory_store

Stores or updates a memory record in OKF v0.2 format.

  • Parameters:

    • key (string, required): Unique identifier or path for the memory (e.g. user/preferences/coding_style or project/architecture).

    • content (string or object, required): Core information to store.

    • project_root (string, required): Absolute path to the active project root directory (e.g. /Users/user/Projects/my-app).

    • tags (array of strings, optional): Classification tags for filtering.

    • namespace (string, optional, default: "default"): Scope/namespace.

    • concept_type (string, optional, default: "Agent Memory"): OKF concept type (e.g. Metric, Playbook, Attested Computation).

    • title (string, optional): Display name.

    • description (string, optional): One-line summary.

    • resource (string, optional): Canonical URI of underlying asset.

    • status (string, optional, default: "stable"): Lifecycle state (draft | stable | deprecated).

    • stale_after (string, optional): ISO date (YYYY-MM-DD).

    • sources (array of objects, optional): Provenance sources [{resource, id, title, author, usage_count, last_modified}].

    • verified (array of objects or object, optional): Verification events [{by, at}].

    • generated_by (string, optional): Actor identifier following actor convention (<producer>/<version>, human:<id>, process:<id>).

2. memory_retrieve

Retrieves a specific memory by its key and namespace.

  • Parameters:

    • key (string, required): The memory key to look up.

    • project_root (string, required): Absolute path to the active project root directory.

    • namespace (string, optional, default: "default"): Scope/namespace.

3. memory_search

Finds memories matching keywords, tags, or namespace filters.

  • Parameters:

    • project_root (string, required): Absolute path to the active project root directory.

    • query (string, optional): Keyword search query across keys, frontmatter, and content.

    • tags (array of strings, optional): Filter by specific tags.

    • namespace (string, optional): Scope search to a namespace.

    • limit (integer, optional, default: 10): Maximum number of results.

4. memory_delete

Removes a specific memory record by its key and namespace, from both the SQLite index and the memory/ bundle on disk.

  • Parameters:

    • key (string, required): The key of the memory to remove.

    • project_root (string, required): Absolute path to the active project root directory.

    • namespace (string, optional, default: "default"): Scope/namespace.

5. memory_get_last

AGENT DIRECTIVE (Session Start): Retrieves the last recorded session checkpoint (system/last_memory) so the AI agent immediately knows where work was left off when opening a project or starting a session.

  • Parameters:

    • project_root (string, required): Absolute path to active project root directory.

    • namespace (string, optional, default: "default"): Scope/namespace.

6. memory_update_last

AGENT DIRECTIVE (Milestones & Progress): Updates the canonical session checkpoint (system/last_memory) whenever completing a milestone, making key changes, or pausing work.

  • Parameters:

    • content (string or object, required): Brief note or structured dictionary summarizing progress and referencing key memory files.

    • project_root (string, required): Absolute path to active project root directory.

    • namespace (string, optional, default: "default"): Scope/namespace.

    • summary (string, optional): One-sentence description of the milestone achieved.


OKF (Open Knowledge Format) Structure

Every stored memory strictly adheres to the OKF v0.2 specification (SPEC.md & OKF_RULES.md):

---
type: Agent Memory
title: Coding Style
key: user/preferences/coding_style
namespace: default
tags:
- preferences
- style
status: stable
generated:
  by: mcp-memory/0.2.0
  at: '2026-08-12T19:23:35Z'
created_at: '2026-08-12T19:23:35Z'
updated_at: '2026-08-12T19:23:35Z'
---

User prefers functional programming style with explicit type annotations.

Quick Start

1. Clone the Repository

git clone https://github.com/fellowgeek/mcp-memory
cd mcp-memory

2. Interactive Setup Wizard

Run setup.py to auto-detect and register mcp-memory with your AI tools:

python3 setup.py

Note: Once setup.py finishes configuring your tools, your AI client will launch mcp-memory automatically in the background whenever needed. You do not need to manually start or keep a server process running in your terminal.

3. Run Manually via CLI (Optional / Debugging)

If you want to manually verify startup, inspect stdio output, or pre-initialize the virtual environment (.venv), you can run run.sh directly:

./run.sh

Manual Client Configuration

If you prefer to configure your MCP client manually, add the "memory" server entry pointing to run.sh:

JSON Configuration (Antigravity, Claude Desktop, Cursor, Windsurf)

Add to your client's mcp_config.json or claude_desktop_config.json:

{
  "mcpServers": {
    "memory": {
      "command": "/ABSOLUTE/PATH/TO/run.sh"
    }
  }
}

TOML Configuration (Codex Desktop)

Add to ~/.codex/config.toml:

[mcp_servers.memory]
command = "/ABSOLUTE/PATH/TO/run.sh"

CLI Configuration

  • Claude Code CLI:

    claude mcp add --scope user memory -- /ABSOLUTE/PATH/TO/run.sh
  • Codex CLI:

    codex mcp add memory -- /ABSOLUTE/PATH/TO/run.sh

Testing

Run the automated test suite to verify OKF serialization, SQLite database operations, and FastMCP tool execution:

python3 test_memory.py

Storage & Environment Variables

By default, mcp-memory creates project-isolated memory stores inside each project's root directory:

  • OKF Markdown Files (Human-readable): memory/ folder in project root.

  • SQLite Database (Hidden index): .mcp_memory/memories.db in project root.

You can customize this behavior using environment variables:

  • MCP_MEMORY_PROJECT_ROOT: Project root directory (default: process current working directory cwd).

  • MCP_MEMORY_DB_PATH: SQLite database file path (default: .mcp_memory/memories.db relative to project root).

  • MCP_MEMORY_DIR: Directory for Open Knowledge Format (OKF) .md files (default: memory relative to project root).

Tip: If you prefer a single global memory store shared across all projects, set MCP_MEMORY_DB_PATH=~/.mcp_memory/memories.db and MCP_MEMORY_DIR=~/.mcp_memory/memory in your client's MCP configuration.

Available Tools

6 tools
memory_deleteB

Removes a specific memory entry.

Parameters: key: The key of the memory to remove. project_root: REQUIRED. Absolute path to active project root directory. namespace: Logical namespace (default: 'default').

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
namespaceNodefault
project_rootYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/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 states the tool 'removes' an entry, implying a destructive mutation, but does not disclose whether the operation is permanent, whether it errors on missing keys, or what the response contains. For a mutation with no annotation coverage, this 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 concise, with a one-sentence purpose and a clear, front-loaded parameter list. No fluff or redundant information; every line adds value. This is an optimally structured short definition.

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?

Although an output schema exists (not shown), the description omits critical context for a destructive operation: it does not mention side effects (e.g., irreversible deletion), error behavior on missing keys, or any confirmation/return message. For a delete tool with no annotations, an agent needs more than the bare action and parameter list to call it safely and correctly.

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 input schema has 0% description coverage, so the description must explain each parameter. It does: 'key' is the memory key to remove, 'project_root' is the required absolute path, and 'namespace' indicates a logical namespace with a default. This adds meaning beyond the bare schema titles and is sufficient for an agent to understand parameter purposes, though it could be more detailed (e.g., allowed formats).

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 verb ('removes') and resource ('specific memory entry'), which unambiguously defines the operation. It is distinct from siblings like memory_store or memory_retrieve by the action. However, it does not explicitly differentiate from similar delete-like operations, though none exist among siblings, so it is clear enough.

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 provided on when to use this tool versus alternatives. The description only lists parameters and the core action, with no mention of contexts in which deletion is appropriate, prerequisites, or scenarios where another tool (e.g., memory_update_last) might be preferred. The agent must infer usage from the name alone.

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

memory_get_lastA

AGENT DIRECTIVE - SESSION INITIALIZATION: Call this tool FIRST when starting work or opening a project session to retrieve the last recorded session checkpoint ('system/last_memory') and understand where work was left off.

Parameters: project_root: REQUIRED. Absolute path to active project root directory. namespace: Logical namespace (default: 'default').

ParametersJSON Schema
NameRequiredDescriptionDefault
namespaceNodefault
project_rootYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/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 of explaining behavior. It does state that the tool retrieves a checkpoint and helps understand where work left off, implying a read-only operation. However, it does not disclose behavior when no last memory exists, potential errors, or whether any state is initialized, which leaves some ambiguity for an agent.

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 front-loaded with the most important directive: when to call the tool. The parameter list is placed afterward without redundant explanation or filler. Every sentence earns its place.

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 low complexity and the presence of an output schema, the description covers the key context: when to call it, what it retrieves, and the required parameters. It falls slightly short on edge-case behavior, such as missing checkpoint handling or namespace semantics, but overall it is reasonably complete.

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 schema has 0% description coverage, so parameter meaning depends entirely on the description. It usefully explains project_root as REQUIRED and an absolute path, and namespace as a logical namespace with a default. The namespace definition is thin, but for a two-parameter tool this is adequate compensation for the bare schema.

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 retrieves the last recorded session checkpoint and is meant for session initialization. It identifies a specific resource ('system/last_memory'), so the purpose is unambiguous. It does not explicitly contrast itself with siblings like memory_retrieve or memory_search, but the 'last checkpoint' scope sets it apart.

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 explicitly says to call this tool FIRST when starting work or opening a project session, which is strong when-to-use guidance. It does not mention when not to use it or describe alternative sibling tools, so the guidance is clear but not fully comparative.

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

memory_retrieveA

Retrieves a specific memory record by key.

Parameters: key: The exact memory key to look up (e.g. 'system/last_memory' for session checkpoint). project_root: REQUIRED. Absolute path to active project root directory. namespace: Logical namespace (default: 'default').

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
namespaceNodefault
project_rootYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/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 behavioral disclosure. It only states the action (retrieves) and parameter details. It does not disclose whether the operation is read-only, what happens if the key is missing, whether any side effects occur, or if specific permissions are required. This is a significant gap for a tool that likely performs a read 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?

The description is concise and well-structured. It opens with a single-sentence purpose statement, immediately followed by a clearly formatted parameter list. There is no fluff; every line contributes to understanding the tool's function and parameters. The structure is easy to scan and comprehend.

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 covers the basic purpose and parameter semantics, but it lacks guidance on behavioral aspects such as return format (though an output schema exists), error handling, and read-only nature. It also does not differentiate usage from sibling tools. For a simple retrieval with straightforward parameters, this is adequate but not fully complete.

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 schema has 0% description coverage, so the description must compensate. It does: it explains the 'key' parameter with an example, clarifies that 'project_root' is required and what it represents, and notes the default for 'namespace'. This adds meaningful context beyond the bare schema definitions, covering all three parameters effectively.

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 verb ('Retrieves') and a specific resource ('a specific memory record by key'). It is distinct from sibling tools like memory_search (which implies searching) and memory_get_last (which implies getting the last record). The key-based retrieval purpose is 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?

The description provides no guidance on when to use this tool versus alternatives. There is no mention of when to prefer memory_retrieve over memory_search or memory_get_last, nor any exclusions or prerequisites. The only usage hint is implicit: it retrieves by an exact key, but this is not framed as a decision rule.

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

memory_storeA

Stores or updates a persistent memory record in Open Knowledge Format (OKF v0.2).

Parameters: key: Unique identifier or path for the memory (e.g. 'user/preferences/coding_style' or 'system/last_memory'). content: The core information to store (string text or structured dictionary). project_root: REQUIRED. Absolute path to active project root directory. tags: Optional classification tags for filtering (e.g. ['preferences', 'user']). namespace: Logical separation for contexts or users (default: 'default'). concept_type: OKF concept type (default: 'Agent Memory'). Options: 'Agent Memory', 'Checkpoint', 'Metric', 'Playbook', etc. title: Human-readable display name. description: Single-sentence summary of the concept. resource: Canonical URI for the underlying asset. status: Lifecycle status ('draft' | 'stable' | 'deprecated'). Default: 'stable'. stale_after: ISO date ('YYYY-MM-DD') when memory becomes stale. sources: Provenance sources list [{resource, id, title, author, usage_count, last_modified}]. usage_window: Sources usage window framing {from, to}. verified: Verification events list or mapping [{by, at}]. generated_by: Actor identifier string following actor convention ('/', 'human:', 'process:'). runtime: For Attested Computation concepts ('bigquery', 'postgres', 'dbt', 'python'). parameters: For Attested Computation concepts [{name, type, required}]. executor: For Attested Computation concepts {resource, receipt}. attester: For Attested Computation concepts {resource}. computation: Path to external computation file.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
tagsNo
titleNo
statusNo
contentYes
runtimeNo
sourcesNo
attesterNo
executorNo
resourceNo
verifiedNo
namespaceNodefault
parametersNo
computationNo
descriptionNo
stale_afterNo
concept_typeNo
generated_byNo
project_rootYes
usage_windowNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full burden. It discloses that records are persistent and that the operation is an upsert ('Stores or updates'), but it does not explain overwrite semantics, whether content is merged or replaced, side effects on existing keys, required permissions, or how the OKF record is materialized. This is a significant gap for a write 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?

The one-sentence purpose is front-loaded, followed by a systematically formatted parameter list. Each parameter line adds semantic value that the schema lacks, and the length is justified by the tool's 20-parameter complexity. There is no filler or redundancy.

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 complex 20-parameter tool with no annotations, the description covers all parameters, required fields, defaults, and special-case fields. Since an output schema is present, return values need not be described. The main remaining gaps are usage routing and overwrite/merge behavior, but the parameter documentation is otherwise thorough enough for correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully compensates by documenting all 20 parameters with meaning, defaults, examples, allowed values, and context-specific notes such as 'For Attested Computation concepts'. This goes well beyond the bare schema and gives an agent enough semantic grounding to construct valid arguments.

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 opening sentence states a specific verb and resource: 'Stores or updates a persistent memory record in Open Knowledge Format (OKF v0.2).' This is clear and distinguishes the tool from retrieval/deletion tools. However, it does not explicitly differentiate from memory_update_last, which also performs an update, so it misses full sibling differentiation.

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 implies use when storing or updating a keyed memory, but gives no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as memory_update_last or memory_delete. With five siblings, an agent gets no routing help beyond the tool's name and first sentence.

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

memory_update_lastA

AGENT DIRECTIVE - MILESTONE & SESSION CHECKPOINTING: Call this tool whenever completing a milestone, making key project changes, or pausing work to update the canonical project checkpoint ('system/last_memory') so future sessions know where work was left off.

Parameters: content: Brief note or structured dictionary summarizing progress and referencing key memory files (e.g. 'Goal Progress'). project_root: REQUIRED. Absolute path to active project root directory. namespace: Logical namespace (default: 'default'). summary: Optional one-sentence description of the milestone achieved.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
summaryNo
namespaceNodefault
project_rootYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries full behavioral burden. It says the tool updates the canonical checkpoint 'so future sessions know where work was left off', which conveys the main effect, but it does not disclose whether the previous checkpoint is overwritten, whether a missing checkpoint is created, or any other side effects.

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 key directive is front-loaded and every parameter is explained without filler. The block is reasonably compact for the amount of guidance it provides, though the 'AGENT DIRECTIVE' framing adds a small amount of stylistic overhead.

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 tool with 4 parameters, an output schema, and no enums or nested objects, the description covers when to call the tool, what it accomplishes, and what each parameter means. It does not explain overwrite behavior or routing to siblings, but an agent has enough to select and invoke the tool correctly in the intended checkpointing workflow.

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?

Schema description coverage is 0%, but the description compensates by explaining each parameter: content is a progress note or dictionary, project_root is a required absolute path, namespace has a default, and summary is an optional one-sentence description. Some semantics still remain abstract, such as what 'logical namespace' affects, so it is not a perfect 5.

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 explicitly names a specific verb and target: 'update the canonical project checkpoint ('system/last_memory')'. It also frames the tool as milestone/session checkpointing, which differentiates it from sibling tools like memory_store or memory_get_last by focusing on updating the single canonical 'last_memory' record.

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?

It gives explicit when-to-use conditions: 'whenever completing a milestone, making key project changes, or pausing work'. However, it does not state when not to use it or explicitly compare it with alternatives such as memory_store for new memories.

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

TDQS

A3.7/5.0
Disambiguation3/5

memory_get_last and memory_retrieve overlap because both can retrieve the same system/last_memory record, and memory_update_last similarly overlaps with memory_store for that key. The AGENT DIRECTIVE text helps clarify intended usage, but the boundaries between generic and session-specific operations are not fully crisp.

Naming Consistency4/5

All tools share a consistent memory_ prefix and snake_case formatting, following a readable memory_<verb> pattern. Minor synonym inconsistency between retrieve/get and store/update keeps it from being perfectly uniform.

Tool Count5/5

Six tools is well-scoped for a memory server: generic CRUD plus session checkpointing. Each tool has a distinct role, and the specialized checkpoint pair adds clear value without bloating the surface.

Completeness5/5

The set covers the full memory lifecycle: store, retrieve, search, delete, and session checkpoint read/write. There are no obvious dead ends for the stated domain of persistent project memory.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides persistent local memory functionality for AI assistants, enabling them to store, retrieve, and search contextual information across conversations with SQLite-based full-text search. All data stays private on your machine while dramatically improving context retention and personalized assistance.
    3
  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides AI coding agents with persistent, long-term memory through local semantic search and SQLite storage. It enables agents to save and retrieve architectural decisions or project context across different conversation sessions without requiring cloud services.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides persistent long-term memory for AI assistants with tag-based retrieval, wiki-style linking, and source references, storing memories as markdown files with SQLite index.
    1
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Persistent memory for AI agents enabling saving, searching, and managing knowledge across sessions with local markdown files.
    2

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/fellowgeek/mcp-memory'

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