Skip to main content
Glama

memmd-mcp

English | 한국어

PyPI License Python

A shared memory layer for AI agents — one memory.md synced across Claude Desktop, Cursor, Claude Code, OpenAI Codex, and any MCP client. Auto-deduplication, contradiction resolution, and stale cleanup included.

TIP

Why memmd?

  • One memory, every client — Claude Desktop, Cursor, Claude Code, OpenAI Codex share the same memory.md

  • Zero external dependencies beyond mcp — no embeddings, no API keys, fully offline

  • Deterministic, rule-based — no LLM calls for memory management

  • Human-readable memory.md — inspect and edit anytime

Features

  • Deduplication — fingerprint + Jaccard similarity merges near-identical entries

  • Contradiction resolution — detects conflicting facts, keeps latest, archives old

  • Structured categories — Work Context · Projects · Personal Preferences · Archive

  • Section-aware recall — filter by category, keyword search with scoring

  • Stale cleanup — auto-archives old, unused entries on summarize()

  • Korean support — category aliases, fact patterns (~는 ~), stopwords

Related MCP server: auxly-memory-cli

Quick Start

Install and run

uvx memmd-mcp

Add to your MCP client

{
  "mcpServers": {
    "memmd": {
      "command": "uvx",
      "args": ["memmd-mcp"],
      "env": {
        "MEMMD_MEMORY_PATH": "/absolute/path/to/memory.md"
      }
    }
  }
}
NOTE

Config location by client:

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.json

  • Claude Code.claude/settings.json or user settings

  • Cursor~/.cursor/mcp.json

  • OpenAI Codex~/.codex/config.toml

Tools

Tool

Description

remember(content, category?)

Store with auto-dedupe and contradiction merge

recall(query)

Search with keyword scoring and category filters

forget(id)

Delete by ID

summarize()

Category overview + stale entry cleanup

How It Works

remember

  • Dedupes by SHA-1 fingerprint and Jaccard similarity (>0.82)

  • Extracts facts from key: value, key = value, key is value, key는 value

  • On conflict: latest value wins, old entry archived with history

recall

  • Keyword search with token-overlap scoring

  • Filters: category:Projects API token, section:"Work Context" deploy

  • Korean aliases accepted (category:프로젝트)

summarize

  • Per-category summary of recent entries

  • Archives stale entries (default: >120 days, <3 accesses, no recent recall)

memory.md Format

# memory.md

<!-- memmd:version=1 -->

## Work Context
<!-- memmd-entry {...json...} -->
Memory content

## Projects
...

## Personal Preferences
...

## Archive
...

Environment Variables

Variable

Default

Description

MEMMD_MEMORY_PATH

./memory.md

Path to memory file

MEMMD_STALE_DAYS

120

Days before stale cleanup (min: 7)

License

MIT

Available Tools

4 tools
forgetC

Delete a memory entry by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It states 'Delete' but does not disclose whether deletion is permanent, reversible, or requires any permissions. Minimal behavioral info.

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

Conciseness3/5

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

Single sentence of 6 words is concise, but lacks front-loading of important details. Could be structured to add value while remaining brief.

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 delete tool with one parameter and an output schema, the description is minimally adequate. However, it does not mention return behavior or confirmation, which could be inferred from output schema.

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

Parameters2/5

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

Schema coverage is 0% (no parameter descriptions). Description only says 'by ID' but does not explain the format, source, or constraints of the id parameter.

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 'Delete a memory entry by ID' uses a specific verb and resource, clearly distinguishing it from siblings like recall (retrieve) and remember (store).

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 on when to use this tool versus alternatives. Lacks context about prerequisites or scenarios where deletion is appropriate.

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

recallC

Search memory entries with optional section/category filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are present, and the description lacks disclosure of behavioral traits such as read-only nature, performance implications, or authentication needs. The mere mention of 'search' implies read-only, but this is insufficient without explicit confirmation.

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

