外部 AI 客户端(MCP 客户端、脚本、其他工具)如何通过 AITM 的 MCP 服务器和 REST/GraphQL API 与其集成。

AITM MCP & API

MCP 服务器

AITM 提供两个 MCP 服务器:

  • aitm-core(35 个工具)— 项目(onboarding、list_projects、get_project_status)、Task 增删改查(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)、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)、文档与变量(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 上的 Streamable HTTP(默认端口,可用 --mcp-port 覆盖),必须使用 bearer token(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/onboardingAgent 自我初始化
GET /api/tasks列出 Task(projectId?、limit?)
GET /api/tasks/all分页/可筛选的 Task 列表
POST /api/tasks创建 Task
POST /api/tasks/chain创建一串相互依赖的 Task
GET /api/tasks/:idTask 详情
PATCH /api/tasks/:id部分更新 Task
DELETE /api/tasks/:id永久删除 Task
POST /api/tasks/:id/run启动待处理的 Task
POST /api/tasks/:id/stop停止单个 Task
POST /api/tasks/stop-all全局停止(可选 tabId/projectId 过滤)
POST /api/projects/:projectId/tasks/stop-all停止某个项目的所有 Task
POST /api/tasks/:id/resume恢复失败/已停止/冲突的 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|pipelineTask 结果、控制台输出、日志和 Pipeline 状态
GET /api/archive搜索已归档的 Task
GET /api/statusTab/项目状态(stale-while-revalidate 缓存)
GET /api/projects列出 Tab/项目
GET/PUT/PATCH /api/settings读取和更新设置
POST /api/backup/create创建备份
GET /api/merge/queueMerge 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知识端点 — Contracts、变量、文档

这是最常用端点的精选集合,并非完整列表 — REST API 在 src/rest/RestApi.ts 以及专用路由器(skills、contracts、DOM tags、i18n、screenshots、测试基础设施、releases 等)中共有 100 多个端点。

参数参考 — 最常用的操作

操作参数
POST /api/taskstabId、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 相同 — 之后的每一项会自动获得 dependsOn:[previous id]
POST /api/tasks/:id/stopreason?
POST /api/tasks/:id/resumefromStepIndex?、instructions?、skipSteps? — 未提供 fromStepIndex 时,自动检测第一个失败/已停止的步骤
POST /api/tasks/:id/skipstepIndex 或 stepName(必须提供其一)— 该步骤必须为 pending,或在未运行的 Task 上为 failed/stopped
POST /api/tasks/:id/archiveforce?、reason? — 仅限状态为 finished/stopped/failed/conflict 的 Task
POST /api/tasks/:id/restore无请求体 — 仅限已归档的 Task;如果分支已是 merged 或 branch-missing,返回 409
MCP 工具参数
create_tasktitle、prompt、tabId、projectId(必填),可选 priority、useWorktree、usePipeline、autoMergeDev、skipSteps[]、dependsOn[]
list_tasksstatus?、tabId?、projectId?
get_taskid
run_taskid
resume_taskid,可选 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"}
  ]'

第二个 Task 会等到第一个合并到 dev 之后才开始,因为之后的每一项都会自动获得 dependsOn:[previous id]。

示例:停止并恢复 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 和变量发现时,优先使用 aitm-extended 工具,而不是手动调用 /graphql。
  • GET /api/status 会立即从缓存响应并在后台刷新 — 不要假定它总是反映最新的状态。