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) sowieserver_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_conflictund 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.
| Endpoint | Zweck |
|---|---|
GET /api/onboarding | Selbstinitialisierung des Agenten |
GET /api/tasks | Tasks auflisten (projectId?, limit?) |
GET /api/tasks/all | Paginierte/filterbare Task-Liste |
POST /api/tasks | Einen Task erstellen |
POST /api/tasks/chain | Eine Kette abhängiger Tasks erstellen |
GET /api/tasks/:id | Task-Detail |
PATCH /api/tasks/:id | Einen Task teilweise aktualisieren |
DELETE /api/tasks/:id | Einen Task endgültig löschen |
POST /api/tasks/:id/run | Einen ausstehenden Task starten |
POST /api/tasks/:id/stop | Einen einzelnen Task stoppen |
POST /api/tasks/stop-all | Globaler Stopp (optionaler Filter tabId/projectId) |
POST /api/projects/:projectId/tasks/stop-all | Alle Tasks eines Projekts stoppen |
POST /api/tasks/:id/resume | Einen fehlgeschlagenen/gestoppten/Konflikt-Task fortsetzen |
POST /api/tasks/:id/skip | Einen bestimmten Pipeline-Schritt überspringen |
POST /api/tasks/:id/archive | Einen abgeschlossenen Task archivieren |
POST /api/tasks/:id/restore | Einen archivierten Task wiederherstellen (abgelehnt, wenn der Branch bereits gemergt/nicht mehr vorhanden ist) |
POST /api/tasks/:id/requeue, /reorder | Erneut einreihen / Queue-Reihenfolge ändern |
GET /api/tasks/:id/result|console|logs|pipeline | Task-Ergebnis, Konsolenausgabe, Logs und Pipeline-Zustand |
GET /api/archive | Archivierte Tasks durchsuchen |
GET /api/status | Tab-/Projektstatus (Stale-while-revalidate-Cache) |
GET /api/projects | Tabs/Projekte auflisten |
GET/PUT/PATCH /api/settings | Einstellungen lesen und aktualisieren |
POST /api/backup/create | Ein Backup erstellen |
GET /api/merge/queue | Zustand der Merge queue |
GET /api/service-health | Zustand der überwachten Dienste |
GET /api/version | Serverversion (semver, Build-Datum, Release-Modus) |
GET /api/license/status | Lizenzstatus |
POST /api/license/activate | Eine Lizenz aktivieren (licenseKey, instanceLabel, email) |
POST /api/server/restart|stop | Den Server neu starten oder stoppen |
POST /graphql | Knowledge-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
| Operation | Parameter |
|---|---|
POST /api/tasks | tabId, 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/chain | ein Array von Objekten mit derselben Form wie POST /api/tasks — jedes folgende Element erhält automatisch dependsOn:[previous id] |
POST /api/tasks/:id/stop | reason? |
POST /api/tasks/:id/resume | fromStepIndex?, instructions?, skipSteps? — ohne fromStepIndex wird der erste fehlgeschlagene/gestoppte Schritt automatisch erkannt |
POST /api/tasks/:id/skip | stepIndex oder stepName (eines ist erforderlich) — der Schritt muss pending sein oder bei einem nicht laufenden Task failed/stopped |
POST /api/tasks/:id/archive | force?, reason? — nur aus den Status finished/stopped/failed/conflict |
POST /api/tasks/:id/restore | kein Body — nur archivierte Tasks; 409, wenn der Branch bereits merged oder branch-missing ist |
| MCP-Tool | Parameter |
|---|---|
create_task | title, prompt, tabId, projectId (erforderlich), optional priority, useWorktree, usePipeline, autoMergeDev, skipSteps[], dependsOn[] |
list_tasks | status?, tabId?, projectId? |
get_task | id |
run_task | id |
resume_task | id, 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_TOKENsetzen — 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-extendeddem manuellen Aufruf von/graphqlvorziehen. GET /api/statusantwortet sofort aus dem Cache und aktualisiert im Hintergrund — nicht davon ausgehen, dass es immer den allerneuesten Zustand widerspiegelt.