MCP 服务器工具参考
本页介绍实例级 MCP 服务器提供的全部工具。
自 n8n 2.47.0 起,如果实例受保护(只读),n8n 会阻止所有未标注 readOnlyHint: true 的工具。唯一例外是 execute_workflow,且 executionMode 必须设为 "production"。被阻止的调用会返回错误结果,消息为 This instance is protected. Use read-only operations or production workflow executions.
工作流管理
search_workflows
使用可选筛选条件搜索工作流,返回每个工作流的预览。
参数
| 名称 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
query | string | 否 | 按名称或描述筛选 | |
projectId | string | 否 | 按项目 ID 筛选 | |
tags | string[] | 否 | 按标签名筛选,采用 AND 语义:工作流必须具有列出的全部标签才会匹配。 | |
limit | integer | 否 | 200 | 限制结果数量,最多 200 条 |
sortBy | string | 否 | "updatedAt:desc" | 结果排序方式,可选:"updatedAt:desc"、"updatedAt:asc"、"createdAt:desc"、"createdAt:asc"、"name:asc"、"name:desc" |
folderId | string | 否 | 按文件夹筛选。传入 "0" 时,仅匹配位于项目根目录而非文件夹内的工作流。 | |
includeSubfolders | boolean | 否 | true | folderId 搜索是否包含该文件夹的子文件夹。设为 false 时,仅匹配直接位于此文件夹内的工作流。folderId 为 "0" 时忽略。 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
data | array | 工作流预览列表 |
data[].id | string | 工作流的唯一标识符 |
data[].name | string | null | 工作流名称 |
data[].description | string | null | 工作流描述 |
data[].active | boolean | null | 工作流是否处于活跃状态 |
data[].createdAt | string | null | 工作流创建时的 ISO 时间戳 |
data[].updatedAt | string | null | 工作流最后保存时的 ISO 时间戳 |
data[].triggerCount | number | null | 与工作流关联的触发器数量 |
data[].availableInMCP | boolean | 工作流是否对 MCP 工具可见 |
data[].parentFolderId | string | null | 工作流所在文件夹的 ID;位于项目根目录时为 null |
data[].tags | array | 分配给工作流的标签,每个标签含 id 和 name |
count | integer | 符合筛选条件的工作流总数 |
说明
- 结果数量上限为 200。
- 默认按最近更新时间排序,最新的工作流在前。
- 自 n8n 2.27.0 起,支持按
tags筛选,结果也包含tags字段。使用list_workflow_tags查找可用标签名。 - 自 n8n 2.35.0 起,结果不再包含
scopes或canExecute。请使用get_workflow_details检查单个工作流的权限。 - 自 n8n 2.37.0 起,支持按
folderId筛选,结果也包含parentFolderId字段。使用search_folders将文件夹名称解析为 ID,或传入已找到工作流的parentFolderId,列出同文件夹内的其他工作流。 - **重要:**无论
Available in MCP设置如何,此工具都能列出用户有权访问的全部工作流。
get_workflow_details
获取特定工作流的详细信息,包括触发器详情。
参数
| 名称 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
workflowId | string | 是 | 要获取的工作流 ID | |
detailLevel | "full" | "execution" | 否 | "full" |
功能可用范围
自 n8n 2.35.0 起提供 detailLevel,较早版本始终返回完整工作流。
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
workflow | object | 经清理、可供 MCP 安全使用的工作流数据 |
workflow.id | string | 工作流 ID |
workflow.name | string | null | 工作流名称 |
workflow.active | boolean | 工作流是否具有已发布的活跃版本 |
workflow.isArchived | boolean | 工作流是否已归档 |
workflow.versionId | string | 当前工作流版本 ID |
workflow.activeVersionId | string | null | 活跃工作流版本 ID(如果可用) |
workflow.triggerCount | number | 触发器数量 |
workflow.nodeCount | number | 工作流中的节点数量,两种详情级别均返回 |
workflow.createdAt | string | null | 工作流创建时的 ISO 时间戳 |
workflow.updatedAt | string | null | 工作流最后保存时的 ISO 时间戳 |
workflow.settings | object | null | 工作流设置 |
workflow.connections | object | 工作流连接图 |
workflow.nodes | array | 工作流节点列表,凭据引用已移除 |
workflow.nodeGroups | array | 工作流中的节点组,仅在 detailLevel 为 "full" 时返回 |
workflow.activeVersion | object | null | 活跃工作流图(如果可用) |
workflow.activeVersion.sameAsDraft | boolean | 为 true 时,已发布版本与当前草稿相同,应使用顶层 nodes、connections 和 nodeGroups。为 false 时,已发布图会在以下字段中返回。 |
workflow.activeVersion.nodes | array | 活跃工作流版本的节点,凭据引用已移除 |
workflow.activeVersion.connections | object | 活跃工作流版本的连接 |
workflow.activeVersion.nodeGroups | array | 已发布版本的节点组,仅在 sameAsDraft 为 false 时包含 |
workflow.tags | array | 标签,包含 id 和 name |
workflow.meta | object | null | 工作流元数据 |
workflow.parentFolderId | string | null | 父文件夹 ID |
workflow.description | string | 工作流描述(如果已设置) |
workflow.scopes | string[] | 用户对该工作流的权限 |
workflow.canExecute | boolean | 用户是否有权执行该工作流 |
triggerInfo | string | 便于阅读的说明,介绍如何触发此工作流 |
说明
- 返回的节点会移除敏感凭据数据。每个凭据引用仅保留
id和name,便于复用已有凭据,而无需重复创建。 - 如果工作流已发布,包含活跃版本的详情。
- 包含用户权限作用域,以及当前用户是否可以执行工作流。
- 使用
triggerInfo了解如何调用受支持的触发节点。 - 使用
detailLevel: "execution",可在仅需通过execute_workflow运行工作流时省略额外数据。它省略节点图,以缩小响应。
execute_workflow
按 ID 执行工作流,立即返回执行 ID,不等待执行完成。
参数
| 名称 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
workflowId | string | 是 | 要执行的工作流 ID | |
executionMode | "manual" | "production" | 是 | "manual" 测试当前版本,"production" 执行已发布的活跃版本 | |
triggerNodeName | string | 否 | 要执行的触发节点名称。提供 inputs 时必填。省略时,工作流必须恰好只有一个符合条件且无需输入的触发器,例如 Schedule Trigger,或手动模式下的 Manual Trigger。使用 get_workflow_details 查看可用的触发器名称。 | |
inputs | object | 否 | 传给工作流的输入,采用可辨识联合类型,见下文 |
inputs 的变体(由 type 区分):
| 类型 | 字段 | 说明 |
|---|---|---|
chat | chatInput: string | 基于聊天的工作流输入 |
form | formData: Record<string, unknown> | 基于表单的工作流输入数据 |
webhook | webhookData: { method?, query?, body?, headers? } | 基于 Webhook 的工作流输入数据 |
webhookData 字段:
| 字段 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
method | "GET" | "POST" | "PUT" | "DELETE" | "PATCH" | "HEAD" | "OPTIONS" | 否 | "GET" | HTTP 方法 |
query | Record<string, string> | 否 | 查询字符串参数 | |
body | Record<string, unknown> | 否 | 请求体数据 | |
headers | Record<string, string> | 否 | HTTP 请求头 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
executionId | string | null | 执行 ID;如果无法启动执行,则为 null |
status | "started" | "error" | 工作流执行是否成功启动 |
error | string | 无法启动执行时的错误消息 |
说明
- 此工具启动工作流后立即返回。使用
get_workflow_execution及返回的executionId,检查最终执行状态或获取执行数据。 - 生产模式支持包含 Webhook、Chat Trigger、Form Trigger 和 Schedule Trigger 节点的工作流。
- 手动模式还支持 Manual Trigger 节点。
executionMode为"production"时,工作流必须具有已发布的活跃版本。- 如果工作流具有多个符合条件的触发器,或唯一符合条件的触发器需要输入数据(Webhook、Chat Trigger 或 Form Trigger),
execute_workflow会返回列出可用触发器名称的错误,不会自行选择。请传入triggerNodeName指定要使用的触发器。 - 只有工作流恰好具有一个符合条件且不需要输入的触发器时,
execute_workflow才会自动选择,例如 Schedule Trigger,或手动模式下的 Manual Trigger。 - 自 n8n 2.36.0 起提供
triggerNodeName,并在有多个触发器时返回错误。较早版本遇到多个触发器时会执行其中一个,无法指定。 - 不支持执行多步骤表单工作流,或任何需要人工参与交互的工作流。
- 自 n8n 2.47.0 起,在受保护(只读)实例中,
execute_workflow仅在executionMode为"production"时运行。"manual"执行会返回错误This instance is protected. Use read-only operations or production workflow executions.
test_workflow
功能可用范围
自 n8n 2.15.0 起提供 test_workflow。
使用固定数据测试工作流,绕过外部服务。触发节点、带凭据的节点和 HTTP Request 节点会使用固定数据(模拟数据)。其他节点(Set、If、Code 等)正常执行,包括 Execute Command、文件读写等不依赖凭据的输入输出节点。
参数
| 名称 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
workflowId | string | 是 | 要测试的工作流 ID | |
pinData | Record<string, array> | 是 | 全部工作流节点的固定数据 | |
triggerNodeName | string | 否 | 可选,指定从哪个触发节点开始执行。默认使用第一个触发节点。 | |
timeout | integer | 否 | 300 | 测试执行被中断前的超时时间,单位为秒。最多 3600 秒(60 分钟),可增加此值以测试运行时间更长的工作流。 |
功能可用范围
自 n8n 2.33.0 起提供 timeout。
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
executionId | string | null | 测试执行 ID |
status | string | 测试执行状态,可选:"success"、"error"、"running"、"waiting"、"canceled"、"crashed"、"new"、"unknown" |
error | string | 执行失败时的错误消息 |
说明
- 可在不设置凭据、不访问外部服务的情况下测试工作流逻辑。
- 此工具同步执行工作流,等待执行完成。
- 强制应用 MCP 执行超时,默认为五分钟。可通过
timeout增加,最长为 60 分钟。
prepare_workflow_pin_data
功能可用范围
自 n8n 2.15.0 起提供 prepare_workflow_pin_data。
为工作流准备测试固定数据。触发节点、带凭据的节点和 HTTP Request 节点需要固定数据。逻辑节点(Set、If、Code 等)及无需凭据的输入输出节点(Execute Command、文件读写)会正常执行,无需固定数据。工具返回 JSON Schema,说明各个需要固定数据的节点所期望的输出结构。
参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
workflowId | string | 是 | 要为其生成测试固定数据的工作流 ID |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
nodeSchemasToGenerate | Record<string, JsonSchema> | 需要固定数据的节点。键为节点名称,值为描述预期输出结构的 JSON Schema 对象。 |
nodesWithoutSchema | string[] | 需要固定数据但没有输出 Schema 的节点名称,每个节点使用空默认值 [{"json": {}}]。 |
nodesSkipped | string[] | 无需固定数据、测试时会正常执行的节点 |
coverage | object | 覆盖情况统计 |
coverage.withSchemaFromExecution | number | 根据上次成功执行的输出推断出 Schema 的节点 |
coverage.withSchemaFromDefinition | number | Schema 来自节点类型定义的节点 |
coverage.withoutSchema | number | 既无数据也无 Schema 的节点 |
coverage.skipped | number | 将正常执行的节点,无需固定数据 |
coverage.total | number | 启用的节点总数 |
说明
- 应使用这些 Schema,为
test_workflow生成符合实际的示例数据。 - 在 n8n 2.34.0 中由
prepare_test_pin_data更名。
publish_workflow
功能可用范围
自 n8n 2.12.0 起提供 publish_workflow。
发布(激活)工作流,使其可用于生产执行。这会根据当前草稿创建活跃版本。
参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
workflowId | string | 是 | 要发布的工作流 ID |
versionId | string | 否 | 可选,要发 布的版本 ID。未提供时,发布当前草稿版本。 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
success | boolean | 发布是否成功 |
workflowId | string | 工作流 ID |
activeVersionId | string | null | 发布后的活跃版本 ID |
error | string | 发布失败时的错误消息 |
unpublish_workflow
功能可用范围
自 n8n 2.12.0 起提供 unpublish_workflow。
取消发布(停用)工作流,使其不再用于生产执行。
参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
workflowId | string | 是 | 要取消发布的工作流 ID |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
success | boolean | 取消发布是否成功 |
workflowId | string | 工作流 ID |
error | string | 取消发布失败时的错误消息 |
get_workflow_history
功能可用范围
自 n8n 2.29.0 起提供 get_workflow_history。
列出工作流已保存的版本历史,最新版本在前,便于查看随时间发生的更改,并选择要获取或恢复的版本。
参数
| 名称 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
workflowId | string | 是 | 要读取版本历史的工作流 ID | |
limit | integer | 否 | 50 | 限制结果数量,最多 50 条 |
offset | integer | 否 | 0 | 分页时跳过的版本数量 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
success | boolean | 请求是否成功 |
workflowId | string | 工作流 ID |
versions | array | 按从新到旧排序的版本,较旧版本可能被保留策略清理 |
count | number | 本页返回的版本数量 |
error | string | 请求失败时的错误消息 |
versions 中每个条目包含以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
versionId | string | 版本 ID,可用于 get_workflow_version |
authors | string | 此版本的作者 |
name | string | null | 可选的命名版本标签 |
description | string | null | 可选的命名版本描述 |
autosaved | boolean | 此版本是否由自动保存生成 |
createdAt | string | 版本创建时的 ISO 时间戳 |
updatedAt | string | 版本元数据最后更新时的 ISO 时间戳 |
说明
- 对于保存版本较多的工作流,可使用
limit和offset分页浏览历史。 - 将结果中的
versionId传给get_workflow_version可读取版本完整内容,或传给restore_workflow_version将工作流回退到该版本。
get_workflow_version
功能可用范围
自 n8n 2.29.0 起提供 get_workflow_version。自 n8n 2.34.0 起,响应会包含节点凭据,每个凭据槽位仅保留 id 和 name。较早版本会完全移除凭据。
从历史中获取指定工作流版本的完整内容,包括节点、连接和节点组。所需的 versionId 可从 get_workflow_history 获取。
参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
workflowId | string | 是 | 此版本所属的工作流 ID |
versionId | string | 是 | 要获取的版本 ID,由 get_workflow_history 返回 |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
success | boolean | 请求是否成功 |
versionId | string | 版本 ID |
workflowId | string | 工作流 ID |
authors | string | null | 此版本的作者 |
name | string | null | 可选的命名版本标签 |
description | string | null | 可选的命名版本描述 |
createdAt | string | null | 版本创建时的 ISO 时间戳 |
updatedAt | string | null | 版本元数据最后更新时的 ISO 时间戳 |
nodes | array | 此版本中保存的工作流节点 |
connections | object | 此版本中保存的节点连接,以源节点名称为键 |
nodeGroups | array | 此版本中保存的节点组 |
error | string | 请求失败时的错误消息 |
说明
- 获取
versionId请调用get_workflow_history。 - 每个凭据引用仅保留
id和name,与get_workflow_details一致,使你能够复用已有凭据而不暴露密钥值。 - 要将此版本设为当前草稿,请将其
versionId传给restore_workflow_version。 - 如果需要两个版本间的更改摘要而 非完整内容,请使用
get_workflow_versions_diff。
get_workflow_versions_diff
功能可用范围
自 n8n 2.36.0 起提供 get_workflow_versions_diff。
比较工作流的两个已保存版本,返回二者之间的更改。
参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
workflowId | string | 是 | 这些版本所属的工作流 ID |
fromVersionId | string | 是 | 基础版本(较旧)的 ID |
toVersionId | string | 是 | 目标版本(较新)的 ID |
返回值
| 字段 | 类型 | 说明 |
|---|---|---|
success | boolean | 比较是否成功 |
workflowId | string | 工作流 ID |
fromVersionId | string | 基础版本 ID |
toVersionId | string | 目标版本 ID |
nodesAdded | array | 目标版本中存在而基础版本中不存在的节点的完整内容。凭据引用仅保留 id 和 name。 |
nodesRemoved | array | 基础版本中存在而目标版本中不存在的节点,每个节点含 id、name 和 type |
nodesModified | array | 两个版本中都存在但内容改变的节点,每个节点含 id、name、type 和 changes |
nodesModified[].changes | object | 字段级差异。更改的值表示为 { __old, __new },新增键为 <key>__added,移除的键为 <key>__deleted,数组更改为 [op, value] 元组。 |
connectionsAdded | array | 目标版本中存在而基础版本中不存在的连接 |
connectionsRemoved | array | 基础版本中存在而目标版本中不存在的连接 |
error | string | 比较失败时的错误消息 |
connectionsAdded 和 connectionsRemoved 中每个条目包含以下字段:
| 字段 | 类型 | 说明 |
|---|---|---|
from | string | 源节点名称 |
to | string | 目标节点名称 |
type | string | 连接类型,例如 main 或 ai_tool |
fromOutput | number | 源节点输出索引。例如,If 节点中的 0 为 true 分支,1 为 false 分支。 |
toInput | number | 目标节点输入索引。例如,1 表示 Merge 节点的第二个输入。 |
说明
- 版本 ID 可从
get_workflow_history获取。 - 将较旧版本作为
fromVersionId,较新版本作为toVersionId传入。 nodesAdded包含完整节点内容,无需再次调用即可读取新增节点。要获取已移除节点的内容,请使用get_workflow_version获取基础版本。- 节点仅在画布上移动位置,不会被报告为已修改。
- 单独重命名节点不会产生连接更改,因为连接端点按节点 ID 匹配。
- 修改的节点使用其在目标版本中的名称。
search_projects
功能可用范围
自 n8n 2.14.0 起提供 search_projects。
搜索当前用户有权访问的项目。可在向特定项目创建工作流或数据表之前,用它解析项目 ID。
参数
| 名称 | 类型 | 必填 | 说明 |
|---|---|---|---|
query | string | 否 | 按项目名称筛选。结果优先显示不区分大小写的完全匹配,再显示部分匹配。 |
type | "personal" | "team" | 否 | 按项目类型筛选 |
limit | integer | 否 | 限制结果数量,最多 100 条 |