n8n-agents
Design n8n AI agents the right way. Use when building or editing any…
Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type. Always use this skill when setting up node
$ npx -y skills add czlonkowski/n8n-mcp --skill n8n-node-configuration --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/n8n-node-configurationContext preview
The summary Claude sees to decide when to auto-load this skill.
Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type. Always use this skill when setting up node
name: n8n-node-configuration description: Operation-aware node configuration guidance. Use when configuring nodes, understanding property dependencies, determining required fields, choosing between get_node detail levels, or learning common configuration patterns by node type. Always use this skill when setting up node parameters — it explains which fields are required for each operation, how displayOptions control field visibility, and when to use patchNodeField for surgical edits vs full node updates.
Expert guidance for operation-aware node configuration with property dependencies.
---
**Progressive disclosure**: Start minimal, add complexity as needed
Configuration best practices:
**Key insight**: Most configurations need only standard detail, not full schema!
---
**Not all fields are always required** - it depends on operation!
**Example**: Slack node
// For operation='post'
{
"resource": "message",
"operation": "post",
"channel": "#general", // Required for post
"text": "Hello!" // Required for post
}
// For operation='update'
{
"resource": "message",
"operation": "update",
"messageId": "123", // Required for update (different!)
"text": "Updated!" // Required for update
// channel NOT required for update
}**Key**: Resource + operation determine which fields are required!
**Fields appear/disappear based on other field values**
**Example**: HTTP Request node
// When method='GET'
{
"method": "GET",
"url": "https://api.example.com"
// sendBody not shown (GET doesn't have body)
}
// When method='POST'
{
"method": "POST",
"url": "https://api.example.com",
"sendBody": true, // Now visible!
"body": { // Required when sendBody=true
"contentType": "json",
"content": {...}
}
}**Mechanism**: displayOptions control field visibility
**Use the right detail level**:
1. **get_node({detail: "standard"})** - DEFAULT
2. **get_node({mode: "search_properties", propertyQuery: "..."})** (for finding specific fields)
3. **get_node({detail: "full"})** (complete schema)
---
1. Identify node type and operation. 2. Use `get_node` (standard detail is default). 3. Configure required fields. 4. Validate configuration. 5. If a field is unclear → `get_node({mode: "search_properties"})`. 6. Add optional fields as needed. 7. Validate again. 8. Deploy.
The validate-driven loop in practice: start minimal (`method`, `url`, `authentication`), then let each `validate_node` error surface the next required field (`sendBody` for POST → `body` when `sendBody=true`) until valid. Full step-by-step walkthrough in **[OPERATION_PATTERNS.md](OPERATION_PATTERNS.md#worked-example-configuring-http-request-step-by-step)**.
---
**✅ Starting configuration**
get_node({
nodeType: "nodes-base.slack"
});
// detail="standard" is the default**Returns** (~1-2K tokens):
**Use**: 95% of configuration needs
**✅ When standard isn't enough**
get_node({
nodeType: "nodes-base.slack",
detail: "full"
});**Returns** (~3-8K tokens):
**Warning**: Large response, use only when standard insufficient
**✅ Looking for specific field**
get_node({
nodeType: "nodes-base.httpRequest",
mode: "search_properties",
propertyQuery: "auth"
});**Use**: Find authentication, headers, body fields, etc.
1. Starting a new node config → `get_node` (standard). 2. Standard has what you need → configure with it. Otherwise continue. 3. Looking for a specific field → `search_properties` mode. Otherwise continue. 4. Still need more → `get_node({detail: "full"})`.
**Dynamic properties**: when `standard` detail marks a property with `dynamicOptions: {methodName, methodType, dependsOn}`, its real values come from a live `loadOptions`/`listSearch` method, not from bundled docs — don't guess an ID for it. Resolve it with `n8n_explore_node_resources` (needs `N8N_MCP_ACCESS_TOKEN`, n8n 2.34+) and put the returned `value` in the config; `name` is display text only.
All six parameters are required and none are inferred from each other:
n8n_explore_node_resources({
nodeType: "n8n-nodes-base.googleSheets", // LONG form
version: 4.5, // the node typeVersion the method belongs to
methodName: "getSheets", // copied verbatim from dynamicOptions
methodType: "listSearch", // "listSearch" for resource locators, "loadOptions" for plain dropdowns
credentialType: "googleSheetsOAuth2Api",
credentialId: "c2", // from n8n_manage_credentials({action: "list"})
currentNodeParameters: { // whatever dependsOn names, in its real shape
documentId: {__rl: true, mode: "id", value: "1AbC…"}
}
})`dependsOn` names the parameters the method needs already chosen — pass them in `currentNodeParameters`, keeping resource-locator values in their `{__rl: true, mode, value}` shape, or the method
A Model Context Protocol (MCP) server that provides AI assistants with comprehensive access to n8n node documentation, properties, and operations.
Repo: czlonkowski/n8n-mcp
Design n8n AI agents the right way. Use when building or editing any…
Handle files and binary data in n8n correctly. Use when working with files, images, PDFs,…
Write JavaScript code in n8n Code nodes. Use when writing JavaScript in n8n, using…
Write Python code in n8n Code nodes. Use when writing Python in n8n, using _input/_json/_node…
Write JavaScript or Python for the n8n Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode) —…
Wire n8n error handling so failures are loud, structured, and recoverable. Use when building…