mnemo
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., "@mnemoremember that I prefer metric units"
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.
mnemo
Portable memory for AI agents. Plain Markdown files that you own, that any agent can read.
Every assistant now remembers you. None of them let you leave with it. Your preferences, your context, the way you like work done, all of it lives inside one vendor's product, in a shape nobody else can read, and switching tools means starting over as a stranger.
mnemo is the opposite bet: your memory is a folder of Markdown files on your disk. One fact per file. An index at the top. A small CLI and an MCP server so any agent can read and write it, and no agent can hold it hostage.
~/.mnemo/
mnemo.json
MEMORY.md <- generated map of everything
memories/
prefers-metric-units.md
short-pr-titles.md
kettle-billing-rewrite.mdQuickstart
No dependencies. Node 20 or newer.
npx @cniackz/mnemo init
npx @cniackz/mnemo recall "pull request"From a clone it is the same tool, spelled node bin/mnemo.js <command>:
node bin/mnemo.js init
node bin/mnemo.js remember short-pr-titles \
--type feedback \
--desc "pull request titles stay under 50 characters" \
--body "Detail belongs in the body. Why: the title becomes the squash commit."
node bin/mnemo.js recall "pull request"There is a complete synthetic store in examples/demo-store
to poke at before you put anything real in one:
node bin/mnemo.js list --store examples/demo-store
node bin/mnemo.js recall "billing" --store examples/demo-storeRelated MCP server: memex-mcp
Bring what you already have
Most people already keep notes. import-dir reads a directory of ordinary
Markdown, tolerates frontmatter it did not write, and falls back to the first
line of prose when a file carries no metadata at all.
mnemo import-dir ~/notes --recursive --dry
mnemo import-dir ~/notes --recursive--dry reports and writes nothing. --split is the flag that matters for hand
kept notes: a single file holding many entries under ## headings becomes one
memory per heading, which is the shape the format wants, and which stops one
long file from winning every search by length alone.
mnemo import-dir ~/notes/lessons --split --type x-lessonNothing is overwritten. A name already present in the store gets its parent directory prepended, and whatever still cannot be placed is printed instead of dropped in silence.
Give it to your agent
mnemo ships an MCP server, so any client that speaks MCP gets five tools:
recall, remember, forget, list_memories, get_memory.
Claude Code:
claude mcp add mnemo -- node /path/to/mnemo/bin/mnemo.js mcp --store ~/.mnemoAnything else that takes an MCP config file:
{
"mcpServers": {
"mnemo": {
"command": "node",
"args": ["/path/to/mnemo/bin/mnemo.js", "mcp", "--store", "/home/you/.mnemo"]
}
}
}The same store can be mounted by several agents at once. They are all just reading files.
The format
Full spec: SPEC.md. It fits on one page on purpose.
---
name: short-pr-titles
description: pull request titles stay under 50 characters, detail goes in the body
type: feedback
created: 2026-07-31
updated: 2026-07-31
tags: [git, review]
---
Keep pull request titles under 50 characters.
**Why:** the title is what shows up in the release notes and the squash commit.
Related: [[review-hour]]Four core types, user, feedback, project, reference, plus any custom type
you prefix with x-. Links are [[slug]] and are allowed to dangle, because
writing [[not-yet-written]] is a useful way to mark a memory worth having.
Unknown frontmatter keys are preserved on rewrite. A tool that does not understand a field is not allowed to drop it, which is what makes it safe for two different implementations to share one store.
Commands
mnemo init [--name <label>] create a store
mnemo remember <name> [options] create or update one memory
mnemo recall <query> [--limit n] search
mnemo list [--type <type>] list everything
mnemo show <name> print one memory
mnemo forget <name> delete one memory
mnemo index regenerate MEMORY.md
mnemo validate check the store against the spec
mnemo export [--out <file>] dump the whole store as one JSON document
mnemo import <file> rebuild a store from that document
mnemo import-dir <dir> bring in Markdown notes you already have
mnemo mcp run the MCP server on stdio--store <dir> points at a store other than $MNEMO_HOME or ~/.mnemo.
--json makes any command machine readable.
The one guarantee
mnemo export --out brain.json
mnemo import brain.json --store ./somewhere-else
diff -r ~/.mnemo/memories ./somewhere-else/memories # no outputExport then import reproduces every memory byte for byte. It is a test in the suite, not a promise in a README. If that ever breaks, the project has failed at the only thing it claims.
Why files
Readable in fifty years. Markdown and a text editor. No schema migration.
Sync is already solved.
git push, a bucket, a synced folder. Pick one.Diffable. You can see what your agent decided to remember about you, in a pull request, and disagree with it.
Greppable. Recall is ranked search, but
grep -rstill works, and that matters on the day the tooling is broken.Yours. Deleting a memory is
rm. No account, no request form, no export queue.
Design rules
Plain files. If the tooling disappears, the memory survives.
One fact per file. Splitting is cheap, merging is expensive.
Derived data is disposable.
MEMORY.mdand any future index rebuild from the memories alone.Offline first. Recall works with no model, no network, no server. Embeddings are allowed on top, never instead.
Vendor neutral. No field in the spec names a model or a product.
Status
0.1, early, and the format is the part meant to outlive this code. The spec is
versioned separately from the implementation for that reason. If you write
another implementation, the conformance bar is in SPEC.md section 6,
and a store written by yours has to survive a round trip through this one.
Issues and pull requests welcome, especially: a second implementation in another language, adapters for other agent runtimes, and arguments about the format while it is still cheap to change.
npm testLicense
MIT. Use it, fork it, embed it in a product, take your memory with you.
This server cannot be installed
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 Servers
- AlicenseAqualityCmaintenancePersistent memory for AI agents. Store, recall, and share knowledge across sessions with five MCP tools: remember, recall, context, forget, and share. Includes semantic search and agent/user/org scoping.Last updated52Apache 2.0
- AlicenseAqualityAmaintenanceA portable memory server for MCP that stores durable memories as markdown files, enabling AI agents to create, search, and organize persistent knowledge.Last updated117MIT
- AlicenseBqualityCmaintenanceLocal Markdown-backed memory tools for Codex and other MCP-capable agents. Exposes durable agent knowledge via CLI and MCP server.Last updated5MIT
- AlicenseBqualityBmaintenanceLocal-first memory server for AI coding agents that stores work sessions, tasks, and durable memories in Markdown files, exposed through MCP tools for session management and memory retrieval.Last updated10271MIT
Related MCP Connectors
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Cross-AI personal memory. Save once in ChatGPT, recall in Claude, Mistral, Grok, or any MCP client.
Your memory, everywhere AI goes. Build knowledge once, access it via MCP anywhere.
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/cniackz/mnemo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server