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) oraz server_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_conflict oraz 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.

EndpointPrzeznaczenie
GET /api/onboardingSamoinicjalizacja Agenta
GET /api/tasksLista Tasków (projectId?, limit?)
GET /api/tasks/allLista Tasków z paginacją i filtrowaniem
POST /api/tasksUtworzenie Taska
POST /api/tasks/chainUtworzenie łańcucha zależnych Tasków
GET /api/tasks/:idSzczegóły Taska
PATCH /api/tasks/:idCzęściowa aktualizacja Taska
DELETE /api/tasks/:idTrwałe usunięcie Taska
POST /api/tasks/:id/runUruchomienie oczekującego Taska
POST /api/tasks/:id/stopZatrzymanie pojedynczego Taska
POST /api/tasks/stop-allGlobalne zatrzymanie (opcjonalny filtr tabId/projectId)
POST /api/projects/:projectId/tasks/stop-allZatrzymanie wszystkich Tasków jednego projektu
POST /api/tasks/:id/resumeWznowienie Taska w stanie failed/stopped/conflict
POST /api/tasks/:id/skipPominięcie wybranego kroku Pipeline
POST /api/tasks/:id/archiveArchiwizacja zakończonego Taska
POST /api/tasks/:id/restorePrzywrócenie zarchiwizowanego Taska (odrzucane, jeśli branch jest już scalony/usunięty)
POST /api/tasks/:id/requeue, /reorderPonowne zakolejkowanie / zmiana kolejności w kolejce
GET /api/tasks/:id/result|console|logs|pipelineWynik Taska, wyjście konsoli, logi i stan Pipeline
GET /api/archiveWyszukiwanie zarchiwizowanych Tasków
GET /api/statusStatus zakładek/projektów (pamięć podręczna stale-while-revalidate)
GET /api/projectsLista zakładek/projektów
GET/PUT/PATCH /api/settingsOdczyt i aktualizacja ustawień
POST /api/backup/createUtworzenie kopii zapasowej
GET /api/merge/queueStan Merge queue
GET /api/service-healthKondycja monitorowanych usług
GET /api/versionWersja serwera (semver, data budowy, tryb wydania)
GET /api/license/statusStatus licencji
POST /api/license/activateAktywacja licencji (licenseKey, instanceLabel, email)
POST /api/server/restart|stopRestart lub zatrzymanie serwera
POST /graphqlEndpoint 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

OperacjaParametry
POST /api/taskstabId, 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/chaintablica obiektów o takim samym kształcie jak POST /api/tasks — każdy kolejny element automatycznie otrzymuje dependsOn:[previous id]
POST /api/tasks/:id/stopreason?
POST /api/tasks/:id/resumefromStepIndex?, instructions?, skipSteps? — bez fromStepIndex automatycznie wykrywany jest pierwszy nieudany/zatrzymany krok
POST /api/tasks/:id/skipstepIndex lub stepName (wymagane jedno z nich) — krok musi mieć stan pending albo failed/stopped w niedziałającym Tasku
POST /api/tasks/:id/archiveforce?, reason? — tylko ze statusów finished/stopped/failed/conflict
POST /api/tasks/:id/restorebez ciała żądania — tylko zarchiwizowane Taski; 409, jeśli branch ma już stan merged lub branch-missing
Narzędzie MCPParametry
create_tasktitle, prompt, tabId, projectId (wymagane), opcjonalnie priority, useWorktree, usePipeline, autoMergeDev, skipSteps[], dependsOn[]
list_tasksstatus?, tabId?, projectId?
get_taskid
run_taskid
resume_taskid, 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-extended niż ręcznie wywoływać /graphql.
  • GET /api/status odpowiada 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.