Cómo se integran con AITM los clientes de IA externos (clientes MCP, scripts, otras herramientas) a través de sus servidores MCP y de la API REST/GraphQL.

AITM MCP & API

Servidores MCP

AITM expone dos servidores MCP:

  • aitm-core (35 herramientas) — proyectos (onboarding, list_projects, get_project_status), CRUD de Tasks (create_task, list_tasks, get_task, update_task, delete_task, search_tasks), ciclo de vida (run_task, stop_task, stop_project_tasks, stop_all_tasks, resume_task, skip_step, requeue_task — destructiva, archive_task, restore_task, reorder_task), datos de Tasks (get_task_result, get_task_console, get_task_logs, get_pipeline_status), optimización de prompts (optimize_prompt, apply_optimization), búsqueda en el archivo (search_archive), ajustes (get_settings, update_settings), licencia (license_status, license_activate, license_deactivate, license_upload_offline_token, license_remove_offline_token) y server_restart/server_stop.
  • aitm-extended (43 herramientas) — entorno de pruebas (test_env_status, test_app_build, test_app_start, test_app_stop, test_project_pull, get_test_history), capturas de pantalla (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), documentación y variables (search_docs, get_docs_for_variable, get_behavior_chain, search_variables, get_variable_tree, get_dom_page, search_dom), autocomprobación (run_selfcheck) y copia de seguridad (create_backup), conversaciones (list_conversations, get_conversation, delete_conversation), mensajería de 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 y estado de los servicios (get_service_health).

Transportes: stdio (local, predeterminado para ambos servidores) y Streamable HTTP en el puerto 3335 (predeterminado, sustituible con --mcp-port) con un bearer token obligatorio (AITM_MCP_TOKEN o config.mcp.httpAuthToken, fail-closed — el servidor se niega a arrancar en modo HTTP sin él) y TLS opcional (--tls-cert/--tls-key). Solo aitm-core está registrado en el .mcp.json predeterminado de este repositorio (stdio); aitm-extended se lanza por separado (opcionalmente con --http).

Ejemplo: conectar un cliente MCP (stdio)

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

Ejemplo: cliente 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. Puertos: 3333 REST/GraphQL/UI, 3334 HTTPS, 3335 MCP Streamable HTTP.

EndpointFinalidad
GET /api/onboardingAutoinicialización del Agent
GET /api/tasksListar Tasks (projectId?, limit?)
GET /api/tasks/allLista de Tasks paginada/filtrable
POST /api/tasksCrear un Task
POST /api/tasks/chainCrear una cadena de Tasks dependientes
GET /api/tasks/:idDetalle del Task
PATCH /api/tasks/:idActualizar parcialmente un Task
DELETE /api/tasks/:idEliminar un Task de forma permanente
POST /api/tasks/:id/runIniciar un Task pendiente
POST /api/tasks/:id/stopDetener un único Task
POST /api/tasks/stop-allParada global (filtro opcional tabId/projectId)
POST /api/projects/:projectId/tasks/stop-allDetener todos los Tasks de un proyecto
POST /api/tasks/:id/resumeReanudar un Task fallido/detenido/en conflicto
POST /api/tasks/:id/skipOmitir un paso concreto del Pipeline
POST /api/tasks/:id/archiveArchivar un Task terminado
POST /api/tasks/:id/restoreRestaurar un Task archivado (rechazado si la rama ya está fusionada/eliminada)
POST /api/tasks/:id/requeue, /reorderVolver a encolar / cambiar el orden de la cola
GET /api/tasks/:id/result|console|logs|pipelineResultado del Task, salida de consola, registros y estado del Pipeline
GET /api/archiveBuscar Tasks archivados
GET /api/statusEstado de pestañas/proyectos (caché stale-while-revalidate)
GET /api/projectsListar pestañas/proyectos
GET/PUT/PATCH /api/settingsLeer y actualizar ajustes
POST /api/backup/createCrear una copia de seguridad
GET /api/merge/queueEstado de la Merge queue
GET /api/service-healthEstado de los servicios monitorizados
GET /api/versionVersión del servidor (semver, fecha de compilación, modo de release)
GET /api/license/statusEstado de la licencia
POST /api/license/activateActivar una licencia (licenseKey, instanceLabel, email)
POST /api/server/restart|stopReiniciar o detener el servidor
POST /graphqlEndpoint de conocimiento — Contracts, variables, documentación

Es un conjunto seleccionado de los endpoints más usados, no la lista completa — la API REST tiene más de 100 endpoints repartidos entre src/rest/RestApi.ts y routers dedicados (Skills, Contracts, etiquetas DOM, i18n, capturas de pantalla, infraestructura de pruebas, releases y más).

Referencia de parámetros — operaciones más usadas

OperaciónParámetros
POST /api/taskstabId, projectId, title (≤ 60 caracteres), prompt (≤ 50 KB), opcionales priority (low|medium|high, por defecto medium), useWorktree/usePipeline/autoMergeDev (por defecto true), skipSteps, dependsOn, overridePreFlight
POST /api/tasks/chainun array de objetos con la misma forma que POST /api/tasks — cada elemento posterior recibe automáticamente dependsOn:[previous id]
POST /api/tasks/:id/stopreason?
POST /api/tasks/:id/resumefromStepIndex?, instructions?, skipSteps? — sin fromStepIndex, se detecta automáticamente el primer paso fallido/detenido
POST /api/tasks/:id/skipstepIndex o stepName (se requiere uno) — el paso debe estar pending, o failed/stopped en un Task que no se esté ejecutando
POST /api/tasks/:id/archiveforce?, reason? — solo desde los estados finished/stopped/failed/conflict
POST /api/tasks/:id/restoresin cuerpo — solo Tasks archivados; 409 si la rama ya está merged o branch-missing
Herramienta MCPParámetros
create_tasktitle, prompt, tabId, projectId (obligatorios), opcionales priority, useWorktree, usePipeline, autoMergeDev, skipSteps[], dependsOn[]
list_tasksstatus?, tabId?, projectId?
get_taskid
run_taskid
resume_taskid, opcionales fromStepIndex, instructions, skipSteps

Ejemplo: crear 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 máx. 60 caracteres, prompt máx. 50 KB; los valores por defecto de useWorktree/usePipeline/autoMergeDev son true, la priority por defecto es medium.

Ejemplo: una cadena de Tasks dependientes

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

El segundo Task espera a que el primero se fusione en dev, ya que cada elemento posterior recibe automáticamente dependsOn:[previous id].

Ejemplo: detener y reanudar 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 '{}'

Consejos

  • Para la integración local (misma máquina), conviene usar el transporte stdio — es más sencillo y no requiere token.
  • Para el acceso remoto, conviene establecer siempre AITM_MCP_TOKEN — el servidor es fail-closed sin él y se niega a arrancar en modo HTTP.
  • Es preferible usar las herramientas de aitm-extended en lugar de llamar a /graphql a mano para descubrir Contracts y variables.
  • GET /api/status responde al instante desde la caché y se actualiza en segundo plano — no debe asumirse que siempre refleja el estado más reciente.