外部のAIクライアント(MCPクライアント、スクリプト、その他のツール)が、MCPサーバーとREST/GraphQL APIを通じてAITMと連携する方法を説明します。
AITM MCP & API
MCPサーバー
AITMは2つのMCPサーバーを公開しています。
- aitm-core(35ツール) — プロジェクト(
onboarding、list_projects、get_project_status)、TaskのCRUD(create_task、list_tasks、get_task、update_task、delete_task、search_tasks)、ライフサイクル(run_task、stop_task、stop_project_tasks、stop_all_tasks、resume_task、skip_step、requeue_task— 破壊的、archive_task、restore_task、reorder_task)、Taskデータ(get_task_result、get_task_console、get_task_logs、get_pipeline_status)、プロンプトの最適化(optimize_prompt、apply_optimization)、アーカイブ検索(search_archive)、設定(get_settings、update_settings)、ライセンス(license_status、license_activate、license_deactivate、license_upload_offline_token、license_remove_offline_token)、およびserver_restart/server_stop。 - aitm-extended(43ツール) — テスト環境(
test_env_status、test_app_build、test_app_start、test_app_stop、test_project_pull、get_test_history)、スクリーンショット(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)、ドキュメントと変数(search_docs、get_docs_for_variable、get_behavior_chain、search_variables、get_variable_tree、get_dom_page、search_dom)、セルフチェック(run_selfcheck)とバックアップ(create_backup)、会話(list_conversations、get_conversation、delete_conversation)、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、およびサービスヘルス(get_service_health)。
トランスポート:stdio(ローカル、両サーバーのデフォルト)と、ポート3335(デフォルト、--mcp-portで変更可能)のStreamable HTTP。後者には必須のベアラートークン(AITM_MCP_TOKENまたはconfig.mcp.httpAuthToken、フェイルクローズド — トークンなしではHTTPモードでサーバーが起動を拒否します)と、任意のTLS(--tls-cert/--tls-key)があります。このリポジトリのデフォルトの.mcp.jsonに登録されているのはaitm-coreのみ(stdio)で、aitm-extendedは別途起動します(任意で--http付き)。
例:MCPクライアントの接続(stdio)
{
"mcpServers": {
"aitm-core": {
"command": "npx",
"args": ["tsx", "src/mcp/AitmCoreMcpServer.ts", "--rest-url", "http://localhost:3333"]
}
}
}
例:リモートMCPクライアント(HTTP)
{
"mcpServers": {
"aitm-core-remote": {
"url": "https://your-host:3335",
"headers": { "Authorization": "Bearer <AITM_MCP_TOKEN>" }
}
}
}
REST API
ベースはhttp://localhost:3333、JSON形式です。ポート:3333はREST/GraphQL/UI、3334はHTTPS、3335はMCP Streamable HTTP。
| エンドポイント | 用途 |
|---|---|
GET /api/onboarding | Agentの自己初期化 |
GET /api/tasks | Taskの一覧(projectId?、limit?) |
GET /api/tasks/all | ページネーション/フィルター可能なTask一覧 |
POST /api/tasks | Taskの作成 |
POST /api/tasks/chain | 依存するTaskのチェーンを作成 |
GET /api/tasks/:id | Taskの詳細 |
PATCH /api/tasks/:id | Taskの部分更新 |
DELETE /api/tasks/:id | Taskの完全削除 |
POST /api/tasks/:id/run | pendingのTaskを開始 |
POST /api/tasks/:id/stop | 単一のTaskを停止 |
POST /api/tasks/stop-all | グローバル停止(任意のtabId/projectIdフィルター) |
POST /api/projects/:projectId/tasks/stop-all | 1つのプロジェクトのすべてのTaskを停止 |
POST /api/tasks/:id/resume | failed/stopped/conflictのTaskを再開 |
POST /api/tasks/:id/skip | 特定のPipelineステップをスキップ |
POST /api/tasks/:id/archive | 完了したTaskをアーカイブ |
POST /api/tasks/:id/restore | アーカイブ済みTaskを復元(ブランチがすでにマージ済み/存在しない場合は拒否) |
POST /api/tasks/:id/requeue、/reorder | 再キュー / キュー順序の変更 |
GET /api/tasks/:id/result|console|logs|pipeline | Taskの結果、コンソール出力、ログ、Pipelineの状態 |
GET /api/archive | アーカイブ済みTaskの検索 |
GET /api/status | Tab/プロジェクトの状態(stale-while-revalidateキャッシュ) |
GET /api/projects | Tab/プロジェクトの一覧 |
GET/PUT/PATCH /api/settings | 設定の読み取りと更新 |
POST /api/backup/create | バックアップの作成 |
GET /api/merge/queue | Merge queueの状態 |
GET /api/service-health | 監視対象サービスのヘルス |
GET /api/version | サーバーのバージョン(semver、ビルド日、リリースモード) |
GET /api/license/status | ライセンスの状態 |
POST /api/license/activate | ライセンスの有効化(licenseKey、instanceLabel、email) |
POST /api/server/restart|stop | サーバーの再起動または停止 |
POST /graphql | ナレッジエンドポイント — Contract、変数、ドキュメント |
これは最もよく使われるエンドポイントを厳選したもので、完全な一覧ではありません — REST APIには、src/rest/RestApi.tsと専用ルーター(skills、contracts、DOMタグ、i18n、スクリーンショット、テストインフラ、リリースなど)にまたがって100を超えるエンドポイントがあります。
パラメータリファレンス — 最もよく使う操作
| 操作 | パラメータ |
|---|---|
POST /api/tasks | tabId、projectId、title(60文字以内)、prompt(50 KB以内)、任意でpriority(low|medium|high、デフォルトはmedium)、useWorktree/usePipeline/autoMergeDev(デフォルトはtrue)、skipSteps、dependsOn、overridePreFlight |
POST /api/tasks/chain | POST /api/tasksと同じ形のオブジェクトの配列 — 2番目以降の各項目には自動的にdependsOn:[previous id]が設定されます |
POST /api/tasks/:id/stop | reason? |
POST /api/tasks/:id/resume | fromStepIndex?、instructions?、skipSteps? — fromStepIndexがない場合は、最初のfailed/stoppedのステップが自動的に検出されます |
POST /api/tasks/:id/skip | stepIndexまたはstepName(いずれか一方が必須) — ステップはpendingであるか、実行中でないTaskのfailed/stoppedである必要があります |
POST /api/tasks/:id/archive | force?、reason? — ステータスがfinished/stopped/failed/conflictの場合のみ |
POST /api/tasks/:id/restore | ボディなし — アーカイブ済みTaskのみ。ブランチがすでにmergedまたはbranch-missingの場合は409 |
| MCPツール | パラメータ |
|---|---|
create_task | title、prompt、tabId、projectId(必須)、任意でpriority、useWorktree、usePipeline、autoMergeDev、skipSteps[]、dependsOn[] |
list_tasks | status?、tabId?、projectId? |
get_task | id |
run_task | id |
resume_task | id、任意でfromStepIndex、instructions、skipSteps |
例: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}'
注:titleは最大60文字、promptは最大50 KBです。useWorktree/usePipeline/autoMergeDevのデフォルトはtrue、priorityのデフォルトはmediumです。
例:依存するTaskのチェーン
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"}
]'
2番目以降の各項目には自動的にdependsOn:[previous id]が設定されるため、2番目のTaskは最初のTaskがdevにマージされるまで待機します。
例: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 '{}'
ヒント
- ローカル(同一マシン)での連携にはstdioトランスポートを使いましょう — よりシンプルで、トークンも不要です。
- リモートアクセスでは、必ず
AITM_MCP_TOKENを設定してください — これがないとサーバーはフェイルクローズドとなり、HTTPモードで起動を拒否します。 - Contractや変数の探索には、
/graphqlを手作業で呼び出すよりもaitm-extendedのツールを使うことをお勧めします。 GET /api/statusはキャッシュから即座に応答し、バックグラウンドで更新されます — 常に最新の状態を反映しているとは限りません。