MemPalace — Local AI Memory System
You have access to a local memory palace via MCP tools. The palace stores verbatim conversation history and a temporal knowledge graph — all on the user's machine, zero cloud, zero API calls.
Architecture
- Wings = people or projects (e.g.
wing_alice,wing_myproject) - Halls = categories (facts, events, preferences, advice)
- Rooms = specific topics (e.g.
chromadb-setup,riley-school) - Drawers = individual memory chunks (verbatim text)
- Knowledge Graph = entity-relationship facts with time validity
Protocol — FOLLOW THIS EVERY SESSION
- ON WAKE-UP: Call
mempalace_statusto load palace overview. - BEFORE RESPONDING about any person, project, or past event: call
mempalace_searchormempalace_kg_queryFIRST. Never guess from memory — verify from the palace. - IF UNSURE about a fact (name, age, relationship, preference): say "let me check" and query. Wrong is worse than slow.
- AFTER EACH SESSION: Call
mempalace_diary_writeto record what happened, what you learned, what matters. - WHEN FACTS CHANGE: Call
mempalace_kg_invalidateon the old fact, thenmempalace_kg_addfor the new one.
Available Tools
Search & Browse
mempalace_search— Semantic search across all memories. Always start here.query(required): natural language searchwing: filter by wingroom: filter by roomlimit: max results (default 5)
mempalace_status— Palace overview: total drawers, wings, roomsmempalace_list_wings— All wings with drawer countsmempalace_list_rooms— Rooms within a wingmempalace_get_taxonomy— Full wing/room/count tree
Knowledge Graph (Temporal Facts)
mempalace_kg_query— Query entity relationships. Supports time filtering.entity(required): e.g. "Max", "MyProject"as_of: date filter (YYYY-MM-DD) — what was true at that timedirection: "outgoing", "incoming", or "both"
mempalace_kg_add— Add a fact: subject -> predicate -> objectsubject,predicate,object(required)valid_from: when this became true
mempalace_kg_invalidate— Mark a fact as no longer truesubject,predicate,object(required)ended: when it stopped being true (default: today)
mempalace_kg_timeline— Chronological story of an entitymempalace_kg_stats— Graph overview: entities, triples, relationship types
Palace Graph (Cross-Domain Connections)
mempalace_traverse— Walk from a room, find connected ideas across wingsstart_room(required): room to start frommax_hops: connection depth (default 2)
mempalace_find_tunnels— Rooms that bridge two wingsmempalace_graph_stats— Graph connectivity overview
Write
mempalace_add_drawer— Store verbatim content into a wing/roomwing,room,content(required)- Checks for duplicates automatically
mempalace_delete_drawer— Remove a drawer by IDmempalace_diary_write— Write a session diary entryagent_name(required): your nameentry(required): what happened, what you learnedtopic: category tag
mempalace_diary_read— Read recent diary entries
Setup
The user needs to initialize and populate the palace first:
pip install mempalace
mempalace init ~/my-convos
mempalace mine ~/my-convos
Then connect via MCP (for Claude Code, Cursor, etc.):
claude mcp add mempalace -- python -m mempalace.mcp_server
For OpenClaw, add to your MCP config:
{
"mcpServers": {
"mempalace": {
"command": "python3",
"args": ["-m", "mempalace.mcp_server"]
}
}
}
Tips
- Search is semantic (meaning-based), not keyword. "What did we discuss about database performance?" works better than "database".
- The knowledge graph stores typed relationships with time windows. Use it for facts about people and projects — it knows WHEN things were true.
- Diary entries accumulate across sessions. Write one at the end of each conversation to build continuity.
- Wings auto-detect from directory names during mining. You can also create custom wings via
mempalace_add_drawer.
License & Attribution
This skill is an integration for MemPalace, created by Ben Sigman (@bensig), Igor Lins e Silva (@igorls), Milla Jovovich (@milla-jovovich), and adv3nt3 (@adv3nt3), licensed under the MIT License.
MIT License
Copyright (c) 2026 MemPalace Contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
扫码联系在线客服