Peer-to-peer AI memory sharing โ approved on both sides.
Works in any AI tool. No server, no signup, nothing uploaded.
npm install -g memshare-mcp
Works with Claude Code, Cursor, Windsurf, VS Code โ anything that speaks MCP.
The problem
A decision gets made in a meeting. Someone hits a gotcha. A convention emerges. That knowledge belongs to the team โ but every memory product on the market files it per account.
Six engineers each explain the same five facts about the same codebase to their own AI. You pay O(n) for something that should cost O(1).
A new hire spends their first week teaching their AI what six other people's AIs already know perfectly well.
Ask any AI what it knows about you and you get a list you cannot export, edit precisely, or verify was ever deleted.
How it works
Every step is a sentence. Before anything is written or taken in, memshare shows you exactly what is about to change hands, and waits โ the approval moves into the conversation instead of disappearing from it.
Install it once, connect it, then just work. No commands, no curating a knowledge base.
"we went with Postgres โ the JSONB support decided it"
โ the assistant calls memory_set() โ saved as shareable โ it is a project fact
The assistant marks project facts shareable and anything about you private. Reviewing that, and changing your mind, is yours โ either in conversation or at a prompt. Deleting is a sentence too, and only ever yours to ask for.
"make the project-x notes shareable"
โ memory_set_visibility(). no command, no syntax.
"forget what you know about the old auth flow"
โ it shows you what matched, then memory_forget(). โ the memory record is gone. nothing to verify, nothing cached.
You are shown the exact list before a file is written. Send it however you like โ Slack, email, a USB stick. On the other side they can read the whole bundle without taking any of it, then see every item and take only what they want โ and nothing they already had is overwritten.
"send the project-x notes to Sam, good for 30 days"
โ 2 memories would go. 1 held back (contains an email). โ you say yes, and the bundle file is written. # Sam, on his machine: "what's in what Dana sent me?" โ the whole list. nothing imported, nothing changed. "import what Dana sent me" โ he sees each item and picks what he wants
Use cases
Between people, between tools, between sessions โ the same local store serves all of them.
Instead of spending a week "teaching" their AI about the project, the tech lead shares a bundle โ internal terms, architecture decisions, code conventions. Day one, the new hire's AI already knows.
The designer's AI knows the component conventions. The backend devs' AI knows the API contract. One bundle each way and neither side re-explains โ across people and across vendors.
A freelancer finished their part. Instead of the next person starting from zero, they share a bundle โ client preferences, decision history, technical gotchas.
Claude Code today, Cursor tomorrow, Windsurf next month. Every MCP client reads the same local store โ there is nothing to migrate.
Claude for code, ChatGPT for research, Gemini for document analysis. All read from the same memory store โ no duplicating context three times.
Long conversation with rich context. Open a new chat and it's all there โ the MCP server carries your memory across sessions automatically.
Consent
Anything about you personally is saved private, and private items are never exported โ not even when their tags match what you asked for. When the call is arguable, the assistant is told to choose private.
Before anything leaves, memshare scans for emails, phone numbers, IDs, payment cards, credentials, and health or financial language. Flagged items are held back for you to decide, one at a time.
You preview the exact bundle before it is written. They accept or reject each item on the way in. Bundles are content-hashed, so a file edited in transit is refused.
How it compares
| Tool | Cross-model | Self-hosted | User-to-user | Consent flow |
|---|---|---|---|---|
| Claude / ChatGPT memory | โ | โ | โ | โ |
| Mem0 | โ | โ | โ | โ |
| OMP | โ | โ | โ | โ |
| Portable Memory | โ | โ | โ | โ |
| memshare | โ | โ | โ | โ |
Get started
Or try the whole flow first in a sandbox that never touches your real store โ see the repo.
npm install -g memshare-mcp memshare init claude mcp add memshare --scope user -- npx -y memshare-mcp serve
That is the whole setup. Restart your assistant and it can recall and save straight away. --scope user because the store is yours, not one project’s; npx because a client started from a desktop icon rather than a shell often cannot find a globally installed binary.
memshare init is the line that makes it stick โ it writes a standing request into the instruction files your assistant already reads at the start of every session. Nothing in MCP can make a model decide to call a tool.
Same first two lines. Then, instead of claude mcp add, put the server in whichever file your client keeps its MCP config in:
{
"mcpServers": {
"memshare": {
"command": "npx",
"args": ["-y", "memshare-mcp", "serve"]
}
}
}
Any MCP client works, and they all read the same local store โ so what you save in Cursor is there in Claude Code.