The MCP Tool node (type: "mcp", node list label MCP) calls a tool on one of the flow's MCP servers when the flow reaches it, saves values from the result, and follows its transitions. Use it to fetch or write data at a known point, the same way you would use a function node with a custom function.
Configure#
- Add the server under Global settings, MCP Servers (see MCP tools). If there is none, the node says "Add a server under Global Settings, MCP Servers."
- Add an MCP node.
- Pick the MCP server and the Tool name. The list comes from the server; choose Type a name if it cannot be listed.
- Fixed arguments (JSON): arguments always sent, for example
{"customer_id": "{{customer_id}}"}. The JSON is applied when the field loses focus; invalid JSON keeps the last valid value. - Optional Instruction to speak while it runs (enable with
speak_during_executionthrough the API). - Add transitions. New MCP nodes start with no transitions and an Else edge.
How it runs#
- If
speak_during_executionis on, the instruction is spoken. - Fixed arguments are rendered with
{{variables}}. - If
parametershas properties (API only), one LLM call fills them in from the conversation. Fixed arguments win over LLM values with the same name. - The worker calls
tools/callon the server (protocol details on MCP tools). response_variablesare saved from the result's structured content, or from its text parsed as JSON.- Equation transitions, prompt transitions and global nodes (separate LLM call), then the else edge.
Fields#
| Field | Type | Description |
|---|---|---|
type |
"mcp" |
|
mcp_id |
string | References mcps[].id on the flow |
mcp_tool_name |
string | Remote tool name |
arguments |
object | Fixed arguments, rendered with variables |
parameters |
JSON schema object | API only. Arguments the LLM fills in |
response_variables |
object of name to JSON path | API only |
speak_during_execution |
boolean | |
instruction |
{type, text} |
Optional |
edges, else_edge |
{
"id": "node_lookup",
"type": "mcp",
"name": "Look up account",
"mcp_id": "mcp_8c2f1a90",
"mcp_tool_name": "get_account",
"arguments": { "phone": "{{user_number}}" },
"response_variables": { "account_tier": "$.tier" },
"edges": [
{
"id": "edge_vip",
"destination_node_id": "node_vip",
"transition_condition": { "type": "equation", "equations": [{ "left": "{{account_tier}}", "operator": "==", "right": "gold" }], "operator": "&&" }
}
],
"else_edge": { "id": "edge_std", "destination_node_id": "node_standard", "transition_condition": { "type": "prompt", "prompt": "Else" } }
}Gotchas#
- An MCP error does not stop the flow: no variables are saved and transitions are evaluated, so the else edge catches failures.
- The node's server must be in the flow's
mcps[].