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) eserver_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_conflicte 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.
| Endpoint | Scopo |
|---|---|
GET /api/onboarding | Auto-inizializzazione dell'Agent |
GET /api/tasks | Elenca i Task (projectId?, limit?) |
GET /api/tasks/all | Elenco dei Task paginato/filtrabile |
POST /api/tasks | Crea un Task |
POST /api/tasks/chain | Crea una catena di Task dipendenti |
GET /api/tasks/:id | Dettaglio del Task |
PATCH /api/tasks/:id | Aggiorna parzialmente un Task |
DELETE /api/tasks/:id | Elimina definitivamente un Task |
POST /api/tasks/:id/run | Avvia un Task in stato pending |
POST /api/tasks/:id/stop | Ferma un singolo Task |
POST /api/tasks/stop-all | Arresto globale (filtro facoltativo tabId/projectId) |
POST /api/projects/:projectId/tasks/stop-all | Ferma tutti i Task di un progetto |
POST /api/tasks/:id/resume | Riprende un Task in stato failed/stopped/conflict |
POST /api/tasks/:id/skip | Salta uno specifico step della Pipeline |
POST /api/tasks/:id/archive | Archivia un Task completato |
POST /api/tasks/:id/restore | Ripristina un Task archiviato (rifiutato se il branch è già unito/scomparso) |
POST /api/tasks/:id/requeue, /reorder | Rimette in coda / cambia l'ordine della coda |
GET /api/tasks/:id/result|console|logs|pipeline | Risultato del Task, output della console, log e stato della Pipeline |
GET /api/archive | Cerca nei Task archiviati |
GET /api/status | Stato di tab/progetti (cache stale-while-revalidate) |
GET /api/projects | Elenca tab/progetti |
GET/PUT/PATCH /api/settings | Legge e aggiorna le impostazioni |
POST /api/backup/create | Crea un backup |
GET /api/merge/queue | Stato della Merge queue |
GET /api/service-health | Stato di salute dei servizi monitorati |
GET /api/version | Versione del server (semver, data di build, modalità di release) |
GET /api/license/status | Stato della licenza |
POST /api/license/activate | Attiva una licenza (licenseKey, instanceLabel, email) |
POST /api/server/restart|stop | Riavvia o ferma il server |
POST /graphql | Endpoint 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
| Operazione | Parametri |
|---|---|
POST /api/tasks | tabId, 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/chain | un array di oggetti con la stessa forma di POST /api/tasks — ogni elemento successivo riceve automaticamente dependsOn:[previous id] |
POST /api/tasks/:id/stop | reason? |
POST /api/tasks/:id/resume | fromStepIndex?, instructions?, skipSteps? — senza fromStepIndex, il primo step failed/stopped viene rilevato automaticamente |
POST /api/tasks/:id/skip | stepIndex oppure stepName (uno è obbligatorio) — lo step deve essere pending, oppure failed/stopped su un Task non in esecuzione |
POST /api/tasks/:id/archive | force?, reason? — solo dagli stati finished/stopped/failed/conflict |
POST /api/tasks/:id/restore | nessun body — solo Task archiviati; 409 se il branch è già merged o branch-missing |
| Strumento MCP | Parametri |
|---|---|
create_task | title, prompt, tabId, projectId (obbligatori), facoltativi priority, useWorktree, usePipeline, autoMergeDev, skipSteps[], dependsOn[] |
list_tasks | status?, tabId?, projectId? |
get_task | id |
run_task | id |
resume_task | id, 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-extendedrispetto alla chiamata manuale a/graphqlper la ricerca di Contract e variabili. GET /api/statusrisponde immediatamente dalla cache e si aggiorna in background — non dare per scontato che rifletta sempre lo stato più recente.