外部 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/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 | 启动待处理的 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|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 | 知识端点 — Contracts、变量、文档 |
这是最常用端点的精选集合,并非完整列表 — REST API 在 src/rest/RestApi.ts 以及专用路由器(skills、contracts、DOM tags、i18n、screenshots、测试基础设施、releases 等)中共有 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 相同 — 之后的每一项会自动获得 dependsOn:[previous id] |
POST /api/tasks/:id/stop | reason? |
POST /api/tasks/:id/resume | fromStepIndex?、instructions?、skipSteps? — 未提供 fromStepIndex 时,自动检测第一个失败/已停止的步骤 |
POST /api/tasks/:id/skip | stepIndex 或 stepName(必须提供其一)— 该步骤必须为 pending,或在未运行的 Task 上为 failed/stopped |
POST /api/tasks/:id/archive | force?、reason? — 仅限状态为 finished/stopped/failed/conflict 的 Task |
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"}
]'
第二个 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会立即从缓存响应并在后台刷新 — 不要假定它总是反映最新的状态。