Jak zewnętrzni klienci AI (klienci MCP, skrypty, inne narzędzia) integrują się z AITM przez jego serwery MCP oraz API REST/GraphQL.
AITM MCP & API
Serwery MCP
AITM udostępnia dwa serwery MCP:
- aitm-core (35 narzędzi) — projekty (
onboarding,list_projects,get_project_status), operacje CRUD na Taskach (create_task,list_tasks,get_task,update_task,delete_task,search_tasks), cykl życia (run_task,stop_task,stop_project_tasks,stop_all_tasks,resume_task,skip_step,requeue_task— destrukcyjne,archive_task,restore_task,reorder_task), dane Taska (get_task_result,get_task_console,get_task_logs,get_pipeline_status), optymalizacja promptów (optimize_prompt,apply_optimization), wyszukiwanie w archiwum (search_archive), ustawienia (get_settings,update_settings), licencja (license_status,license_activate,license_deactivate,license_upload_offline_token,license_remove_offline_token) orazserver_restart/server_stop. - aitm-extended (43 narzędzia) — środowisko testowe (
test_env_status,test_app_build,test_app_start,test_app_stop,test_project_pull,get_test_history), zrzuty ekranu (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), dokumentacja i zmienne (search_docs,get_docs_for_variable,get_behavior_chain,search_variables,get_variable_tree,get_dom_page,search_dom), autodiagnostyka (run_selfcheck) i kopia zapasowa (create_backup), rozmowy (list_conversations,get_conversation,delete_conversation), wiadomości 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_conflictoraz kondycja usług (get_service_health).
Transporty: stdio (lokalny, domyślny dla obu serwerów) oraz Streamable HTTP na porcie 3335 (domyślnym, do nadpisania przez --mcp-port) z obowiązkowym tokenem bearer (AITM_MCP_TOKEN lub config.mcp.httpAuthToken, fail-closed — serwer odmawia uruchomienia w trybie HTTP bez niego) i opcjonalnym TLS (--tls-cert/--tls-key). W domyślnym .mcp.json tego repozytorium zarejestrowany jest tylko aitm-core (stdio); aitm-extended uruchamia się osobno (opcjonalnie z --http).
Przykład: połączenie klienta MCP (stdio)
{
"mcpServers": {
"aitm-core": {
"command": "npx",
"args": ["tsx", "src/mcp/AitmCoreMcpServer.ts", "--rest-url", "http://localhost:3333"]
}
}
}
Przykład: zdalny klient MCP (HTTP)
{
"mcpServers": {
"aitm-core-remote": {
"url": "https://your-host:3335",
"headers": { "Authorization": "Bearer <AITM_MCP_TOKEN>" }
}
}
}
REST API
Baza http://localhost:3333, JSON. Porty: 3333 REST/GraphQL/UI, 3334 HTTPS, 3335 MCP Streamable HTTP.
| Endpoint | Przeznaczenie |
|---|---|
GET /api/onboarding | Samoinicjalizacja Agenta |
GET /api/tasks | Lista Tasków (projectId?, limit?) |
GET /api/tasks/all | Lista Tasków z paginacją i filtrowaniem |
POST /api/tasks | Utworzenie Taska |
POST /api/tasks/chain | Utworzenie łańcucha zależnych Tasków |
GET /api/tasks/:id | Szczegóły Taska |
PATCH /api/tasks/:id | Częściowa aktualizacja Taska |
DELETE /api/tasks/:id | Trwałe usunięcie Taska |
POST /api/tasks/:id/run | Uruchomienie oczekującego Taska |
POST /api/tasks/:id/stop | Zatrzymanie pojedynczego Taska |
POST /api/tasks/stop-all | Globalne zatrzymanie (opcjonalny filtr tabId/projectId) |
POST /api/projects/:projectId/tasks/stop-all | Zatrzymanie wszystkich Tasków jednego projektu |
POST /api/tasks/:id/resume | Wznowienie Taska w stanie failed/stopped/conflict |
POST /api/tasks/:id/skip | Pominięcie wybranego kroku Pipeline |
POST /api/tasks/:id/archive | Archiwizacja zakończonego Taska |
POST /api/tasks/:id/restore | Przywrócenie zarchiwizowanego Taska (odrzucane, jeśli branch jest już scalony/usunięty) |
POST /api/tasks/:id/requeue, /reorder | Ponowne zakolejkowanie / zmiana kolejności w kolejce |
GET /api/tasks/:id/result|console|logs|pipeline | Wynik Taska, wyjście konsoli, logi i stan Pipeline |
GET /api/archive | Wyszukiwanie zarchiwizowanych Tasków |
GET /api/status | Status zakładek/projektów (pamięć podręczna stale-while-revalidate) |
GET /api/projects | Lista zakładek/projektów |
GET/PUT/PATCH /api/settings | Odczyt i aktualizacja ustawień |
POST /api/backup/create | Utworzenie kopii zapasowej |
GET /api/merge/queue | Stan Merge queue |
GET /api/service-health | Kondycja monitorowanych usług |
GET /api/version | Wersja serwera (semver, data budowy, tryb wydania) |
GET /api/license/status | Status licencji |
POST /api/license/activate | Aktywacja licencji (licenseKey, instanceLabel, email) |
POST /api/server/restart|stop | Restart lub zatrzymanie serwera |
POST /graphql | Endpoint wiedzy — Contracts, zmienne, dokumentacja |
To wyselekcjonowany zestaw najczęściej używanych endpointów, a nie pełna lista — REST API ma ponad 100 endpointów w src/rest/RestApi.ts i dedykowanych routerach (Skills, Contracts, tagi DOM, i18n, zrzuty ekranu, infrastruktura testowa, wydania i inne).
Opis parametrów — najczęściej używane operacje
| Operacja | Parametry |
|---|---|
POST /api/tasks | tabId, projectId, title (≤ 60 znaków), prompt (≤ 50 KB), opcjonalnie priority (low|medium|high, domyślnie medium), useWorktree/usePipeline/autoMergeDev (domyślnie true), skipSteps, dependsOn, overridePreFlight |
POST /api/tasks/chain | tablica obiektów o takim samym kształcie jak POST /api/tasks — każdy kolejny element automatycznie otrzymuje dependsOn:[previous id] |
POST /api/tasks/:id/stop | reason? |
POST /api/tasks/:id/resume | fromStepIndex?, instructions?, skipSteps? — bez fromStepIndex automatycznie wykrywany jest pierwszy nieudany/zatrzymany krok |
POST /api/tasks/:id/skip | stepIndex lub stepName (wymagane jedno z nich) — krok musi mieć stan pending albo failed/stopped w niedziałającym Tasku |
POST /api/tasks/:id/archive | force?, reason? — tylko ze statusów finished/stopped/failed/conflict |
POST /api/tasks/:id/restore | bez ciała żądania — tylko zarchiwizowane Taski; 409, jeśli branch ma już stan merged lub branch-missing |
| Narzędzie MCP | Parametry |
|---|---|
create_task | title, prompt, tabId, projectId (wymagane), opcjonalnie priority, useWorktree, usePipeline, autoMergeDev, skipSteps[], dependsOn[] |
list_tasks | status?, tabId?, projectId? |
get_task | id |
run_task | id |
resume_task | id, opcjonalnie fromStepIndex, instructions, skipSteps |
Przykład: utworzenie Taska
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}'
Uwaga: title maks. 60 znaków, prompt maks. 50 KB; domyślnie useWorktree/usePipeline/autoMergeDev mają wartość true, a domyślne priority to medium.
Przykład: łańcuch zależnych Tasków
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"}
]'
Drugi Task czeka, aż pierwszy zostanie scalony z dev, ponieważ każdy kolejny element automatycznie otrzymuje dependsOn:[previous id].
Przykład: zatrzymanie i wznowienie Taska
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 '{}'
Wskazówki
- Przy integracji lokalnej (ta sama maszyna) warto użyć transportu stdio — jest prostszy i nie wymaga tokena.
- Przy dostępie zdalnym należy zawsze ustawić
AITM_MCP_TOKEN— bez niego serwer jest fail-closed i odmawia uruchomienia w trybie HTTP. - Do wyszukiwania Contracts i zmiennych lepiej używać narzędzi
aitm-extendedniż ręcznie wywoływać/graphql. GET /api/statusodpowiada natychmiast z pamięci podręcznej i odświeża się w tle — nie należy zakładać, że zawsze odzwierciedla najświeższy stan.