上个月有个团队要把手机操作接进自己的系统。入门用的三个 MCP 工具接不住:list_devices、create_task、get_task。他们要自己的工作流,还要一次发给多台设备。
导入自己的工作流
iEasyRun 的工作流用 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 字符串。也可以先在控制台手动编辑,试通之后再导出复用。
用参数调用
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} 会在运行时换成你传入的参数。同一个模板可以跑不同任务。
一次发给多台设备
一次向多台设备下发不同任务时,可以并行调用:
# 伪代码: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 阶段会加专门的批量任务调度接口,用来简化这类操作。
做完了用 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}] // 摘要
自定义工作流加上 webhook,可以把手机操作接进 CI/CD、运营后台,或者你自己的平台。架构见 原理架构。
深入集成
想把手机操控接进你的系统?
MCP 对接免费,配置文档下载后即可使用。