MonkeyPlanner
Memoria de tareas con prioridad local para tus agentes de codificación IA. Aprueba con un clic; tus agentes hacen el resto. Sin nube. Sin telemetría. Siempre gratis, siempre bajo licencia MIT.
Funciona con Claude Code · Claude Desktop · Cursor · Continue · cualquier cliente compatible con MCP.
Inicio rápido
# Docker (recommended)
docker run -p 8080:8080 -v $(pwd)/data:/data ghcr.io/kjm99d/monkeyplanner:latest
# then wire up your agent
monkey-planner mcp install --for claude-code # or --for cursor / --for claude-desktopAbre http://localhost:8080 — el tablero de bienvenida integrado te guiará a través del resto.
Related MCP server: task-orchestrator
Características
Gestión de problemas y tableros
Tablero Kanban — Arrastrar y soltar, desplazamiento horizontal, filtrado, ordenación y alternancia de vista de tabla
Creación de problemas — Título, cuerpo en markdown y propiedades personalizadas
Propiedades personalizadas — Seis tipos admitidos:
Texto
Número
Selección
Selección múltiple
Fecha
Casilla de verificación
Control de aprobación
Pendiente → Aprobado mediante un punto de conexión de aprobación dedicado (no se puede realizar mediante un PATCH genérico)
Cola de aprobación — Aprobar en masa todos los problemas pendientes en todos los tableros
Aprobado → En progreso → Hecho — Transiciones de estado flexibles
Estado rechazado — Registrar un motivo de rechazo
Características del agente
Campo de instrucciones del agente — Proporciona instrucciones detalladas para que las sigan los agentes MCP
Criterios de éxito — Gestiona las condiciones de finalización como una lista de verificación
Comentarios — Registra el progreso y comunícate por problema
Dependencias — Expresa relaciones de bloqueo entre problemas
Visualización de datos
Calendario — Cuadrícula mensual + actividad diaria (recuentos de creados, aprobados y completados)
Panel de control — Tarjetas de estadísticas + gráfico de actividad semanal
Barra lateral — Lista de tableros, recuentos de problemas y elementos recientes
Experiencia de usuario
Búsqueda global — Búsqueda rápida con Cmd+K
Atajos de teclado
h— Ir al panel de controla— Ir a la cola de aprobación?— Mostrar ayuda de atajosCmd+S— GuardarEscape— Cerrar modal/diálogo
Barra lateral plegable — Maximiza el espacio en pantalla
Modo oscuro — Alternancia de tema
Internacionalización — Coreano, inglés, japonés y chino
Automatización e integraciones
Webhooks — Soporte para Discord, Slack y Telegram
Eventos:
issue.created,issue.approved,issue.status_changed,issue.updated,issue.deleted,comment.created
Sincronización de interfaz en tiempo real (SSE) — Los cambios realizados a través de MCP/CLI se reflejan automáticamente en las pestañas del navegador abiertas, sin necesidad de actualizar
Exportación JSON — Exportar todos los datos de problemas
Menú contextual de clic derecho — Acciones rápidas
Plantillas de problemas — Persistencia en localStorage por tablero
Servidor MCP (Integración de agente IA)
Trece herramientas para la automatización de agentes IA:
list_boards— Listar todos los tableroslist_issues— Consultar problemas (filtrar por boardId, estado)get_issue— Detalle del problema, incluidas instrucciones, criterios y comentarioscreate_issue— Crear un nuevo problemaapprove_issue— Aprobar: Pendiente → Aprobadoclaim_issue— Reclamar: Aprobado → En progresosubmit_qa— Enviar para control de calidad: En progreso → QAcomplete_issue— Completar: QA → Hecho (comentario opcional)reject_issue— Rechazar: QA → En progreso con motivo obligatorioadd_comment— Añadir un comentario a un problemaupdate_criteria— Marcar o desmarcar un criterio de éxitosearch_issues— Buscar problemas por títuloget_version— Obtener la versión del servidor MCP (para diagnóstico)
Stack tecnológico
Backend
Lenguaje: Go 1.26
Enrutador: chi/v5
Base de datos: SQLite / PostgreSQL (configurable)
Migraciones: goose/v3
Archivos incrustados: embed.FS (despliegue de binario único)
Frontend
Framework: React 18
Lenguaje: TypeScript
Empaquetador: Vite 6
CSS: Tailwind CSS
Gestión de estado: React Query (TanStack)
Arrastrar y soltar: @dnd-kit/core, @dnd-kit/sortable
Iconos: lucide-react
Gráficos: recharts
i18n: react-i18next
Markdown: react-markdown + rehype-sanitize
MCP
Protocolo: JSON-RPC 2.0 sobre stdio
Objetivos: Claude Code, Claude Desktop
Primeros pasos
Requisitos
Go 1.26 o posterior
Node.js 18 o posterior
npm o yarn
Instalación y ejecución
1. Clonar e inicializar
git clone https://github.com/kjm99d/MonkeyPlanner.git
cd monkey-planner
make init2. Compilación de producción (binario único)
make build
./bin/monkey-plannerEl servidor se ejecuta en http://localhost:8080 con el frontend incrustado.
3. Modo de desarrollo (procesos separados)
Terminal 1 — backend:
make run-backendTerminal 2 — frontend (servidor de desarrollo Vite, :5173):
make run-frontendEl frontend redirige automáticamente las solicitudes /api a :8080.
Variables de entorno
# Server address (default: :8080)
export MP_ADDR=":8080"
# Database connection string
# SQLite (default: sqlite://./data/monkey.db)
export MP_DSN="sqlite://./data/monkey.db"
# PostgreSQL example
export MP_DSN="postgres://user:password@localhost:5432/monkey_planner"Configuración del servidor MCP
Recomendado: configuración automática mediante CLI
# Claude Code (writes .mcp.json in the current directory)
monkey-planner mcp install --for claude-code
# Claude Desktop (writes the OS-native config file)
monkey-planner mcp install --for claude-desktop
# Cursor (writes .cursor/mcp.json)
monkey-planner mcp install --for cursorFlags: --dry-run para previsualizar, --scope user para una entrada global (~/.mcp.json), --force para sobrescribir, --base-url <url> para apuntar a un servidor no predeterminado.
Reinicia el cliente después para que vuelva a leer la configuración.
Configuración manual
Funciona de forma idéntica para Claude Code (.mcp.json), Claude Desktop (configuración nativa del SO) y Cursor (.cursor/mcp.json):
{
"mcpServers": {
"monkey-planner": {
"command": "/path/to/monkey-planner",
"args": ["mcp"],
"env": {
"MP_BASE_URL": "http://localhost:8080"
}
}
}
}El binario debe poder acceder al servidor HTTP (configurado con MP_BASE_URL). Déjalo en el valor predeterminado cuando ejecutes ambos en la misma máquina.
Ejemplos de uso de herramientas MCP
AI: List all boards
→ list_boards()
AI: Find issues related to "authentication"
→ search_issues(query="authentication")
AI: Approve the first pending issue, claim it, work on it, and submit for QA
→ approve_issue() → claim_issue() → submit_qa()Flujo de trabajo — Escenario de uso real
A continuación se muestra un flujo de trabajo real para corregir un error en el selector de idioma, mostrando cómo un humano y un agente de IA colaboran a través de MonkeyPlanner.
Flujo de estado
Pending → Approved → InProgress → QA → Done
↑ │ (reject with reason)
└──────────────┘Paso a paso
1. Crear problema — El humano encuentra un error, pide a la IA que lo registre
Human: "The language selector dropdown doesn't appear when clicking the button. Create an issue."
AI: create_issue(boardId, title, body, instructions) → status: Pending2. Aprobar — El humano revisa y aprueba
Human: (clicks Approve on the board or tells AI)
AI: approve_issue(issueId) → status: Approved3. Comenzar trabajo — La IA reclama el problema y comienza a codificar
AI: claim_issue(issueId) → status: InProgress
- Reads code, identifies root cause
- Implements fix, runs tests
- Commits changes4. Enviar para QA — La IA termina y envía para revisión
AI: submit_qa(issueId, comment: "commit abc1234 — fixed click handler")
→ status: QA
add_comment(issueId, "Commit info: ...")5. Revisión — El humano prueba la corrección
Human: Tests in browser, finds the dropdown is clipped by sidebar
→ reject_issue(issueId, reason: "Dropdown is hidden behind sidebar")
→ status: InProgress (back to step 3)
Human: Tests again after fix, everything works
→ complete_issue(issueId) → status: Done6. Bucle de retroalimentación — Comunicación mediante comentarios durante todo el proceso
Human: add_comment("Dropdown is clipped on the left side, fix it")
AI: get_issue() → reads comment → fixes → commit → submit_qa()
Human: Tests → complete_issue() → Done ✓Puntos clave
El humano controla las puertas: Aprobar, pasar/rechazar QA, Completar
La IA hace el trabajo: Análisis de código, implementación, pruebas, confirmaciones
Los comentarios son el canal de comunicación: Ambas partes usan
add_commentpara intercambiar comentariosEl bucle de QA evita la finalización prematura: Los problemas deben pasar la revisión humana antes de marcarse como Hecho
Referencia de API
Especificación OpenAPI 3.0: backend/docs/swagger.yaml
Puntos de conexión clave
Tableros
GET /api/boards # List boards
POST /api/boards # Create board
PATCH /api/boards/{id} # Update board
DELETE /api/boards/{id} # Delete boardProblemas
GET /api/issues # List issues (filter: boardId, status, parentId)
POST /api/issues # Create issue
GET /api/issues/{id} # Issue detail + child issues
PATCH /api/issues/{id} # Update issue (status, properties, title, etc.)
DELETE /api/issues/{id} # Delete issue
POST /api/issues/{id}/approve # Approve issue (Pending → Approved)Comentarios
GET /api/issues/{issueId}/comments # List comments
POST /api/issues/{issueId}/comments # Add comment
DELETE /api/comments/{commentId} # Delete commentPropiedades (Atributos personalizados)
GET /api/boards/{boardId}/properties # List property definitions
POST /api/boards/{boardId}/properties # Create property
PATCH /api/boards/{boardId}/properties/{propId} # Update property
DELETE /api/boards/{boardId}/properties/{propId} # Delete propertyWebhooks
GET /api/boards/{boardId}/webhooks # List webhooks
POST /api/boards/{boardId}/webhooks # Create webhook
PATCH /api/boards/{boardId}/webhooks/{whId} # Update webhook
DELETE /api/boards/{boardId}/webhooks/{whId} # Delete webhookCalendario
GET /api/calendar # Monthly stats (year, month required)
GET /api/calendar/day # Daily issue list (date required)Para obtener detalles completos del esquema, consulta backend/docs/swagger.yaml.
Estructura del proyecto
monkey-planner/
├── backend/
│ ├── cmd/monkey-planner/
│ │ ├── main.go # Entry point (HTTP server)
│ │ └── mcp.go # MCP server (JSON-RPC stdio)
│ ├── internal/
│ │ ├── domain/ # Domain models (Issue, Board, etc.)
│ │ ├── service/ # Business logic
│ │ ├── storage/ # Database layer (SQLite/PostgreSQL)
│ │ ├── http/ # HTTP handlers & router
│ │ └── migrations/ # goose migration files
│ ├── web/ # Embedded frontend (embed.FS)
│ ├── docs/
│ │ └── swagger.yaml # OpenAPI 3.0 spec
│ ├── go.mod
│ └── go.sum
│
├── frontend/
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ ├── features/ # Page & feature components
│ │ │ ├── home/ # Dashboard
│ │ │ ├── board/ # Board & Kanban
│ │ │ ├── issue/ # Issue detail
│ │ │ ├── calendar/ # Calendar
│ │ │ └── approval/ # Approval queue
│ │ ├── api/ # API hooks & client
│ │ ├── design/ # Tailwind tokens
│ │ ├── i18n/ # Translations (en.json, ko.json, ja.json, zh.json)
│ │ ├── App.tsx # Router
│ │ ├── index.css # Global styles
│ │ └── main.tsx
│ ├── package.json
│ ├── vite.config.ts
│ ├── tsconfig.json
│ └── tailwind.config.js
│
├── .mcp.json # Claude Code MCP config
├── Makefile # Build & dev commands
├── .githooks/ # Git hooks
└── data/ # SQLite database (default)Pruebas
Pruebas de backend
make test-backendPruebas de frontend
make test-frontendPruebas de accesibilidad
make test-a11yTodas las pruebas
make testComandos comunes
# Initial setup after cloning
make init
# Production build
make build
# Run production server
./bin/monkey-planner
# Development mode
make run-backend # Terminal 1
make run-frontend # Terminal 2
# Clean build artifacts
make cleanReglas de transición de estado
Pending
↓ (approve endpoint)
Approved
↓ (PATCH status)
InProgress
↓ (PATCH status)
Done
Pending → Approved: POST /api/issues/{id}/approve (dedicated endpoint only)
Approved ↔ InProgress ↔ Done: Free transitions via PATCH
Pending: Cannot be re-entered from other statuses
Rejected: Separate rejection state with reason trackingLicencia
MIT
Contribución
Los problemas y las solicitudes de extracción son bienvenidos.
Contacto
Para preguntas o comentarios sobre el proyecto, por favor abre un Issue en GitHub.
This server cannot be installed
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/kjm99d/MonkeyPlanner'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
