Нехай ваш агент планує дошку
У Capaxima є сервер Model Context Protocol. Claude Code, Cursor чи будь-який інший MCP-клієнт може читати дошку і змінювати її. Сервер викликає ті самі дії, що й інтерфейс, тому другого способу змінити дошку немає, а моделі всередині Capaxima немає. Один і той самий виклик на двох машинах дає ту саму дошку.
Як виглядає сесія
Ви відкриваєте проєкт у Capaxima, а поруч — свій редактор. У Claude Code набираєте /board_health — один із рецептів сервера, зареєстрований як слеш-команда. Агент читає конфлікти дошки, незв'язані задачі й задачі без оцінки та повідомляє, чого бракує. Ви кажете «вирівняй, рівномірне завантаження»; агент викликає plan_edit з operation: level, дошка перемальовується під Gantt, і зміна — один крок undo у застосунку. Ви питаєте «які ролі перевантажені в березні?»; на питання агент отримує лише інструмент читання.
Застосунку не потрібно довіряти моделі. Кожен запис — це названий інструмент із типізованою схемою. Лінк, який створив би цикл, відхиляється, і у відповіді названо шлях. Видалення всіх задач на дошці вимагає confirm: true. Виклик, який модель повторює з тими самими аргументами, отримує попередній результат і не застосовується вдруге.
Підключення
Бета постачає сервер разом з інсталятором; команда запуску для вашої установки — у нотатках до релізу. Транспортів два: stdio, для клієнтів, які самі запускають сервер, і streamable HTTP на 127.0.0.1:7432 для всіх інших.
Claude Code
claude mcp add --transport http capaxima http://127.0.0.1:7432/mcp \
--header "Authorization: Bearer <token>"
Cursor
У .cursor/mcp.json проєкту або в глобальному:
{
"mcpServers": {
"capaxima": {
"url": "http://127.0.0.1:7432/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
Хто може з ним говорити
Сервер прив'язаний до loopback, тому інші машини до нього не дістануться. Інші вкладки браузера — можуть: будь-яка вебсторінка може зробити POST на loopback-порт, а через DNS rebinding — надіслати заголовок Host, який вона контролює. Тому кожен запит перевіряється до того, як потрапить у транспорт:
Hostмає називати цю машину — усе інше вважається підміненим іменем і отримує403.Origin, коли браузер його надсилає, має бути loopback-адресою або одним із перелічених уCAPAXIMA_MCP_ALLOWED_ORIGINS. CORS повертає рівно прийнятий origin, ніколи*.- Задайте
CAPAXIMA_MCP_TOKEN— і кожен запит мусить нести його як bearer-токен, інакше401. Токен необов’язковий, бо небраузерний клієнт на тій самій машині — це вже локальний процес; сервер каже при старті, що токен не налаштовано.
Інструменти — єдиний спосіб писати
Маленька локальна модель отримує вісім дієслівних інструментів замість повної поверхні: один виклик на дієслово, з адресацією за назвами задач і етапів, а не за id. Якщо назва невідома або неоднозначна, відповідь перелічує реальних кандидатів, щоб модель виправила виклик. Велика модель із нативним викликом інструментів отримує повну поверхню — близько сорока п'яти інструментів: board_summary, project_draft_apply, schedule_analyze, resource_level, board_snapshot та інші.
| Інструмент | Що робить |
|---|---|
board_inspect | Читає дошку: огляд, задачі (слово пошуку звужує за назвою), етапи, поля, розклад, конфлікти або все разом як Markdown чи CSV. |
project_bootstrap | Ціла перша роадмапа на порожній дошці одним викликом: схема, етапи, задачі, тривалості, ролі, зв’язки. |
task_edit | Одна задача за назвою: створити, перейменувати, видалити, дублювати, перемістити, задати поле. |
phase_edit | Один етап, віха чи гейт за назвою: створити, перейменувати, видалити, змінити тип, вкласти в батьківський. |
dependency_edit | Зв’язати або розв’язати дві задачі за назвами; from блокує to. Зв’язок, що замкнув би цикл, відхиляється з поверненням шляху. |
tasks_bulk_edit | Багато задач одразу: задати поле, оцінити всі, призначити домени, згрупувати в етапи, видалити — в межах дошки, етапу чи пошуку. Видалити все можна лише з confirm: true. |
plan_edit | Розклад: задати тривалість або старт, заблокувати, розблокувати, налаштувати, створити чи видалити роль, вирівняти. Без назви задачі — для всіх задач. |
board_repair | Полагодити дошку, нічого не вигадуючи: розв’язати конфлікти, перекласти, прибрати назви-заглушки. |
Кожен результат, що змінює дошку, містить дайджест дошки після зміни — кількості, назви етапів, назви задач, назви полів, — щоб наступний виклик адресував назви, які існують. Аргументи, що мають назвати щось на дошці, пропонуються як список того, що там справді є, і перераховуються на кожному кроці.
Промпти — одинадцять рецептів
Рецепт — це виклик інструмента з уже обраними аргументами. Кожен рецепт розгортається в один названий виклик; аргументи автодоповнюються з живої дошки. У Claude Code і Cursor рецепти з'являються як слеш-команди.
| Рецепт | Що робить |
|---|---|
bootstrap_project | Створює повну роадмапу на порожній дошці одним детермінованим викликом. |
group_loose_tasks | Кладе кожну задачу поза етапом у якийсь етап, потім перекладає дошку. |
fix_dependency_cycles | Застосовує кожен фікс конфлікту, який дошка вміє розв’язати автоматично. |
level_resources | Перерозподіляє роботу між ролями детермінованим вирівнювачем. |
estimate_everything | Проставляє тривалість кожній задачі — за бажанням лише там, де її нема. |
set_field_everywhere | Записує одне значення в поле по етапу, пошуку або всій дошці. |
link_tasks | Робить одну задачу блокером іншої, відхиляючи все, що замкнуло б цикл. |
add_phase | Створює етап, віху чи гейт і, за бажанням, вкладає в наявний. |
clean_placeholder_titles | Видаляє задачі з назвами-заглушками, зберігаючи змістовні. |
schedule_report | Лише читання: критичний шлях, дата завершення й перевантаження. |
board_health | Лише читання: чого бракує, що незв’язане, неоцінене чи в конфлікті. |
Ресурси — читання без виклику інструмента
Ресурс — це дані, які клієнт забирає напряму, без виклику інструмента і без додавання до історії повідомлень.
roadmap://boards— дошки, які тримає сервер.roadmap://board/{boardId}/{view}— одне читання однієї дошки:overview,tasks,phases,fields,schedule,conflictsабо все разом якmarkdown.roadmap://board/{boardId}/tasks/{page}— для дошок, завеликих для одного читання: по 100 задач на сторінку, кожна сторінка називає наступну.
Сервер надсилає notifications/resources/list_changed щоразу, як дошка змінюється, тож закешований огляд ніколи не застаріває мовчки.
Автодоповнення та elicitation
Автодоповнення. Аргументи промптів і змінні шаблонів ресурсів доповнюються з живої дошки: назви задач для from і to, назви етапів для phase, імена полів для field, відкриті дошки для boardId.
Elicitation. Обов’язковий аргумент, який клієнт не передав, запитується у вас, зі справжніми кандидатами у формі, а не вгадується моделлю. Це працює лише для клієнтів, які заявили таку можливість; решта отримує строгу схему. Відхилений або скасований запит нічого не змінює.
Чого він не робить
- Він не запускає модель. Агента ви приносите свого.
- Він не використовує мережу. Лише loopback. Платний застосунок ніколи не звертається до сервера.
- Він не пише в обхід документа. Інструменти — єдиний спосіб змінити дошку, і кожен виконує ту саму дію, що й клік в інтерфейсі.