Wie externe KI-Clients (MCP-Clients, Skripte, andere Werkzeuge) über die MCP-Server und die REST-/GraphQL-API von AITM integriert werden.

AITM MCP & API

MCP-Server

AITM stellt zwei MCP-Server bereit:

  • aitm-core (35 Tools) — Projekte (onboarding, list_projects, get_project_status), Task-CRUD (create_task, list_tasks, get_task, update_task, delete_task, search_tasks), Lebenszyklus (run_task, stop_task, stop_project_tasks, stop_all_tasks, resume_task, skip_step, requeue_task — destruktiv, archive_task, restore_task, reorder_task), Task-Daten (get_task_result, get_task_console, get_task_logs, get_pipeline_status), Prompt-Optimierung (optimize_prompt, apply_optimization), Archivsuche (search_archive), Einstellungen (get_settings, update_settings), Lizenz (license_status, license_activate, license_deactivate, license_upload_offline_token, license_remove_offline_token) sowie server_restart/server_stop.
  • aitm-extended (43 Tools) — Testumgebung (test_env_status, test_app_build, test_app_start, test_app_stop, test_project_pull, get_test_history), Screenshots (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), Docs & Variablen (search_docs, get_docs_for_variable, get_behavior_chain, search_variables, get_variable_tree, get_dom_page, search_dom), Selbstprüfung (run_selfcheck) und Backup (create_backup), Unterhaltungen (list_conversations, get_conversation, delete_conversation), Chat-/Brainstorm-Nachrichten (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 und Service-Health (get_service_health).

Transporte: stdio (lokal, Standard für beide Server) und Streamable HTTP auf Port 3335 (Standard, mit --mcp-port überschreibbar) mit einem obligatorischen Bearer-Token (AITM_MCP_TOKEN oder config.mcp.httpAuthToken, fail-closed — der Server verweigert den Start im HTTP-Modus ohne Token) und optionalem TLS (--tls-cert/--tls-key). In der Standard-.mcp.json dieses Repos ist nur aitm-core registriert (stdio); aitm-extended wird separat gestartet (optional mit --http).

Beispiel: einen MCP-Client verbinden (stdio)

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

Beispiel: Remote-MCP-Client (HTTP)

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

REST-API

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

EndpointZweck
GET /api/onboardingSelbstinitialisierung des Agenten
GET /api/tasksTasks auflisten (projectId?, limit?)
GET /api/tasks/allPaginierte/filterbare Task-Liste
POST /api/tasksEinen Task erstellen
POST /api/tasks/chainEine Kette abhängiger Tasks erstellen
GET /api/tasks/:idTask-Detail
PATCH /api/tasks/:idEinen Task teilweise aktualisieren
DELETE /api/tasks/:idEinen Task endgültig löschen
POST /api/tasks/:id/runEinen ausstehenden Task starten
POST /api/tasks/:id/stopEinen einzelnen Task stoppen
POST /api/tasks/stop-allGlobaler Stopp (optionaler Filter tabId/projectId)
POST /api/projects/:projectId/tasks/stop-allAlle Tasks eines Projekts stoppen
POST /api/tasks/:id/resumeEinen fehlgeschlagenen/gestoppten/Konflikt-Task fortsetzen
POST /api/tasks/:id/skipEinen bestimmten Pipeline-Schritt überspringen
POST /api/tasks/:id/archiveEinen abgeschlossenen Task archivieren
POST /api/tasks/:id/restoreEinen archivierten Task wiederherstellen (abgelehnt, wenn der Branch bereits gemergt/nicht mehr vorhanden ist)
POST /api/tasks/:id/requeue, /reorderErneut einreihen / Queue-Reihenfolge ändern
GET /api/tasks/:id/result|console|logs|pipelineTask-Ergebnis, Konsolenausgabe, Logs und Pipeline-Zustand
GET /api/archiveArchivierte Tasks durchsuchen
GET /api/statusTab-/Projektstatus (Stale-while-revalidate-Cache)
GET /api/projectsTabs/Projekte auflisten
GET/PUT/PATCH /api/settingsEinstellungen lesen und aktualisieren
POST /api/backup/createEin Backup erstellen
GET /api/merge/queueZustand der Merge queue
GET /api/service-healthZustand der überwachten Dienste
GET /api/versionServerversion (semver, Build-Datum, Release-Modus)
GET /api/license/statusLizenzstatus
POST /api/license/activateEine Lizenz aktivieren (licenseKey, instanceLabel, email)
POST /api/server/restart|stopDen Server neu starten oder stoppen
POST /graphqlKnowledge-Endpunkt — Contracts, Variablen, Docs

Dies ist eine kuratierte Auswahl der am häufigsten genutzten Endpunkte, nicht die vollständige Liste — die REST-API umfasst über 100 Endpunkte in src/rest/RestApi.ts und eigenen Routern (Skills, Contracts, DOM-Tags, i18n, Screenshots, Testinfrastruktur, Releases und mehr).

Parameterreferenz — am häufigsten genutzte Operationen

OperationParameter
POST /api/taskstabId, projectId, title (≤ 60 Zeichen), prompt (≤ 50 KB), optional priority (low|medium|high, Standard medium), useWorktree/usePipeline/autoMergeDev (Standard true), skipSteps, dependsOn, overridePreFlight
POST /api/tasks/chainein Array von Objekten mit derselben Form wie POST /api/tasks — jedes folgende Element erhält automatisch dependsOn:[previous id]
POST /api/tasks/:id/stopreason?
POST /api/tasks/:id/resumefromStepIndex?, instructions?, skipSteps? — ohne fromStepIndex wird der erste fehlgeschlagene/gestoppte Schritt automatisch erkannt
POST /api/tasks/:id/skipstepIndex oder stepName (eines ist erforderlich) — der Schritt muss pending sein oder bei einem nicht laufenden Task failed/stopped
POST /api/tasks/:id/archiveforce?, reason? — nur aus den Status finished/stopped/failed/conflict
POST /api/tasks/:id/restorekein Body — nur archivierte Tasks; 409, wenn der Branch bereits merged oder branch-missing ist
MCP-ToolParameter
create_tasktitle, prompt, tabId, projectId (erforderlich), optional priority, useWorktree, usePipeline, autoMergeDev, skipSteps[], dependsOn[]
list_tasksstatus?, tabId?, projectId?
get_taskid
run_taskid
resume_taskid, optional fromStepIndex, instructions, skipSteps

Beispiel: einen Task erstellen

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

Hinweis: title höchstens 60 Zeichen, prompt höchstens 50 KB; die Standardwerte für useWorktree/usePipeline/autoMergeDev sind true, die Standard-priority ist medium.

Beispiel: eine Kette abhängiger Tasks

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

Der zweite Task wartet, bis der erste in dev gemergt ist, da jedes folgende Element automatisch dependsOn:[previous id] erhält.

Beispiel: einen Task stoppen und fortsetzen

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 '{}'

Tipps

  • Für lokale Integration (derselbe Rechner) den stdio-Transport verwenden — er ist einfacher und benötigt kein Token.
  • Für Fernzugriff immer AITM_MCP_TOKEN setzen — ohne es ist der Server fail-closed und verweigert den Start im HTTP-Modus.
  • Für die Entdeckung von Contracts und Variablen die Tools von aitm-extended dem manuellen Aufruf von /graphql vorziehen.
  • GET /api/status antwortet sofort aus dem Cache und aktualisiert im Hintergrund — nicht davon ausgehen, dass es immer den allerneuesten Zustand widerspiegelt.