MonkeyPlanner
MonkeyPlanner
Локальная память задач для ваших AI-агентов по программированию. Одобряйте одним кликом; ваши агенты сделают остальное. Никакого облака. Никакой телеметрии. Всегда бесплатно, всегда под лицензией MIT.
Работает с Claude Code · Claude Desktop · Cursor · Continue · любым MCP-совместимым клиентом.

Быстрый старт
# 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Откройте http://localhost:8080 — встроенная доска приветствия поможет вам освоиться.
Функции
Управление задачами и досками
Канбан-доска — Drag and drop, горизонтальная прокрутка, фильтрация, сортировка и переключение в табличный вид
Создание задач — Заголовок, описание в формате markdown и пользовательские свойства
Пользовательские свойства — Поддерживается шесть типов:
Текст
Число
Выбор (Select)
Множественный выбор (Multi-select)
Дата
Чекбокс
Шлюз подтверждения (Approval Gate)
Ожидание → Одобрено через специальный эндпоинт подтверждения (невозможно выполнить через обычный PATCH)
Очередь подтверждений — Массовое одобрение всех задач со статусом «Ожидание» на всех досках
Одобрено → В работе → Готово — Гибкие переходы между статусами
Статус «Отклонено» — Запись причины отклонения
Функции для агентов
Поле инструкций для агента — Предоставление подробных инструкций для выполнения MCP-агентами
Критерии успеха — Управление условиями завершения в виде чек-листа
Комментарии — Логирование прогресса и общение по каждой задаче
Зависимости — Определение блокирующих связей между задачами
Визуализация данных
Календарь — Ежемесячная сетка + ежедневная активность (количество созданных, одобренных и завершенных задач)
Дашборд — Карточки статистики + график еженедельной активности
Боковая панель — Список досок, количество задач и недавние элементы
Пользовательский опыт
Глобальный поиск — Быстрый поиск через Cmd+K
Горячие клавиши
h— Перейти на дашбордa— Перейти в очередь подтверждений?— Показать справку по клавишамCmd+S— СохранитьEscape— Закрыть модальное окно/диалог
Сворачиваемая боковая панель — Максимизация рабочего пространства
Темная тема — Переключатель темы
Интернационализация — Корейский, английский, японский и китайский языки
Автоматизация и интеграции
Вебхуки — Поддержка Discord, Slack и Telegram
События:
issue.created,issue.approved,issue.status_changed,issue.updated,issue.deleted,comment.created
Синхронизация UI в реальном времени (SSE) — Изменения через MCP/CLI автоматически отображаются в открытых вкладках браузера, обновление страницы не требуется
Экспорт в JSON — Экспорт всех данных о задачах
Контекстное меню правой кнопки мыши — Быстрые действия
Шаблоны задач — Сохранение в localStorage для каждой доски
MCP-сервер (Интеграция с AI-агентами)
Тринадцать инструментов для автоматизации AI-агентов:
list_boards— Список всех досокlist_issues— Запрос задач (фильтрация по boardId, статусу)get_issue— Детали задачи, включая инструкции, критерии и комментарииcreate_issue— Создание новой задачиapprove_issue— Одобрение: Ожидание → Одобреноclaim_issue— Взять в работу: Одобрено → В работеsubmit_qa— Отправить на QA: В работе → QAcomplete_issue— Завершить: QA → Готово (опциональный комментарий)reject_issue— Отклонить: QA → В работе с обязательным указанием причиныadd_comment— Добавить комментарий к задачеupdate_criteria— Отметить или снять отметку с критерия успехаsearch_issues— Поиск задач по заголовкуget_version— Получить версию MCP-сервера (для диагностики)
Технологический стек
Бэкенд
Язык: Go 1.26
Роутер: chi/v5
База данных: SQLite / PostgreSQL (настраиваемо)
Миграции: goose/v3
Встроенные файлы: embed.FS (развертывание одним бинарным файлом)
Фронтенд
Фреймворк: React 18
Язык: TypeScript
Сборщик: Vite 6
CSS: Tailwind CSS
Управление состоянием: React Query (TanStack)
Drag and drop: @dnd-kit/core, @dnd-kit/sortable
Иконки: lucide-react
Графики: recharts
i18n: react-i18next
Markdown: react-markdown + rehype-sanitize
MCP
Протокол: JSON-RPC 2.0 через stdio
Цели: Claude Code, Claude Desktop
Начало работы
Требования
Go 1.26 или новее
Node.js 18 или новее
npm или yarn
Установка и запуск
1. Клонирование и инициализация
git clone https://github.com/kjm99d/MonkeyPlanner.git
cd monkey-planner
make init2. Сборка для продакшена (один бинарный файл)
make build
./bin/monkey-plannerСервер запускается на http://localhost:8080 со встроенным фронтендом.
3. Режим разработки (отдельные процессы)
Терминал 1 — бэкенд:
make run-backendТерминал 2 — фронтенд (Vite dev server, :5173):
make run-frontendФронтенд автоматически проксирует запросы /api на :8080.
Переменные окружения
# 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-сервера
Рекомендуется: автоконфигурация через 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 cursorФлаги: --dry-run для предварительного просмотра, --scope user для глобальной записи (~/.mcp.json), --force для перезаписи, --base-url <url> для указания на нестандартный сервер.
После этого перезапустите клиент, чтобы он перечитал конфигурацию.
Ручная настройка
Работает идентично для Claude Code (.mcp.json), Claude Desktop (конфиг ОС) и Cursor (.cursor/mcp.json):
{
"mcpServers": {
"monkey-planner": {
"command": "/path/to/monkey-planner",
"args": ["mcp"],
"env": {
"MP_BASE_URL": "http://localhost:8080"
}
}
}
}Бинарный файл должен иметь доступ к HTTP-серверу (устанавливается через MP_BASE_URL). Оставьте значение по умолчанию, если запускаете оба на одной машине.
Примеры использования инструментов 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()Рабочий процесс — Реальный сценарий использования
Ниже представлен реальный рабочий процесс исправления ошибки переключателя языка, показывающий, как человек и AI-агент сотрудничают через MonkeyPlanner.
Поток статусов
Pending → Approved → InProgress → QA → Done
↑ │ (reject with reason)
└──────────────┘Пошагово
1. Создание задачи — Человек находит ошибку, просит AI зарегистрировать её
Human: "The language selector dropdown doesn't appear when clicking the button. Create an issue."
AI: create_issue(boardId, title, body, instructions) → status: Pending2. Одобрение — Человек проверяет и одобряет
Human: (clicks Approve on the board or tells AI)
AI: approve_issue(issueId) → status: Approved3. Начало работы — AI берет задачу и начинает писать код
AI: claim_issue(issueId) → status: InProgress
- Reads code, identifies root cause
- Implements fix, runs tests
- Commits changes4. Отправка на QA — AI завершает работу и отправляет на проверку
AI: submit_qa(issueId, comment: "commit abc1234 — fixed click handler")
→ status: QA
add_comment(issueId, "Commit info: ...")5. Проверка — Человек тестирует исправление
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. Цикл обратной связи — Общение через комментарии на протяжении всего процесса
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 ✓Основные выводы
Человек контролирует шлюзы: Одобрение, прохождение/отклонение QA, Завершение
AI выполняет работу: Анализ кода, реализация, тестирование, коммиты
Комментарии — канал связи: Обе стороны используют
add_commentдля обмена отзывамиЦикл QA предотвращает преждевременное завершение: Задачи должны пройти проверку человеком перед переходом в статус «Готово»
Справочник API
Спецификация OpenAPI 3.0: backend/docs/swagger.yaml
Основные эндпоинты
Доски
GET /api/boards # List boards
POST /api/boards # Create board
PATCH /api/boards/{id} # Update board
DELETE /api/boards/{id} # Delete boardЗадачи
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)Комментарии
GET /api/issues/{issueId}/comments # List comments
POST /api/issues/{issueId}/comments # Add comment
DELETE /api/comments/{commentId} # Delete commentСвойства (Пользовательские атрибуты)
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 propertyВебхуки
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 webhookКалендарь
GET /api/calendar # Monthly stats (year, month required)
GET /api/calendar/day # Daily issue list (date required)Полную схему см. в backend/docs/swagger.yaml.
Структура проекта
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)Тестирование
Тесты бэкенда
make test-backendТесты фронтенда
make test-frontendТесты доступности
make test-a11yВсе тесты
make testОбщие команды
# 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 cleanПравила перехода статусов
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 trackingЛицензия
MIT
Участие в разработке
Запросы на добавление (pull requests) и сообщения об ошибках приветствуются.
Контакты
По вопросам или отзывам о проекте, пожалуйста, откройте GitHub Issue.
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