Mindpm
About
Persistent project & task management for AI coding assistants. Track tasks, decisions, and notes across sessions with a real-time Kanban board. Works with Claude Code, Cursor, Cline, Copilot, and Windsurf.
Details
- Author
- umitkavala
- Downloads
- 371
- Categories
- Productivity, Project Management, Automation, Other, AI
Jump to
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
MindpmCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
{
"mcpServers": {
"mindpm": {
"command": "npx",
"args": [
"-y",
"mindpm"
],
"env": {
"MINDPM_DB_PATH": "~/.mindpm/memory.db",
"MINDPM_PORT": "3131"
}
}
}
}
create_project
Create a new project to track. Use this when starting a new project or when a user mentions a project that doesn't exist yet.
list_projects
List all tracked projects. Filter by status to see active, paused, completed, or archived projects.
get_project_status
Get a full overview of a project: active tasks, recent decisions, blockers, and last session summary. Great for getting up to speed.
set_project_repo_path
Set or update the local git repository path for a project. Required for the session brief to include git activity (commits, branch, working-tree state) since the last session.
create_task
Create a new task in a project. Proactively use this when the user mentions something that needs to be done, a bug to fix, or a feature to build.
update_task
Update any field of a task. Proactively use this when a task status changes, priorities shift, or new information comes in.
list_tasks
List tasks with filters. Defaults to showing non-completed tasks for the most recent active project.
get_task
Get full detail for a specific task including sub-tasks and related notes.
get_next_tasks
Smart query: what should be worked on next? Returns highest priority non-blocked tasks for a project.
log_decision
Record a decision with reasoning and alternatives considered. Proactively use this when the user makes a technical decision, chooses between options, or settles a debate.
list_decisions
List decisions for a project. Filter by tags to find specific decisions.
add_note
Add a note to a project or task. Proactively use this when the user shares context about architecture, bugs, ideas, research findings, or any important information worth remembering. Always specify the project parameter when you know which project is active.
search_notes
Full-text search across notes for a project.
set_context
Set a key-value context pair for a project (upsert). Proactively use this when the user shares important project context like architecture decisions, config values, conventions, or constraints.
get_context
Get context by key or list all context for a project.
start_session
Begin a work session for a project. Returns the full project overview including last session's next_steps, active tasks, blockers, and recent decisions. Call this at the start of every conversation. For multi-project conversations, call once per project — after that, pass `project` explicitly on every tool call. IMPORTANT: Always show the kanban_url to the user as a clickable link so they can open the Kanban board.
end_session
End a work session with a summary of what was accomplished and what to do next. Call this when the user is done working.
get_session_brief
Read-only: what changed since the last session ended — commits, branch and working-tree state, task status changes, new blockers, decisions, and notes. Unlike start_session, this does not open a session or mark one as started.
query
Execute a read-only SQL query against the database. Only SELECT statements are allowed. Use this for custom queries not covered by other tools.
get_project_summary
High-level summary of a project: total tasks by status, recent activity, open blockers, and upcoming priorities.
get_blockers
List all blocked tasks with what's blocking them.
search
Full-text search (FTS5, ranked by relevance) across tasks, notes, and decisions for a project.
get_agent_instructions
Returns the recommended instructions for using mindpm effectively. Call this once if you are unsure how to use mindpm, or share it with the user to paste into other LLM clients.
get_delivery_metrics
DORA-inspired delivery metrics for a project: throughput, lead time, flow efficiency, and performance tier. Use to understand delivery health and trends.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mindpm": {
"mindpm": {
"command": "npx",
"args": [
"-y",
"mindpm"
],
"env": {
"MINDPM_DB_PATH": "~/.mindpm/memory.db",
"MINDPM_PORT": "3131"
}
}
}
}
}
McpServers
{
"mindpm": {
"command": "npx",
"args": [
"-y",
"mindpm"
],
"env": {
"MINDPM_DB_PATH": "~/.mindpm/memory.db",
"MINDPM_PORT": "3131"
}
}
}
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.
- "Let me remind you about my project..."
- "Last time we decided to use Redis for..."
- "Where did we leave off?"
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."
- 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
mindpm includes a built-in Kanban UI. When the MCP server starts, it serves a web interface athttp://localhost:3131.
Everystart_sessioncall returns a direct link to your project's board:
Kanban board: http://localhost:3131?project=<project-id>
The port is configurable via theMINDPM_PORTenvironment variable.
get_project_statustells you what you were doing. Thesession brieftells you whatchanged while you were away— commits landed, the branch moved, the working tree got dirty, tasks changed status, blockers appeared, a decision was logged.
Everystart_sessioncall embeds a brief automatically (passbrief: falseto skip it), and you can also fetch one without opening a session viaget_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 passrepo_pathdirectly tocreate_project). Without a configured repo, the brief still reports the task/blocker/decision delta — it just skips the git section.
{ "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.labelissame-day(<6h),overnight(6-20h),multi-day(20h-14d), orstale(>14d) — a stale gap adds agap.hinttelling the agent to re-verify context rather than trustnext_stepsat face value.
The git delta is anchored on the exact commit sha recorded when the prior session ended (viaend_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 indegraded_reasons. A broken or missing repo never fails the brief — it just comes back withgit.available: falseanddegraded: true, while the task/blocker/decision delta is unaffected.
git clone https://github.com/umitkavala/mindpm.git cd mindpm npm install npm run build
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" } } } }
claude mcp add mindpm -e MINDPM_DB_PATH=~/.mindpm/memory.db -- npx -y mindpm
Cursor—.cursor/mcp.jsonin your project root (or~/.cursor/mcp.jsonglobally)
{ "mcpServers": { "mindpm": { "command": "npx", "args": ["-y", "mindpm"], "env": { "MINDPM_DB_PATH": "~/.mindpm/memory.db" } } } }
VS Code + Copilot—.vscode/mcp.jsonin 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 editcline_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.
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 theget_agent_instructionstool at any time to retrieve the instructions.
That's it. The LLM now has access to mindpm tools. Just start talking about your projects.
┌─────────────┐ MCP ┌─────────┐ SQLite ┌──────────┐ │ Claude Code │ ◄──────────► │ mindpm │ ◄────────────► │ memory.db│ │ / Desktop │ tools │ server │ read/write │ │ └─────────────┘ └─────────┘ └──────────┘
- You start a conversation and mention your project
- The LLM callsstart_session→ gets full context
- During the conversation, it creates tasks, logs decisions, adds notes
- When you're done, it callsend_session→ saves what's next
- Next conversation: instant context, zero re-explanation
Override withMINDPM_DB_PATHorPROJECT_MEMORY_DB_PATHenvironment variable.
Database and tables are created automatically on first run.
npm install npm run build # Build with tsup npm run typecheck # Type-check without emitting npm run dev # Build in watch mode
Keep teams & agents coordinated automatically
Connect to the Taskade platform via MCP. Access tasks, projects, workflows, and AI agents in real-time through a unified workspace and API.
The Outcome Backcasting MCP is a strategic planning tool that helps you work backwards from a desired future outcome to identify the specific steps, resources, and dependencies needed to achieve your goals. Unlike traditional forward planning, backcasting starts with your end goal and creates a reverse roadmap to get there.
Interact with the ClickUp API to manage tasks, lists, and spaces, automating project planning and workflows.
An MCP server for interacting with the Jira API to manage projects, issues, and workflows.
A Python monorepo for AI-powered project management and productivity servers, utilizing the Claude API.
Manage complex AI agent workflows with a Kanban-based task management system.
Integrate AI applications with the Rework platform to manage projects, tasks, workflows, and jobs.
Interact with task, doc, and project data in Dart, an AI-native project management tool
Perform queries and entity operations in your Fibery workspace.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.


