Как внешние AI-клиенты (клиенты MCP, скрипты, другие инструменты) интегрируются с AITM через серверы MCP и REST/GraphQL API.
AITM MCP & API
Серверы MCP
AITM предоставляет два сервера MCP:
- aitm-core (35 инструментов) — проекты (
onboarding,list_projects,get_project_status), CRUD Task (create_task,list_tasks,get_task,update_task,delete_task,search_tasks), жизненный цикл (run_task,stop_task,stop_project_tasks,stop_all_tasks,resume_task,skip_step,requeue_task— деструктивно,archive_task,restore_task,reorder_task), данные Task (get_task_result,get_task_console,get_task_logs,get_pipeline_status), оптимизация промптов (optimize_prompt,apply_optimization), поиск по архиву (search_archive), настройки (get_settings,update_settings), лицензия (license_status,license_activate,license_deactivate,license_upload_offline_token,license_remove_offline_token) иserver_restart/server_stop. - aitm-extended (43 инструмента) — тестовая среда (
test_env_status,test_app_build,test_app_start,test_app_stop,test_project_pull,get_test_history), скриншоты (get_screenshot_manifest,get_screenshot,get_screenshot_history), Contracts (search_contracts,get_contract_detail,get_module_summary,find_precedent_tasks,get_danger_zones,investigate_variable,blast_radius,context_for,contracts_health,contracts_resync), документация и переменные (search_docs,get_docs_for_variable,get_behavior_chain,search_variables,get_variable_tree,get_dom_page,search_dom), самопроверка (run_selfcheck) и резервное копирование (create_backup), диалоги (list_conversations,get_conversation,delete_conversation), сообщения Chat/Brainstorm (send_chat_message,send_brainstorm_message), Skills (list_skills,skill_create,skill_list,skill_search,skill_get,skill_update,skill_delete), Merge queue (get_merge_queue),resolve_conflictи состояние сервисов (get_service_health).
Транспорты: stdio (локальный, по умолчанию для обоих серверов) и Streamable HTTP на порту 3335 (по умолчанию, переопределяется через --mcp-port) с обязательным bearer-токеном (AITM_MCP_TOKEN или config.mcp.httpAuthToken, fail-closed — сервер отказывается запускаться в режиме HTTP без него) и необязательным TLS (--tls-cert/--tls-key). В стандартном .mcp.json этого репозитория (stdio) зарегистрирован только aitm-core; aitm-extended запускается отдельно (при необходимости с --http).
Пример: подключение клиента MCP (stdio)
{
"mcpServers": {
"aitm-core": {
"command": "npx",
"args": ["tsx", "src/mcp/AitmCoreMcpServer.ts", "--rest-url", "http://localhost:3333"]
}
}
}
Пример: удалённый клиент MCP (HTTP)
{
"mcpServers": {
"aitm-core-remote": {
"url": "https://your-host:3335",
"headers": { "Authorization": "Bearer <AITM_MCP_TOKEN>" }
}
}
}
REST API
База http://localhost:3333, JSON. Порты: 3333 REST/GraphQL/UI, 3334 HTTPS, 3335 MCP Streamable HTTP.
| Endpoint | Назначение |
|---|---|
GET /api/onboarding | Самоинициализация Agent |
GET /api/tasks | Список Task (projectId?, limit?) |
GET /api/tasks/all | Список Task с постраничной навигацией и фильтрами |
POST /api/tasks | Создать Task |
POST /api/tasks/chain | Создать цепочку зависимых Task |
GET /api/tasks/:id | Детали Task |
PATCH /api/tasks/:id | Частично обновить Task |
DELETE /api/tasks/:id | Безвозвратно удалить Task |
POST /api/tasks/:id/run | Запустить ожидающий Task |
POST /api/tasks/:id/stop | Остановить один Task |
POST /api/tasks/stop-all | Глобальная остановка (необязательный фильтр tabId/projectId) |
POST /api/projects/:projectId/tasks/stop-all | Остановить все Task одного проекта |
POST /api/tasks/:id/resume | Возобновить Task в состоянии failed/stopped/conflict |
POST /api/tasks/:id/skip | Пропустить определённый шаг Pipeline |
POST /api/tasks/:id/archive | Архивировать завершённый Task |
POST /api/tasks/:id/restore | Восстановить архивированный Task (отклоняется, если ветка уже влита или удалена) |
POST /api/tasks/:id/requeue, /reorder | Повторная постановка в очередь / изменение порядка очереди |
GET /api/tasks/:id/result|console|logs|pipeline | Результат Task, вывод консоли, логи и состояние Pipeline |
GET /api/archive | Поиск по архивированным Task |
GET /api/status | Статус Tab/проектов (кэш stale-while-revalidate) |
GET /api/projects | Список Tab/проектов |
GET/PUT/PATCH /api/settings | Чтение и обновление настроек |
POST /api/backup/create | Создать резервную копию |
GET /api/merge/queue | Состояние Merge queue |
GET /api/service-health | Состояние отслеживаемых сервисов |
GET /api/version | Версия сервера (semver, дата сборки, режим релиза) |
GET /api/license/status | Статус лицензии |
POST /api/license/activate | Активировать лицензию (licenseKey, instanceLabel, email) |
POST /api/server/restart|stop | Перезапустить или остановить сервер |
POST /graphql | Endpoint знаний — Contracts, переменные, документация |
Это отобранный набор наиболее используемых endpoint'ов, а не полный список — у REST API более 100 endpoint'ов в src/rest/RestApi.ts и отдельных маршрутизаторах (Skills, Contracts, теги DOM, i18n, скриншоты, тестовая инфраструктура, релизы и другие).
Справочник параметров — наиболее используемые операции
| Операция | Параметры |
|---|---|
POST /api/tasks | tabId, projectId, title (≤ 60 символов), prompt (≤ 50 КБ), необязательные priority (low|medium|high, по умолчанию medium), useWorktree/usePipeline/autoMergeDev (по умолчанию true), skipSteps, dependsOn, overridePreFlight |
POST /api/tasks/chain | массив объектов той же формы, что и POST /api/tasks — каждый последующий элемент автоматически получает dependsOn:[previous id] |
POST /api/tasks/:id/stop | reason? |
POST /api/tasks/:id/resume | fromStepIndex?, instructions?, skipSteps? — без fromStepIndex первый шаг в состоянии failed/stopped определяется автоматически |
POST /api/tasks/:id/skip | stepIndex или stepName (требуется один из них) — шаг должен быть pending либо failed/stopped у невыполняющегося Task |
POST /api/tasks/:id/archive | force?, reason? — только из состояний finished/stopped/failed/conflict |
POST /api/tasks/:id/restore | без тела — только архивированные Task; 409, если ветка уже merged или branch-missing |
| Инструмент MCP | Параметры |
|---|---|
create_task | title, prompt, tabId, projectId (обязательные), необязательные priority, useWorktree, usePipeline, autoMergeDev, skipSteps[], dependsOn[] |
list_tasks | status?, tabId?, projectId? |
get_task | id |
run_task | id |
resume_task | id, необязательные fromStepIndex, instructions, skipSteps |
Пример: создание Task
curl -X POST http://localhost:3333/api/tasks \
-H 'Content-Type: application/json' \
-d '{"title":"Fix auth bug","prompt":"READ CLAUDE.md first...","tabId":"ctm","projectId":"ctm-dashboard","priority":"high","useWorktree":true,"usePipeline":true,"autoMergeDev":true}'
Примечание: title не более 60 символов, prompt не более 50 КБ; значения по умолчанию useWorktree/usePipeline/autoMergeDev равны true, priority по умолчанию — medium.
Пример: цепочка зависимых Task
curl -X POST http://localhost:3333/api/tasks/chain \
-H 'Content-Type: application/json' \
-d '[
{"title":"Add DB column","prompt":"...","tabId":"ctm","projectId":"ctm-dashboard"},
{"title":"Use column in API","prompt":"...","tabId":"ctm","projectId":"ctm-dashboard"}
]'
Второй Task ждёт, пока первый не будет влит в dev, поскольку каждый последующий элемент автоматически получает dependsOn:[previous id].
Пример: остановка и возобновление Task
curl -X POST http://localhost:3333/api/tasks/42/stop \
-H 'Content-Type: application/json' -d '{"reason":"manual stop"}'
curl -X POST http://localhost:3333/api/tasks/42/resume \
-H 'Content-Type: application/json' -d '{}'
Советы
- Для локальной интеграции (на той же машине) лучше использовать транспорт stdio — он проще и не требует токена.
- Для удалённого доступа всегда нужно задавать
AITM_MCP_TOKEN— без него сервер fail-closed и отказывается запускаться в режиме HTTP. - Для обнаружения Contracts и переменных лучше использовать инструменты
aitm-extended, а не вызывать/graphqlвручную. GET /api/statusотвечает мгновенно из кэша и обновляется в фоне — не стоит считать, что он всегда отражает самое свежее состояние.