mindpm

Gestión persistente de proyectos y tareas para asistentes de codificación de IA. Realiza un seguimiento de tareas, decisiones y notas entre sesiones con un tablero Kanban en tiempo real. Funciona con Claude Code, Cursor, Cline, Copilot y Windsurf.

Documentación

mindpm

Memoria persistente de proyectos para LLMs. Nunca vuelvas a explicar tu proyecto.

mindpm es un servidor MCP (Model Context Protocol) que les da a los LLMs un cerebro respaldado por SQLite para tus proyectos. Realiza un seguimiento de tareas, decisiones, notas de arquitectura y contexto de sesión, para que cada nueva conversación continúe exactamente donde la dejaste.

El Problema

Cada nuevo chat con un LLM comienza desde cero:

  • "Déjame recordarte sobre mi proyecto..."
  • "La última vez decidimos usar Redis para..."
  • "¿Dónde lo dejamos?"

La Solución

mindpm persiste el estado de tu proyecto en una base de datos SQLite local. El LLM lee y escribe en ella a través de las herramientas MCP. No se necesita historial de chat. No se necesitan funciones de memoria.

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."

Lo Que Rastrea

  • Tareas — estado, prioridad, bloqueos, subtareas
  • Decisiones — qué se decidió, por qué, qué alternativas fueron rechazadas
  • Notas — arquitectura, errores, ideas, investigación
  • Contexto — pares clave-valor (stack tecnológico, convenciones, configuración)
  • Sesiones — qué se hizo, qué sigue

Tablero Kanban

mindpm incluye una interfaz Kanban integrada. Cuando el servidor MCP se inicia, sirve una interfaz web en http://localhost:3131.

Cada llamada a start_session devuelve un enlace directo al tablero de tu proyecto:

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

El puerto es configurable mediante la variable de entorno MINDPM_PORT.

Resumen de Sesión

get_project_status te dice qué estabas haciendo. El resumen de sesión te dice qué cambió mientras estabas ausente: commits realizados, la rama se movió, el árbol de trabajo se ensució, las tareas cambiaron de estado, aparecieron bloqueos, se registró una decisión.

Cada llamada a start_session incorpora un resumen automáticamente (pasa brief: false para omitirlo), y también puedes obtener uno sin abrir una sesión mediante get_session_brief. Es completamente determinista — no se realizan llamadas a LLMs dentro de mindpm — y nunca toca la red: todo proviene de subprocesos locales de git y de la base de datos SQLite local.

Para obtener actividad de git en el resumen, indícale a mindpm dónde está tu repositorio:

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

(o pasa repo_path directamente a create_project). Sin un repositorio configurado, el resumen aún informa el delta de tareas/bloqueos/decisiones — solo omite la sección de git.

Ejemplo de salida:

{
  "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 es same-day (<6h), overnight (6-20h), multi-day (20h-14d), or stale (>14d) — una brecha obsoleta agrega un gap.hint que le indica al agente re-verificar el contexto en lugar de confiar en next_steps a primera vista.

El delta de git está anclado en el sha exacto del commit registrado cuando terminó la sesión anterior (mediante end_session), no en una marca de tiempo — el anclaje basado en sha sobrevive a rebases y enmiendas que romperían un diff basado en reloj. Si ese sha se vuelve inalcanzable (force-push, rebase, o el repositorio fue podado), el resumen cae de forma transparente a un ancla de marca de tiempo y lo reporta en degraded_reasons. Un repositorio roto o faltante nunca falla el resumen — solo regresa con git.available: false y degraded: true, mientras que el delta de tareas/bloqueos/decisiones no se ve afectado.

Configuración

Instalación

npm install -g mindpm

O ejecuta desde el código fuente:

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

Configura tu cliente MCP

Todos los clientes usan el mismo formato JSON — solo difieren las ubicaciones de los archivos de configuración. Todos comparten el mismo ~/.mindpm/memory.db, por lo que puedes cambiar de herramienta a mitad de proyecto sin perder contexto.

Claude Code — ~/.claude/claude_desktop_config.json

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

O usa el comando de una línea:

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

Cursor — .cursor/mcp.json en la raíz de tu proyecto (o ~/.cursor/mcp.json globalmente)

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

VS Code + Copilot — .vscode/mcp.json en la raíz de tu proyecto

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

Cline — Agrégalo mediante Configuración de VS Code → Cline → Servidores MCP, o edita cline_mcp_settings.json:

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

Windsurf — Configuración → Cascade → MCP, usando la misma estructura JSON que Cline arriba.

Usando mindpm con cualquier LLM

En la primera ejecución, mindpm escribe ~/.mindpm/AGENT.md — un prompt de sistema listo para pegar que le dice a tu LLM cómo usar mindpm de forma proactiva. Pega su contenido en las instrucciones personalizadas o en el cuadro de prompt de sistema de tu cliente.

También puedes llamar a la herramienta get_agent_instructions en cualquier momento para recuperar las instrucciones.

Comienza a Usar

Eso es todo. El LLM ahora tiene acceso a las herramientas de mindpm. Solo comienza a hablar sobre tus proyectos.

Herramientas MCP

Proyectos

HerramientaDescripción
create_projectCrear un nuevo proyecto
list_projectsListar todos los proyectos
get_project_statusVista general completa del proyecto
set_project_repo_pathEstablecer/actualizar la ruta del repositorio git local del proyecto (habilita el delta de git del resumen de sesión)

Tareas

HerramientaDescripción
create_taskAgregar una tarea
update_taskActualizar estado, prioridad, etc.
list_tasksListar con filtros
get_taskDetalle completo de la tarea con subtareas y notas
get_next_tasksInteligente: mayor prioridad, sin bloqueos

Decisiones

HerramientaDescripción
log_decisionRegistrar una decisión con razonamiento
list_decisionsExplorar el historial de decisiones

Notas y Contexto

HerramientaDescripción
add_noteAgregar una nota (arquitectura, error, idea, etc.)
search_notesBúsqueda de texto completo
set_contextAlmacenar contexto clave-valor
get_contextRecuperar contexto

Sesiones

HerramientaDescripción
start_sessionObtener contexto completo del proyecto + próximos pasos de la última sesión + resumen de sesión
end_sessionRegistrar resumen + qué hacer la próxima vez
get_session_briefSolo lectura: qué cambió desde que terminó la última sesión, sin abrir una sesión

Consulta

HerramientaDescripción
querySQL de solo lectura contra la base de datos
get_project_summaryTareas por estado, bloqueos, actividad reciente
get_blockersTodas las tareas bloqueadas con qué las está bloqueando
searchBúsqueda de texto completo en todo

Cómo Funciona

┌─────────────┐     MCP      ┌─────────┐     SQLite     ┌──────────┐
│  Claude Code │ ◄──────────► │ mindpm  │ ◄────────────► │ memory.db│
│  / Desktop   │   tools      │ server  │   read/write   │          │
└─────────────┘               └─────────┘                └──────────┘
  1. Comienzas una conversación y mencionas tu proyecto
  2. El LLM llama a start_session → obtiene contexto completo
  3. Durante la conversación, crea tareas, registra decisiones, agrega notas
  4. Cuando terminas, llama a end_session → guarda qué sigue
  5. Siguiente conversación: contexto instantáneo, cero re-explicación

Almacenamiento

Predeterminado: ~/.mindpm/memory.db

Anula con la variable de entorno MINDPM_DB_PATH o PROJECT_MEMORY_DB_PATH.

La base de datos y las tablas se crean automáticamente en la primera ejecución.

Desarrollo

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

Licencia

MIT