Conciseness3/5

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

The description is concise (one sentence) but contains misleading information about filters, which undermines its efficiency. Every sentence should be accurate to earn its place.

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?

Given the presence of an output schema and only one required parameter, the description should provide more context about the search behavior, expected results, and parameter usage. It fails to do so.

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

Parameters2/5

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

The input schema has 0% description coverage for parameters; the description does not explain the 'query' parameter's format, semantics, or how to use optional filters that are mentioned but not defined in the schema.

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

Purpose3/5

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

The description specifies a search operation on memory entries, which aligns with the tool name 'recall'. However, it mentions 'optional section/category filters' that are not present in the input schema, introducing confusion about the tool's actual capabilities.

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 recall versus sibling tools (forget, remember, summarize). The description does not differentiate scenarios or provide usage context.

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

rememberC

Add memory content with automatic dedupe/contradiction merge.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYes
categoryNoWork Context

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/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 mentions 'automatic dedupe/contradiction merge' which is a behavioral trait, but lacks other details like side effects, auth needs, or irreversibility.

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?

Single sentence is front-loaded with key action and behavior. It is efficient but may be too terse, lacking some necessary elaboration for a complete understanding.

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?

Despite having an output schema, the description does not mention return values or behavior. It omits context like what 'memory content' means, how category is used, and what happens on dedupe/merge.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the 'content' or 'category' parameters. It adds no value beyond the parameter names in 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 action (Add), resource (memory content), and a unique behavior (dedupe/contradiction merge). This distinguishes it from sibling tools (forget, recall, summarize) which have different purposes.

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 on when to use this tool versus alternatives. The description does not mention when-not-to-use, prerequisites, or context for selection among siblings.

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

summarizeA

Summarize memory by category and archive stale entries.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

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

The description states that it both summarizes and archives stale entries, but it does not explain what 'archive' entails (e.g., deletion, moving). With no annotations, the description carries the burden, and while it gives some behavioral insight, it lacks detail on 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.

Conciseness5/5

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

The description is a single sentence containing no superfluous information. Every word contributes meaning.

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 has no parameters and an output schema exists, so the description need not detail return values. However, it does not explain what 'summarize' returns or how archiving affects memory state, leaving some gaps for a tool that likely performs a complex operation.

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?

There are no parameters, so schema coverage is trivially 100%. According to the calibration rules, 0 parameters sets a baseline of 4. The description does not need to add 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 uses a specific verb ('summarize') and resource ('memory') and adds 'by category and archive stale entries', clearly distinguishing it from sibling tools like forget, recall, and remember.

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 such as recall or forget. The description does not mention prerequisites or 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. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.0
    • First observedforget
    • First observedrecall
    • First observedremember
    • First observedsummarize

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: forget deletes by ID, recall searches with filters, remember adds with merging, and summarizes archives. No overlap or ambiguity.

Naming Consistency5/5

All tool names are single-word, lowercase verbs following a consistent imperative pattern (forget, recall, remember, summarize).

Tool Count5/5

4 tools is a well-scoped count for a memory management server, covering essential operations without bloat or deficiency.

Completeness4/5

The set covers create (remember), read (recall), delete (forget), and maintenance (summarize). An explicit update tool is missing, but remember's merge functionality partially addresses it.

Maintenance

ActivityInactive
ResponsivenessNo issues

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
    Not graded
    quality
    A
    maintenance
    Local-first, file-based memory layer for AI agents — one shared Markdown vault across Claude, Codex, Gemini, Cursor and any MCP client. Provides read/write memory tools with an audit trail, per-agent trust levels, and Git sync; no cloud and no lock-in.
    2
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A local-first shared memory layer for MCP-aware agents like Claude, Codex, and Hermes, enabling persistent memory across chats and clients via Markdown files and SQLite FTS.
    6
    2
    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/matamong/memmd-mcp'

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