Persistent project memory for LLMs via SQLite. Never re-explain your project again.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Persistent project memory for LLMs. Never re-explain your project again.
mindpm is an MCP (Model Context Protocol) server that gives LLMs a SQLite-backed brain for your projects. It tracks tasks, decisions, architecture notes, and session context β so every new conversation picks up exactly where you left off.
Every new LLM chat starts from zero:
mindpm persists your project state in a local SQLite database. The LLM reads and writes to it via MCP tools. No chat history needed. No memory features needed.
mindpm includes a built-in Kanban UI. When the MCP server starts, it serves a web interface at http://localhost:3131.
Every start_session call returns a direct link to your project's board:
The port is configurable via the MINDPM_PORT environment variable.
get_project_status tells you what you were doing. The session brief tells you what changed while you were away β commits landed, the branch moved, the working tree got dirty, tasks changed status, blockers appeared, a decision was logged.
Every start_session call embeds a brief automatically (pass brief: false to skip it), and you can also fetch one without opening a session via get_session_brief. It's fully deterministic β no LLM calls happen inside mindpm β and it never touches the network: everything comes from local git subprocess calls and the local SQLite database.
To get git activity in the brief, tell mindpm where your repo lives:
(or pass repo_path directly to create_project). Without a configured repo, the brief still reports the task/blocker/decision delta β it just skips the git section.
Example output:
gap.label is same-day (<6h), overnight (6-20h), multi-day (20h-14d), or stale (>14d) β a stale gap adds a gap.hint telling the agent to re-verify context rather than trust next_steps at face value.
The git delta is anchored on the exact commit sha recorded when the prior session ended (via end_session), not on a timestamp β sha-based anchoring survives rebases and amends that would break a clock-based diff. If that sha becomes unreachable (force-push, rebase, or the repo was pruned), the brief transparently falls back to a timestamp anchor and reports it in degraded_reasons. A broken or missing repo never fails the brief β it just comes back with git.available: false and degraded: true, while the task/blocker/decision delta is unaffected.
Or run from source:
All clients use the same JSON format β just different config file locations. They all share the same ~/.mindpm/memory.db, so you can switch tools mid-project without losing context.
Claude Code β ~/.claude/claude_desktop_config.json
Or use the one-liner:
Cursor β .cursor/mcp.json in your project root (or ~/.cursor/mcp.json globally)
VS Code + Copilot β .vscode/mcp.json in your project root
Cline β Add via VS Code settings β Cline β MCP Servers, or edit cline_mcp_settings.json:
Windsurf β Settings β Cascade β MCP, using the same JSON structure as Cline above.
On first run, mindpm writes ~/.mindpm/AGENT.md β a ready-to-paste system prompt that tells your LLM how to use mindpm proactively. Paste its contents into your client's custom instructions or system prompt box.
You can also call the get_agent_instructions tool at any time to retrieve the instructions.
That's it. The LLM now has access to mindpm tools. Just start talking about your projects.
| Tool | Description |
|---|---|
create_project | Create a new project |
list_projects | List all projects |
get_project_status | Full project overview |
set_project_repo_path | Set/update the project's local git repo path (enables the session brief's git delta) |
| Tool | Description |
|---|---|
create_task | Add a task |
update_task | Update status, priority, etc. |
list_tasks | List with filters |
get_task | Full task detail with sub-tasks and notes |
get_next_tasks | Smart: highest priority, unblocked |
| Tool | Description |
|---|---|
log_decision | Record a decision with reasoning |
list_decisions | Browse decision history |
| Tool | Description |
|---|---|
add_note | Add a note (architecture, bug, idea, etc.) |
search_notes | Full-text search |
set_context | Store key-value context |
get_context | Retrieve context |
| Tool | Description |
|---|---|
start_session | Get full project context + last session's next steps + session brief |
end_session | Record summary + what to do next time |
get_session_brief | Read-only: what changed since the last session ended, without opening a session |
| Tool | Description |
|---|---|
query | Read-only SQL against the database |
get_project_summary | Tasks by status, blockers, recent activity |
get_blockers | All blocked tasks with what's blocking them |
search | Full-text search across everything |
start_session β gets full contextend_session β saves what's nextDefault: ~/.mindpm/memory.db
Override with MINDPM_DB_PATH or PROJECT_MEMORY_DB_PATH environment variable.
Database and tables are created automatically on first run.
MIT
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/mindpm)<a href="https://allmcps.com/mcp/mindpm"><img src="https://allmcps.com/api/badge/mindpm?style=directory" alt="Mindpm on AllMCPs" /></a>