Интеграция через MCP
ARMory можно подключить к любому AI-ассистенту, поддерживающему протокол MCP (Model Context Protocol): Kimi Code CLI, Claude Code, Cline, Continue и другие. Это позволяет ассистенту работать с задачами kanban прямо из терминала или редактора: получать задачу по номеру или ссылке, создавать новые задачи и обновлять статус.
Важно: задачи могут относиться к разным проектам. Например, тикет https://<armory-domain>/projects/<project-id>/kanban?task=<task-id> создан в ARMory, но доработка выполняется в другом репозитории. MCP позволяет ассистенту прочитать задачу из ARMory и работать с файлами текущего проекта.
Что умеет интеграция
get_task— получить задачу поtask_id. Номера задач сквозные,project_idможно не указывать.list_tasks— получить список задач проекта.create_task— создать новую задачу в проекте.update_task— обновить задачу (статус, название, описание, приоритет, теги, результат работы и др.).take_task_into_work— взять задачу в работу (перевести в статус «В работе» и назначить ответственным AI-ассистента).complete_task— завершить задачу, при необходимости записавresult(результат работы).
Структура файлов в репозитории ARMory
mcp/__init__.py
mcp/mcp_logic.py # общая логика MCP (tools, JSON-RPC)
mcp/armory_mcp.py # stdio-обёртка
app/routers/mcp.py # HTTP endpoint /mcp
app/config.py # настройка MCP_API_KEY, AI_ASSIGNEE_*
.kimi-code/skills/kanban/SKILL.md # prompt-скилл для работы с kanban
.kimi-code/mcp.json.example # шаблон локальной конфигурации
docs/mcp-setup.md # эта документация
docs/local-model.md # инструкция по локальным моделям
Как работает HTTP MCP
В ARMory backend есть endpoint POST /mcp, который принимает JSON-RPC запросы от MCP-клиента и делегирует обработку mcp/mcp_logic.py. Endpoint доступен сразу при запуске FastAPI-сервера, ничего запускать отдельно не нужно.
Endpoint защищён статичным API-ключом (MCP_API_KEY), потому что oauth2-proxy пропускает /mcp без браузовой аутентификации.
Настройка сервера
- Сгенерируй ключ:
- Добавь его в
.envна сервере:
- При желании измени имя/email AI-ассистента, от имени которого назначаются задачи:
- Убедись, что в
compose.gateway.ymloauth2-proxy пропускает/mcp:
- Перезапусти ARMory:
Настройка MCP-клиента
Большинство MCP-клиентов читают конфигурацию из JSON-файла. Формат похож на:
{
"mcpServers": {
"armory": {
"url": "https://<armory-domain>/mcp",
"headers": {
"X-MCP-API-Key": "YOUR_MCP_API_KEY"
}
}
}
}
Где разместить файл, зависит от клиента:
- Kimi Code CLI —
.kimi-code/mcp.jsonв папке проекта или~/.kimi-code/mcp.json. - Claude Code —
~/.claude-code/settings.jsonили файл настроек проекта. - Cline / Continue — настройки MCP внутри редактора.
Скопируй шаблон и укажи свой URL и ключ:
Инструкция (skill)
Скопируй .kimi-code/skills/kanban/SKILL.md в папку скиллов своего MCP-клиента. Например, для Kimi:
mkdir -p ~/.kimi-code/skills/kanban
cp <armory-project-directory>/.kimi-code/skills/kanban/SKILL.md <mcp-client-skills-directory>/kanban/SKILL.md
Этот файл учит ассистента понимать ссылки и номера задач, не закрывать задачу без разрешения, начинать коммиты с #N и т.д.
Примеры фраз
Возьми в работу задачу #39
https://<armory-domain>/projects/<project-id>/kanban?task=<task-id>
Покажи задачу #39
Переведи #39 в статус "Тестирование"
Обнови #39 результат "Исправлено отображение дедлайна"
Закрой #39 с результатом "Реализовано в PR #123"
Результат работы и тосты в интерфейсе
- Поле
result(результат работы) можно передать черезupdate_taskилиcomplete_task. - Когда задача завершается через
complete_taskили в неё впервые записываетсяresultчерезupdate_task, в открытом kanban появляется тост «Задача №N выполнена».
Рабочий сценарий из другого проекта
- Пользователь даёт ссылку на задачу ARMory.
- Ассистент получает задачу через
mcp__armory__get_task. - Ассистент берёт задачу в работу через
mcp__armory__take_task_into_work(если пользователь так попросил). - Ассистент выполняет изменения в файлах текущего проекта.
- По окончании ассистент может записать результат через
update_taskили, по явной просьбе пользователя, завершить задачу черезcomplete_task. - Пользователь видит тост в kanban ARMory, если страница открыта.
Проверка endpoint
Проверь, что backend отвечает на JSON-RPC:
curl -X POST https://<armory-domain>/mcp \
-H "Content-Type: application/json" \
-H "X-MCP-API-Key: YOUR_MCP_API_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05"}}'
Должен вернуться ответ с serverInfo. Без ключа — 401.
Перезапуск сессии
MCP-серверы подключаются при старте сессии клиента. После любого изменения конфигурации перезапусти клиент.
Локальные модели
Чтобы использовать ARMory с локальной моделью (Qwen, Llama и др.), смотри отдельную инструкцию: docs/local-model.md.
Безопасность
- Не хардкоди продакшен URL и креды в коде MCP.
MCP_API_KEYзадаётся через переменную окружения.envи передаётся в заголовкеX-MCP-API-Key.- Не коммить файлы MCP-конфигурации с секретами.
- OAuth2-proxy должен пропускать
/mcpбез браузовой аутентификации; сама проверка ключа выполняется в приложении.
Расширение
Чтобы добавить новый инструмент:
- Опиши инструмент в
TOOLSвmcp/mcp_logic.py. - Добавь обработку в
handle_tool_callв том же файле. - При необходимости обнови
.kimi-code/skills/kanban/SKILL.mdи эту документацию.