PluginBench
MCP Server
Active
Apache-2.0

io.github.umitkavala/mindpm MCP Server

io.github.umitkavala/mindpm

Persistent SQLite-backed project memory for LLMs—never re-explain your project again.

What is the io.github.umitkavala/mindpm MCP server?

mindpm is an MCP server that gives LLMs a SQLite-backed brain for your projects, tracking tasks, decisions, architecture notes, and session context. It enables every new conversation to pick up exactly where you left off, eliminating the need to re-explain project state. The server includes a built-in Kanban UI and session briefs that capture what changed since your last session.

mindpm solves the problem of LLMs starting from zero in every new chat by persisting your project state in a local SQLite database. It tracks tasks, decisions, notes, and context, and provides a session brief that shows what changed (git commits, task status shifts, new blockers) since you last worked. Use it to maintain continuous project context across multiple conversations without relying on chat history.

How to install io.github.umitkavala/mindpm

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • MINDPM_DB_PATH

    Path to the SQLite database file

  • MINDPM_PORT

    Port for the built-in Kanban board UI

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "mindpm": {
      "command": "npx",
      "args": [
        "-y",
        "mindpm"
      ],
      "env": {
        "MINDPM_DB_PATH": "<YOUR_MINDPM_DB_PATH>",
        "MINDPM_PORT": "<YOUR_MINDPM_PORT>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • 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 to enable git delta in session briefs
  • create_task — Add a task
  • update_task — Update task status, priority, blockers, etc.
  • list_tasks — List tasks with filters
  • get_task — Full task detail with sub-tasks and notes
  • get_next_tasks — Smart task suggestion: highest priority, unblocked tasks
  • log_decision — Record a decision with reasoning and alternatives
  • list_decisions — Browse decision history
  • add_note — Add a note (architecture, bug, idea, research, etc.)
  • search_notes — Full-text search across notes
  • set_context — Store key-value context (tech stack, conventions, config)
  • get_context — Retrieve stored context
  • start_session — Get full project context, last session's next steps, and session brief
  • end_session — Record session summary and next steps
  • get_session_brief — Read-only: what changed since last session ended, without opening a session
  • query — Read-only SQL queries against the database
  • get_project_summary — Tasks by status, blockers, and recent activity

Use cases

  • Start a new conversation and instantly resume where you left off without re-explaining your project state
  • Track tasks, priorities, and blockers across multiple chat sessions and maintain continuity
  • Log architectural decisions and reasoning so future conversations understand why choices were made
  • Monitor what changed since your last session (git commits, task status shifts, new blockers) via the session brief
  • Use the built-in Kanban board UI to visualize and manage project tasks across sessions

io.github.umitkavala/mindpm MCP server FAQ

What is mindpm?

mindpm is an MCP server that gives LLMs persistent project memory via SQLite. It tracks tasks, decisions, notes, and context so every new conversation picks up exactly where you left off, eliminating the need to re-explain your project.

Is mindpm free?

Yes, mindpm is open-source under the MIT license. It runs locally on your machine and stores data in a local SQLite database.

How do I install mindpm in Cursor or Claude?

Install via npm (`npm install -g mindpm`), then add the MCP server configuration to your client's config file. For Cursor, add it to `.cursor/mcp.json` in your project root. For Claude Desktop, use `~/.claude/claude_desktop_config.json`. See the README for exact config examples for each client.

Do I need authentication or API keys?

No. mindpm is entirely local—it stores everything in a SQLite database on your machine and does not require any external authentication or API keys.

What does the session brief show?

The session brief shows what changed since your last session: git commits (if you configure a repo path), task status changes, new blockers, decisions logged, and notes added. It uses git SHA anchoring to survive rebases and is fully deterministic with no network calls.

Can I use mindpm with multiple LLM clients?

Yes. All clients share the same `~/.mindpm/memory.db` database, so you can switch between Claude, Cursor, VS Code, Cline, or Windsurf mid-project without losing context.

README (reference)

Source of truth, from the repository.

mindpm

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.

The Problem

Every new LLM chat starts from zero:

  • "Let me remind you about my project..."
  • "Last time we decided to use Redis for..."
  • "Where did we leave off?"

The Solution

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.

You: "What should I work on next?"
LLM: [queries mindpm] "Last session you finished the auth refactor.
      You have 3 high-priority tasks: rate limiting, API docs, and
      the webhook retry bug. Rate limiting is unblocked — start there."

What It Tracks

  • Tasks — status, priority, blockers, sub-tasks
  • Decisions — what was decided, why, what alternatives were rejected
  • Notes — architecture, bugs, ideas, research
  • Context — key-value pairs (tech stack, conventions, config)
  • Sessions — what was done, what's next

Kanban Board

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:

Kanban board: http://localhost:3131?project=<project-id>

The port is configurable via the MINDPM_PORT environment variable.

Session Brief

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:

set_project_repo_path(project: "my-app", repo_path: "/Users/you/code/my-app")

(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:

{
  "project": "my-app",
  "degraded": false,
  "degraded_reasons": [],
  "gap": {
    "last_session_ended_at": "2026-08-08T22:14:03.000Z",
    "hours_elapsed": 11.3,
    "label": "overnight"
  },
  "handoff": {
    "last_session_summary": "Finished the auth refactor",
    "next_steps": "Wire up rate limiting, then tackle the webhook retry bug"
  },
  "git": {
    "available": true,
    "anchor": "sha",
    "branch_then": "feat/phase-3",
    "branch_now": "feat/phase-3",
    "branch_changed": false,
    "commits": [
      { "sha": "a1b2c3d", "author": "umit", "date": "2026-08-09T09:02:11+00:00", "subject": "Add rate limit middleware" }
    ],
    "commit_count": 4,
    "commits_truncated": false,
    "files_changed": [
      { "path": "src/middleware/rate-limit.ts", "added": 82, "deleted": 11 }
    ],
    "files_changed_truncated": false,
    "working_tree_dirty": true,
    "untracked_count": 2,
    "stash_count": 0
  },
  "tasks": {
    "changed": [
      { "id": "a1b2c3d4", "title": "Add rate limiting", "from_status": "in_progress", "to_status": "done", "at": "2026-08-09T09:05:00.000Z" }
    ],
    "in_progress_now": [{ "id": "e5f6a7b8", "title": "Webhook retry bug" }],
    "next_suggested": [{ "id": "c9d0e1f2", "title": "Write API docs", "priority": "high" }]
  },
  "blockers": [],
  "decisions_since": [
    { "id": "9f8e7d6c", "title": "Use token bucket for rate limiting", "at": "2026-08-09T09:00:00.000Z" }
  ],
  "notes_since_count": 3
}

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.

Setup

Install

npm install -g mindpm

Or run from source:

git clone https://github.com/umitkavala/mindpm.git
cd mindpm
npm install
npm run build

Configure your MCP client

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

{
  "mcpServers": {
    "mindpm": {
      "command": "mindpm",
      "env": {
        "MINDPM_DB_PATH": "~/.mindpm/memory.db",
        "MINDPM_PORT": "3131"
      }
    }
  }
}

Or use the one-liner:

claude mcp add mindpm -e MINDPM_DB_PATH=~/.mindpm/memory.db -- npx -y mindpm

Cursor — .cursor/mcp.json in your project root (or ~/.cursor/mcp.json globally)

{
  "mcpServers": {
    "mindpm": {
      "command": "npx",
      "args": ["-y", "mindpm"],
      "env": {
        "MINDPM_DB_PATH": "~/.mindpm/memory.db"
      }
    }
  }
}

VS Code + Copilot — .vscode/mcp.json in your project root

{
  "servers": {
    "mindpm": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mindpm"],
      "env": {
        "MINDPM_DB_PATH": "~/.mindpm/memory.db"
      }
    }
  }
}

Cline — Add via VS Code settings → Cline → MCP Servers, or edit cline_mcp_settings.json:

{
  "mcpServers": {
    "mindpm": {
      "command": "npx",
      "args": ["-y", "mindpm"],
      "env": {
        "MINDPM_DB_PATH": "~/.mindpm/memory.db"
      }
    }
  }
}

Windsurf — Settings → Cascade → MCP, using the same JSON structure as Cline above.

Using mindpm with any LLM

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.

Start Using

That's it. The LLM now has access to mindpm tools. Just start talking about your projects.

MCP Tools

Projects

ToolDescription
create_projectCreate a new project
list_projectsList all projects
get_project_statusFull project overview
set_project_repo_pathSet/update the project's local git repo path (enables the session brief's git delta)

Tasks

ToolDescription
create_taskAdd a task
update_taskUpdate status, priority, etc.
list_tasksList with filters
get_taskFull task detail with sub-tasks and notes
get_next_tasksSmart: highest priority, unblocked

Decisions

ToolDescription
log_decisionRecord a decision with reasoning
list_decisionsBrowse decision history

Notes & Context

ToolDescription
add_noteAdd a note (architecture, bug, idea, etc.)
search_notesFull-text search
set_contextStore key-value context
get_contextRetrieve context

Sessions

ToolDescription
start_sessionGet full project context + last session's next steps + session brief
end_sessionRecord summary + what to do next time
get_session_briefRead-only: what changed since the last session ended, without opening a session

Query

ToolDescription
queryRead-only SQL against the database
get_project_summaryTasks by status, blockers, recent activity
get_blockersAll blocked tasks with what's blocking them
searchFull-text search across everything

How It Works

┌─────────────┐     MCP      ┌─────────┐     SQLite     ┌──────────┐
│  Claude Code │ ◄──────────► │ mindpm  │ ◄────────────► │ memory.db│
│  / Desktop   │   tools      │ server  │   read/write   │          │
└─────────────┘               └─────────┘                └──────────┘
  1. You start a conversation and mention your project
  2. The LLM calls start_session → gets full context
  3. During the conversation, it creates tasks, logs decisions, adds notes
  4. When you're done, it calls end_session → saves what's next
  5. Next conversation: instant context, zero re-explanation

Storage

Default: ~/.mindpm/memory.db

Override with MINDPM_DB_PATH or PROJECT_MEMORY_DB_PATH environment variable.

Database and tables are created automatically on first run.

Development

npm install
npm run build       # Build with tsup
npm run typecheck   # Type-check without emitting
npm run dev         # Build in watch mode

License

MIT

Related MCP servers

Self-hosted WordPress MCP server with per-capability permission controls and a full audit log.

2
PHP
GPL-2.0
View repository →

One website's first-party API as MCP tools, e.g. airbnb.com. Thousands of sites indexed.

0
TypeScript
View repository →
UNUnbrowse logo

Unbrowse

Active

Route layer for AI agents: learn website APIs from browsing, reuse them for 3.6× speedup, keep credentials local.

769
TypeScript
MIT
View repository →

Read-only MCP server for Hostaway PMS — guest conversations, reservations, and listings

0
TypeScript
MIT
View repository →
XBxbbg MCP logo

xbbg MCP

Active

Local Bloomberg tools for xbbg users via MCP.

704
Rust
Apache-2.0
View repository →
KMKMP logo

KMP

Active

Local-first agent memory that preserves what happened, when and why

0
Rust
Apache-2.0
View repository →