从基本工具到工作流定制

入门阶段你掌握了三个基本 MCP tool:list_devices、create_task、get_task。但要真正融入团队工作流,你需要进阶到自定义工作流 + 批量调度

Step 1:导入自定义工作流模板

iDeviceFarm 的工作流以 JSON 格式定义,结构如下:

{
  "workflow_id": "my_custom_flow",
  "name": "我的自定义流程",
  "slots": [
    {"name": "platform", "type": "string", "required": true},
    {"name": "content", "type": "string", "required": true}
  ],
  "steps": [
    {"op": "launch_app", "app": "com.example.app"},
    {"op": "input", "selector": "#input-box", "value": "${content}"},
    {"op": "tap", "selector": "#submit-btn"}
  ]
}

导入方式:farm REST API POST /api/workflow/import,传入 JSON 字符串。也可以先在控制台手动编辑测试无误后再导出复用。

Step 2:通过 run_workflow 调用

MCP 提供了 run_workflow(workflow_id, device_id, params) 工具,用法:

import httpx

def run_my_flow(device_id: str, platform: str, content: str):
    response = client.call_tool(
        "run_workflow",
        {
            "workflow_id": "my_custom_flow",
            "device_id": device_id,
            "params": {"platform": platform, "content": content}
        }
    )
    return response.task_id

注意 slots.schema 中的 ${variable_name} 引用会在运行时替换为你传入的参数值。这让你可以用同一个模板跑多种任务。

Step 3:批量任务调度

一次向多台设备下发不同任务的场景很常见。你可以并行调用:

# 伪代码:5 台设备同时跑同一工作流
devices = list_devices().result  # 获取所有在线设备
for d in devices[:5]:
    run_workflow(
        workflow_id="batch_post",
        device_id=d.id,
        params={"platform": d.platform, "content": post_templates[d.index]}
    )

P1 阶段将增加专门的批量任务调度接口,简化此类操作。

Step 4:Webhook 回调 & 结果推送

不用轮询 get_task,直接设 webhook 地址让系统在任务完成时主动推送结果:

# 创建任务时传入 callback_url
task_id = client.create_task(
    workflow_id="my_custom_flow",
    device_id="dev_001",
    params={"content": "Hello World"},
    callback_url="https://your-server.com/webhook/mcp-result"
)

webhook payload 格式:

{
  "task_id": "abc123",
  "status": "succeeded",  // or "failed"
  "started_at": "2026-09-01T14:30:00Z",
  "finished_at": "2026-09-01T14:30:45Z",
  "error_message": null,
  "logs": [{"step": 1, "op": "launch_app", "ok": true}]  // 摘要

一句话总结:MCP 不是玩具,是企业级集成基础设施。用好自定义工作流 + webhook 推送,你就能把手机操作无缝嵌入 CI/CD、运营后台或自有平台。想深入了解架构,去 原理架构 看看。