Come i client AI esterni (client MCP, script, altri strumenti) si integrano con AITM tramite i suoi server MCP e l'API REST/GraphQL.

AITM MCP & API

Server MCP

AITM espone due server MCP:

  • aitm-core (35 strumenti) — progetti (onboarding, list_projects, get_project_status), CRUD dei Task (create_task, list_tasks, get_task, update_task, delete_task, search_tasks), ciclo di vita (run_task, stop_task, stop_project_tasks, stop_all_tasks, resume_task, skip_step, requeue_task — distruttivo, archive_task, restore_task, reorder_task), dati dei Task (get_task_result, get_task_console, get_task_logs, get_pipeline_status), ottimizzazione dei prompt (optimize_prompt, apply_optimization), ricerca nell'archivio (search_archive), impostazioni (get_settings, update_settings), licenza (license_status, license_activate, license_deactivate, license_upload_offline_token, license_remove_offline_token) e server_restart/server_stop.
  • aitm-extended (43 strumenti) — ambiente di test (test_env_status, test_app_build, test_app_start, test_app_stop, test_project_pull, get_test_history), screenshot (get_screenshot_manifest, get_screenshot, get_screenshot_history), Contract (search_contracts, get_contract_detail, get_module_summary, find_precedent_tasks, get_danger_zones, investigate_variable, blast_radius, context_for, contracts_health, contracts_resync), documentazione e variabili (search_docs, get_docs_for_variable, get_behavior_chain, search_variables, get_variable_tree, get_dom_page, search_dom), auto-verifica (run_selfcheck) e backup (create_backup), conversazioni (list_conversations, get_conversation, delete_conversation), messaggistica 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 e stato di salute dei servizi (get_service_health).

Trasporti: stdio (locale, predefinito per entrambi i server) e Streamable HTTP sulla porta 3335 (predefinita, sovrascrivibile con --mcp-port) con un bearer token obbligatorio (AITM_MCP_TOKEN o config.mcp.httpAuthToken, fail-closed — il server rifiuta di avviarsi in modalità HTTP senza di esso) e TLS facoltativo (--tls-cert/--tls-key). Solo aitm-core è registrato nel .mcp.json predefinito di questo repository (stdio); aitm-extended viene avviato separatamente (facoltativamente con --http).

Esempio: collegare un client MCP (stdio)

{
  "mcpServers": {
    "aitm-core": {
      "command": "npx",
      "args": ["tsx", "src/mcp/AitmCoreMcpServer.ts", "--rest-url", "http://localhost:3333"]
    }
  }
}

Esempio: client MCP remoto (HTTP)

{
  "mcpServers": {
    "aitm-core-remote": {
      "url": "https://your-host:3335",
      "headers": { "Authorization": "Bearer <AITM_MCP_TOKEN>" }
    }
  }
}

API REST

Base http://localhost:3333, JSON. Porte: 3333 REST/GraphQL/UI, 3334 HTTPS, 3335 MCP Streamable HTTP.

