跳到主要内容

将 Server Workflow 连接为 MCP

每个可在 Server 运行的 projectType: "workflow" 项目都提供一个标准 Streamable HTTP MCP 入口。项目中的每个 entrypoint 对应一个 tool。Conversation 和 Kanban 不提供该入口。

在 Server Web 中打开 Workflow 项目详情的 MCP 页面,可以选择 draft、latest 或精确版本,复制 URL、Bearer header 模板和通用客户端 JSON,并查看当前 target 的 tool 目录。页面只显示 <YOUR_API_KEY>,不会读取或回显已保存密钥。

连接地址

https://workflow.example.com/api/workflows/<PROJECT_ID>/mcp?target=latest

通用 MCP 客户端配置:

{
"mcpServers": {
"workflow-11111111-1111-4111-8111-111111111111": {
"url": "https://workflow.example.com/api/workflows/11111111-1111-4111-8111-111111111111/mcp?target=latest",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}

MCP 只接受 Authorization: Bearer 中的账户 API Key 或服务器管理员 Key。浏览器 cookie session、Embed token、Webhook secret 和匿名请求都会被拒绝。账户 Key 仍需拥有项目运行权限和 runs.create;Server 在每次 HTTP 请求和每次 tool 调用前重新检查权限、项目运行门禁和队列限制。

Target 与会话

target会话行为
latestinitialize 时解析为当时的精确在线版本,之后保持不变。
1.2.3始终固定到该精确版本。
draft固定到 initialize 时的源码 revision;草稿变化后旧会话拒绝继续调用。

初始化响应返回 Mcp-Session-Id。后续 POSTGET SSE 和 DELETE 必须继续携带该 header、相同 Bearer 凭据、项目和 target。会话不保存原始 Key,默认空闲 30 分钟后回收;过期、DELETE 或 Server 关闭会取消活动调用。跨凭据、跨项目或跨 target 复用会话返回 403。

连接建立后 tool 列表固定。项目或 draft 变化、发布新版本、entrypoint/params 变化后,断开并重新 initialize 才会得到新目录。

Tool 参数与文件

参数类型、required、默认值、静态 options、日期格式和未知字段拒绝规则与本地 MCP一致。服务端 file 参数使用 { "id": "..." },multiple file 使用该对象数组。不要发送名称、MIME、路径、URL 或 Base64;Server 会按 ID 重新读取权威 metadata,并确认文件属于当前项目。

先通过现有文件 API 上传二进制内容:

curl --request POST \
--header "Authorization: Bearer $WORKFLOW_API_KEY" \
--header "Content-Type: application/octet-stream" \
--data-binary @./spec.pdf \
"https://workflow.example.com/api/workflows/$PROJECT_ID/files?fileName=spec.pdf&mimeType=application/pdf"

响应 data[0].id 用作 MCP tool 参数:

{
"prompt": "检查规范",
"document": {
"id": "wf_0123456789abcdef"
}
}

文件 ID 属于其它项目、不存在或 metadata 不是 server 文件时,调用以 MCP InvalidParams 失败。

执行、交互与审计

tool call 复用 Server 现有的 preflightRun、运行队列、持久化 run、related-project、Server 文件存储和 submitUserInput。每次调用都会创建可在运行日志中查询的 runId,并写入 MCP 会话、tool、恢复和 run 审计事件;日志来源显示为 mcp

支持 form elicitation 的客户端可以在 waiting_for_input 或工具审批时继续同一 runId,并连续处理多次询问。不支持 elicitation、待输入包含 file 字段,或包含未配置静态 options 的任意数组字段时,tool 返回 interaction_required、runId 和字段摘要,不会自动批准。交互式多选字段需要配置静态 options,才能通过标准 MCP form 恢复。

成功的文本 contentstructuredContent 都包含:

{
"runId": "20260828-abcd",
"status": "success",
"entrypointId": "validate",
"entrypointTitle": "Validate",
"output": {}
}

运行失败、非零业务 errCode、取消或超时返回 isError: true 和精简 error。Server 不通过 MCP 返回完整 report、节点明细、stdout、stderr 或凭据。参数格式错误是 MCP InvalidParams;HTTP 鉴权失败使用 401/403;已进入 workflow 的失败是 MCP tool error。

协议方法、header 和 HTTP response 也会在文档站的 Server API 标签页中按 MCP operation 生成。