MonkeyPlanner
MonkeyPlanner
Local-first Aufgabenverwaltung für Ihre KI-Coding-Agenten. Mit einem Klick genehmigen; Ihre Agenten erledigen den Rest. Keine Cloud. Keine Telemetrie. Für immer kostenlos, für immer MIT.
Funktioniert mit Claude Code · Claude Desktop · Cursor · Continue · jedem MCP-kompatiblen Client.

Schnellstart
# 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-desktopÖffnen Sie http://localhost:8080 — das integrierte Willkommens-Board führt Sie durch den Rest.
Related MCP server: mcp-kanban
Funktionen
Issue- & Board-Verwaltung
Kanban-Board — Drag & Drop, horizontales Scrollen, Filtern, Sortieren und Umschalten der Tabellenansicht
Issue-Erstellung — Titel, Markdown-Inhalt und benutzerdefinierte Eigenschaften
Benutzerdefinierte Eigenschaften — Sechs unterstützte Typen:
Text
Zahl
Auswahl (Select)
Mehrfachauswahl (Multi-select)
Datum
Kontrollkästchen (Checkbox)
Genehmigungs-Gate
Ausstehend → Genehmigt über einen dedizierten Genehmigungs-Endpunkt (nicht über generisches PATCH möglich)
Genehmigungswarteschlange — Massengenehmigung aller ausstehenden Issues über alle Boards hinweg
Genehmigt → In Bearbeitung → Erledigt — Flexible Statusübergänge
Status „Abgelehnt“ — Protokollierung eines Ablehnungsgrundes
Agenten-Funktionen
Feld für Agenten-Anweisungen — Geben Sie detaillierte Anweisungen für MCP-Agenten
Erfolgskriterien — Verwalten Sie Abschlussbedingungen als Checkliste
Kommentare — Protokollieren Sie den Fortschritt und kommunizieren Sie pro Issue
Abhängigkeiten — Definieren Sie blockierende Beziehungen zwischen Issues
Datenvisualisierung
Kalender — Monatsraster + tägliche Aktivität (Anzahl der erstellten, genehmigten und abgeschlossenen Issues)
Dashboard — Statistik-Karten + wöchentliches Aktivitätsdiagramm
Seitenleiste — Board-Liste, Issue-Anzahl und kürzlich bearbeitete Elemente
Benutzererfahrung
Globale Suche — Schnelle Suche mit Cmd+K
Tastaturkürzel
h— Zum Dashboarda— Zur Genehmigungswarteschlange?— Hilfe zu Tastaturkürzeln anzeigenCmd+S— SpeichernEscape— Modal/Dialog schließen
Einklappbare Seitenleiste — Maximierung des Bildschirmplatzes
Dunkelmodus — Theme-Umschalter
Internationalisierung — Koreanisch, Englisch, Japanisch und Chinesisch
Automatisierung & Integrationen
Webhooks — Unterstützung für Discord, Slack und Telegram
Ereignisse:
issue.created,issue.approved,issue.status_changed,issue.updated,issue.deleted,comment.created
Echtzeit-UI-Synchronisierung (SSE) — Änderungen via MCP/CLI werden automatisch in offenen Browser-Tabs reflektiert, kein Neuladen erforderlich
JSON-Export — Export aller Issue-Daten
Rechtsklick-Kontextmenü — Schnelle Aktionen
Issue-Vorlagen — localStorage-Persistenz pro Board
MCP-Server (KI-Agenten-Integration)
Dreizehn Tools für die Automatisierung durch KI-Agenten:
list_boards— Alle Boards auflistenlist_issues— Issues abfragen (filtern nach boardId, Status)get_issue— Issue-Details inklusive Anweisungen, Kriterien und Kommentarencreate_issue— Ein neues Issue erstellenapprove_issue— Genehmigen: Ausstehend → Genehmigtclaim_issue— Übernehmen: Genehmigt → In Bearbeitungsubmit_qa— Zur QA einreichen: In Bearbeitung → QAcomplete_issue— Abschließen: QA → Erledigt (optionaler Kommentar)reject_issue— Ablehnen: QA → In Bearbeitung mit erforderlichem Grundadd_comment— Einen Kommentar zu einem Issue hinzufügenupdate_criteria— Ein Erfolgskriterium abhaken oder abwählensearch_issues— Issues nach Titel suchenget_version— MCP-Server-Version abrufen (für Diagnosen)
Tech-Stack
Backend
Sprache: Go 1.26
Router: chi/v5
Datenbank: SQLite / PostgreSQL (konfigurierbar)
Migrationen: goose/v3
Eingebettete Dateien: embed.FS (Deployment als einzelne Binary)
Frontend
Framework: React 18
Sprache: TypeScript
Bundler: Vite 6
CSS: Tailwind CSS
State-Management: React Query (TanStack)
Drag and Drop: @dnd-kit/core, @dnd-kit/sortable
Icons: lucide-react
Diagramme: recharts
i18n: react-i18next
Markdown: react-markdown + rehype-sanitize
MCP
Protokoll: JSON-RPC 2.0 über stdio
Ziele: Claude Code, Claude Desktop
Erste Schritte
Voraussetzungen
Go 1.26 oder neuer
Node.js 18 oder neuer
npm oder yarn
Installation & Ausführung
1. Klonen und initialisieren
git clone https://github.com/kjm99d/MonkeyPlanner.git
cd monkey-planner
make init2. Production-Build (einzelne Binary)
make build
./bin/monkey-plannerDer Server läuft unter http://localhost:8080 mit eingebettetem Frontend.
3. Entwicklungsmodus (separate Prozesse)
Terminal 1 — Backend:
make run-backendTerminal 2 — Frontend (Vite Dev-Server, :5173):
make run-frontendDas Frontend leitet /api-Anfragen automatisch an :8080 weiter.
Umgebungsvariablen
# 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"MCP-Server-Einrichtung
Empfohlen: Automatische Konfiguration via 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 für eine Vorschau, --scope user für einen globalen Eintrag (~/.mcp.json), --force zum Überschreiben, --base-url <url> für einen nicht-standardmäßigen Server.
Starten Sie den Client danach neu, damit die Konfiguration neu eingelesen wird.
Manuelle Konfiguration
Funktioniert identisch für Claude Code (.mcp.json), Claude Desktop (OS-native Konfiguration) und Cursor (.cursor/mcp.json):
{
"mcpServers": {
"monkey-planner": {
"command": "/path/to/monkey-planner",
"args": ["mcp"],
"env": {
"MP_BASE_URL": "http://localhost:8080"
}
}
}
}Die Binary muss den HTTP-Server erreichen können (eingestellt über MP_BASE_URL). Belassen Sie es beim Standardwert, wenn beides auf derselben Maschine läuft.
Beispiele für die MCP-Tool-Nutzung
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()Workflow — Reales Nutzungsszenario
Unten sehen Sie einen echten Workflow zur Behebung eines Fehlers im Sprachumschalter, der zeigt, wie Mensch und KI-Agent über MonkeyPlanner zusammenarbeiten.
Status-Fluss
Pending → Approved → InProgress → QA → Done
↑ │ (reject with reason)
└──────────────┘Schritt-für-Schritt
1. Issue erstellen — Mensch findet einen Fehler, bittet KI um Registrierung
Human: "The language selector dropdown doesn't appear when clicking the button. Create an issue."
AI: create_issue(boardId, title, body, instructions) → status: Pending2. Genehmigen — Mensch prüft und genehmigt
Human: (clicks Approve on the board or tells AI)
AI: approve_issue(issueId) → status: Approved3. Arbeit beginnen — KI übernimmt das Issue und beginnt mit dem Coding
AI: claim_issue(issueId) → status: InProgress
- Reads code, identifies root cause
- Implements fix, runs tests
- Commits changes4. Zur QA einreichen — KI ist fertig und reicht es zur Überprüfung ein
AI: submit_qa(issueId, comment: "commit abc1234 — fixed click handler")
→ status: QA
add_comment(issueId, "Commit info: ...")5. Überprüfung — Mensch testet den Fix
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. Feedback-Schleife — Kommunikation über Kommentare während des gesamten Prozesses
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 ✓Wichtige Erkenntnisse
Mensch kontrolliert die Gates: Genehmigung, QA-Bestanden/Ablehnung, Abschluss
KI erledigt die Arbeit: Code-Analyse, Implementierung, Tests, Commits
Kommentare sind der Kommunikationskanal: Beide Seiten nutzen
add_comment, um Feedback auszutauschenQA-Schleife verhindert vorzeitigen Abschluss: Issues müssen die menschliche Überprüfung bestehen, bevor sie auf „Erledigt“ gesetzt werden
API-Referenz
OpenAPI 3.0 Spezifikation: backend/docs/swagger.yaml
Wichtige Endpunkte
Boards
GET /api/boards # List boards
POST /api/boards # Create board
PATCH /api/boards/{id} # Update board
DELETE /api/boards/{id} # Delete boardIssues
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)Kommentare
GET /api/issues/{issueId}/comments # List comments
POST /api/issues/{issueId}/comments # Add comment
DELETE /api/comments/{commentId} # Delete commentEigenschaften (Benutzerdefinierte Attribute)
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 webhookKalender
GET /api/calendar # Monthly stats (year, month required)
GET /api/calendar/day # Daily issue list (date required)Für vollständige Schema-Details siehe backend/docs/swagger.yaml.
Projektstruktur
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)Tests
Backend-Tests
make test-backendFrontend-Tests
make test-frontendBarrierefreiheitstests
make test-a11yAlle Tests
make testHäufige Befehle
# 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 cleanRegeln für Statusübergänge
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 trackingLizenz
MIT
Mitwirken
Issues und Pull Requests sind willkommen.
Kontakt
Für Fragen oder Feedback zum Projekt öffnen Sie bitte ein GitHub-Issue.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that provides a database-backed kanban board with 40+ tools for AI agents to track issues, features, todos, epics, and diary entries across projects, including status workflows, relationships, and semantic search.4578MIT
- AlicenseNot gradedqualityDmaintenanceA local-first Kanban board for AI agents that enables ticket management via MCP tools, with a real-time web UI.123MIT
- AlicenseNot gradedqualityBmaintenanceAn AI-native kanban board MCP server where agents pull tasks via the Model Context Protocol. It provides tools for task discovery, claiming, progress updates, and review workflows.3MIT
- FlicenseNot gradedqualityBmaintenanceA local-first Kanban system with MCP tools for AI agents to manage tickets, features, and tasks, paired with a React UI for human users.
Related MCP Connectors
Control plane for autonomous software labor. Agents claim objectives over MCP with audit trail.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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