MemPalace Cursor Plugin
A Cursor IDE plugin that gives your agent a persistent memory system. Auto-registers the mempalace-mcp server (35 MCP tools), ships 5 slash commands, two model-invocable skills (setup/mining/search and a recall protocol), and an optional recall rule.
Hooks (auto-save + session-start memory recall) are shipped separately under
hooks/cursor/so the plugin is safe to install in any Cursor workspace without touching the agent loop. See Hooks below.
Prerequisites
- Python 3.9+
- Cursor 1.7+ (plugin manifest schema requires it)
Installation
Local clone (recommended while not in the marketplace yet)
Symlink (or copy) this repository into Cursor's local plugins folder:
ln -s /path/to/mempalace ~/.cursor/plugins/local/mempalace
Then in Cursor: Cmd-Shift-P → Developer: Reload Window.
Marketplace
Once published, install via the Cursor marketplace panel and select mempalace. Required-plugin distribution from a team marketplace is also supported.
Post-Install Setup
After installing the plugin, run the init command in a Cursor chat:
/mempalace-init
(Or just say "use the mempalace skill" — Cursor will model-invoke the bundled skill.)
This installs the mempalace package via uv tool or pip, initializes a palace under ~/.mempalace/, and verifies the MCP server is reachable.
Available Slash Commands
| Command | Description |
|---|---|
/mempalace-help |
Show available tools, skills, CLI commands, hooks, and architecture |
/mempalace-init |
Set up MemPalace — install, configure, onboard |
/mempalace-search |
Search your memories across the palace using semantic search |
/mempalace-mine |
Mine projects and conversations into the palace |
/mempalace-status |
Show palace overview — wings, rooms, drawer counts |
Cursor commands are global, not plugin-namespaced — that's why each slug is prefixed with
mempalace-rather than appearing as/help,/init, etc. This keeps them collision-free with built-in or other-plugin commands.
Skills
Two model-invocable skills ship at the plugin root under skills/:
| Skill | What it does |
|---|---|
mempalace |
Setup, mining, status, and the dynamic mempalace instructions CLI. |
mempalace-recall |
Search-before-answer protocol — makes the agent read the palace before answering about past work, people, projects, or prior decisions instead of guessing. |
Cursor surfaces these automatically when a request matches their description, or you can attach them explicitly.
Recall rule (optional)
The plugin also ships a Cursor rule at the plugin root under rules/mempalace-recall.mdc:
description: When the user asks about past work, prior decisions, people, ... call mempalace_search before answering ...
alwaysApply: false
It is alwaysApply: false on purpose — Cursor loads it only when its matcher judges the turn recall-relevant, so it never fires on unrelated coding work and never adds MCP latency to greenfield tasks. The rule, the mempalace-recall skill, and the sessionStart hook all reference the same canonical protocol in integrations/shared/recall-protocol.md.
Want recall forced into every conversation regardless of context? Copy the aggressive alwaysApply: true variant from examples/cursor/rules/ into ~/.cursor/rules/. That is a deliberate, heavier opt-in, not a default.
MCP Server
This plugin ships mcp.json at the plugin root, so Cursor auto-loads the mempalace-mcp server on plugin install:
{
"mcpServers": {
"mempalace": {
"command": "mempalace-mcp"
}
}
}
All 34 MemPalace MCP tools (mempalace_search, mempalace_add_drawer, mempalace_diary_write, mempalace_check_duplicate, mempalace_diary_read, …) become available to the agent immediately. No manual ~/.cursor/mcp.json edit required.
If the server doesn't appear, confirm mempalace-mcp is on the user $PATH:
command -v mempalace-mcp
If it isn't, run /init (or mempalace install from a terminal) — mempalace-mcp is installed alongside the mempalace package.
Hooks (optional)
Cursor's hooks system is configured separately from plugins (in ~/.cursor/hooks.json or .cursor/hooks.json), so this plugin does not wire hooks itself. The MemPalace repository ships three Cursor-native hooks under hooks/cursor/ that you install with one command.
User scope — writes ~/.cursor/hooks.json, applies to every Cursor workspace (recommended):
hooks/cursor/install.sh --scope user --variant full
Project scope — writes .cursor/hooks.json under the current project only:
hooks/cursor/install.sh --scope project --variant full
What you get:
| Hook event | What it does |
|---|---|
sessionStart |
Injects an additional_context recap of relevant memories scoped to the workspace wing |
stop |
Counts agent turns; every N turns, emits a followup_message instructing a memory checkpoint |
preCompact |
Synchronously mines the transcript before compaction, drops a marker so the next stop saves a diary |
Full details: website/guide/cursor-hooks.md and hooks/cursor/README.md.
Uninstall
Remove the local plugin symlink:
rm ~/.cursor/plugins/local/mempalace
Then in Cursor: Cmd-Shift-P → Developer: Reload Window.
If you also installed the hooks, remove them (leaves any unrelated hooks in hooks.json untouched):
hooks/cursor/install.sh --scope user --uninstall
Full Documentation
See the main README for complete documentation, architecture details, and advanced usage.