Capaxima
MCP-сервер · tools, prompts, resources, elicitation · лише локально

Нехай ваш агент планує дошку

У Capaxima є сервер Model Context Protocol. Claude Code, Cursor чи будь-який інший MCP-клієнт може читати дошку і змінювати її. Сервер викликає ті самі дії, що й інтерфейс, тому другого способу змінити дошку немає, а моделі всередині Capaxima немає. Один і той самий виклик на двох машинах дає ту саму дошку.

Транспорти stdio · streamable HTTP Примітиви tools · prompts · resources · elicitation Слухає лише 127.0.0.1

Як виглядає сесія

Ви відкриваєте проєкт у 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. Платний застосунок ніколи не звертається до сервера.
  • Він не пише в обхід документа. Інструменти — єдиний спосіб змінити дошку, і кожен виконує ту саму дію, що й клік в інтерфейсі.

Попросити бету з MCP-сервером