memmd-mcp
Provides a shared memory layer for OpenAI Codex, allowing agents to persist and retrieve structured memories (facts, context, preferences) across sessions via a single memory.md file.
Click on "Install 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., "@memmd-mcpremember that I'm using Python 3.12 for memmd-mcp"
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.
memmd-mcp
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.
Why memmd?
One memory, every client — Claude Desktop, Cursor, Claude Code, OpenAI Codex share the same
memory.mdZero external dependencies beyond
mcp— no embeddings, no API keys, fully offlineDeterministic, 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-mcpAdd to your MCP client
{
"mcpServers": {
"memmd": {
"command": "uvx",
"args": ["memmd-mcp"],
"env": {
"MEMMD_MEMORY_PATH": "/absolute/path/to/memory.md"
}
}
}
}Config location by client:
Claude Desktop —
~/Library/Application Support/Claude/claude_desktop_config.jsonClaude Code —
.claude/settings.jsonor user settingsCursor —
~/.cursor/mcp.jsonOpenAI Codex —
~/.codex/config.toml
Tools
Tool | Description |
| Store with auto-dedupe and contradiction merge |
| Search with keyword scoring and category filters |
| Delete by ID |
| 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는 valueOn conflict: latest value wins, old entry archived with history
recall
Keyword search with token-overlap scoring
Filters:
category:Projects API token,section:"Work Context" deployKorean 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 |
|
| Path to memory file |
|
| Days before stale cleanup (min: 7) |
License
MIT
Available Tools
4 toolsforgetC
Delete a memory entry by ID.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | ||
| category | No | Work Context |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.1.0- First observed
forget - First observed
recall - First observed
remember - First observed
summarize
TDQS
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.
All tool names are single-word, lowercase verbs following a consistent imperative pattern (forget, recall, remember, summarize).
4 tools is a well-scoped count for a memory management server, covering essential operations without bloat or deficiency.
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
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
Portable memory for AI agents: capture once, recall across Claude, Cursor, and any MCP client.
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
Persistent memory for AI agents across Claude, ChatGPT and any MCP client.
Related MCP Servers
- AlicenseAqualityAmaintenancePersistent long-term memory for AI agents — semantic recall across Claude, Cursor, ChatGPT & MCP.1051921MIT
- AlicenseNot gradedqualityAmaintenanceLocal-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.2MIT
- AlicenseAqualityBmaintenanceA 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.62MIT
- AlicenseNot gradedqualityAmaintenancePersistent, local memory for AI coding agents that learns how you work, not just what you said. Supports Claude Code, Codex CLI, Cursor, and any MCP client.66MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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