EndpointScopo
GET /api/onboardingAuto-inizializzazione dell'Agent
GET /api/tasksElenca i Task (projectId?, limit?)
GET /api/tasks/allElenco dei Task paginato/filtrabile
POST /api/tasksCrea un Task
POST /api/tasks/chainCrea una catena di Task dipendenti
GET /api/tasks/:idDettaglio del Task
PATCH /api/tasks/:idAggiorna parzialmente un Task
DELETE /api/tasks/:idElimina definitivamente un Task
POST /api/tasks/:id/runAvvia un Task in stato pending
POST /api/tasks/:id/stopFerma un singolo Task
POST /api/tasks/stop-allArresto globale (filtro facoltativo tabId/projectId)
POST /api/projects/:projectId/tasks/stop-allFerma tutti i Task di un progetto
POST /api/tasks/:id/resumeRiprende un Task in stato failed/stopped/conflict
POST /api/tasks/:id/skipSalta uno specifico step della Pipeline
POST /api/tasks/:id/archiveArchivia un Task completato
POST /api/tasks/:id/restoreRipristina un Task archiviato (rifiutato se il branch è già unito/scomparso)
POST /api/tasks/:id/requeue, /reorderRimette in coda / cambia l'ordine della coda
GET /api/tasks/:id/result|console|logs|pipelineRisultato del Task, output della console, log e stato della Pipeline
GET /api/archiveCerca nei Task archiviati
GET /api/statusStato di tab/progetti (cache stale-while-revalidate)
GET /api/projectsElenca tab/progetti
GET/PUT/PATCH /api/settingsLegge e aggiorna le impostazioni
POST /api/backup/createCrea un backup
GET /api/merge/queueStato della Merge queue
GET /api/service-healthStato di salute dei servizi monitorati
GET /api/versionVersione del server (semver, data di build, modalità di release)
GET /api/license/statusStato della licenza
POST /api/license/activateAttiva una licenza (licenseKey, instanceLabel, email)
POST /api/server/restart|stopRiavvia o ferma il server
POST /graphqlEndpoint di conoscenza — Contract, variabili, documentazione

Questo è un insieme selezionato degli endpoint più usati, non l'elenco completo — l'API REST ha oltre 100 endpoint distribuiti tra src/rest/RestApi.ts e router dedicati (Skills, Contract, tag DOM, i18n, screenshot, infrastruttura di test, release e altro).

Riferimento dei parametri — operazioni più usate

OperazioneParametri
POST /api/taskstabId, projectId, title (≤ 60 caratteri), prompt (≤ 50 KB), facoltativi priority (low|medium|high, predefinito medium), useWorktree/usePipeline/autoMergeDev (predefinito true), skipSteps, dependsOn, overridePreFlight
POST /api/tasks/chainun array di oggetti con la stessa forma di POST /api/tasks — ogni elemento successivo riceve automaticamente dependsOn:[previous id]
POST /api/tasks/:id/stopreason?
POST /api/tasks/:id/resumefromStepIndex?, instructions?, skipSteps? — senza fromStepIndex, il primo step failed/stopped viene rilevato automaticamente
POST /api/tasks/:id/skipstepIndex oppure stepName (uno è obbligatorio) — lo step deve essere pending, oppure failed/stopped su un Task non in esecuzione
POST /api/tasks/:id/archiveforce?, reason? — solo dagli stati finished/stopped/failed/conflict
POST /api/tasks/:id/restorenessun body — solo Task archiviati; 409 se il branch è già merged o branch-missing
Strumento MCPParametri
create_tasktitle, prompt, tabId, projectId (obbligatori), facoltativi priority, useWorktree, usePipeline, autoMergeDev, skipSteps[], dependsOn[]
list_tasksstatus?, tabId?, projectId?
get_taskid
run_taskid
resume_taskid, facoltativi fromStepIndex, instructions, skipSteps

Esempio: creare un 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}'

Nota: title max 60 caratteri, prompt max 50 KB; i valori predefiniti di useWorktree/usePipeline/autoMergeDev sono true, la priority predefinita è medium.

Esempio: una catena di Task dipendenti

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"}
  ]'

Il secondo Task attende che il primo sia stato unito in dev, poiché ogni elemento successivo riceve automaticamente dependsOn:[previous id].

Esempio: fermare e riprendere un 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 '{}'

Suggerimenti

  • Per l'integrazione locale (stessa macchina), usare il trasporto stdio — è più semplice e non richiede un token.
  • Per l'accesso remoto, impostare sempre AITM_MCP_TOKEN — senza di esso il server è fail-closed e rifiuta di avviarsi in modalità HTTP.
  • Preferire gli strumenti aitm-extended rispetto alla chiamata manuale a /graphql per la ricerca di Contract e variabili.
  • GET /api/status risponde immediatamente dalla cache e si aggiorna in background — non dare per scontato che rifletta sempre lo stato più recente.