n8n-multi-instance
Use when an n8n-mcp account targets more than one n8n instance — i.e.
Skill by czlonkowski
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/czlonkowski-n8n-multi-instance
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data, productivity, agent-building, workflow-automation, identity-access
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/n8n-multi-instance
What's inside
- Skill name
n8n-multi-instance- Description
- Use when an n8n-mcp account targets more than one n8n instance — i.e. the `n8n_instances` tool is available, the user mentions multiple n8n instances or environments (prod vs staging, several teams or clients), several agents or chats work on one account in parallel, a workflow / datatable / credential / execution call returns an unexpected NOT_FOUND or reads data you don't recognize, or a call is refused with `INSTANCE_AMBIGUOUS` or `INSTANCE_NOT_FOUND`. Covers naming the target instance on each call with the `instance` argument, setting the default with `switch`, verifying the target before high-stakes work — credential writes above all — and recovering from misroutes and fail-closes. Always consult this skill before operating on a specific instance, before any credential create/update/delete on a multi-instance account, or when a call hits the wrong/empty data or an instance error.
- License
- MIT
- Instructions
- 230 lines in SKILL.md · view on GitHub
Files (2)
- README.md
- SKILL.md
SKILL.md (first lines)
# Working with multiple n8n instances over MCP
When the `n8n_instances` tool is available, the user has **multi-instance mode** on: one MCP
connection can reach several n8n instances (e.g. `prod`, `staging`, or one per client/team).
There are two ways to say which instance a call should hit:
- **Name it on the call** — every n8n tool (`n8n_get_workflow`, `n8n_list_workflows`,
`n8n_update_partial_workflow`, `n8n_manage_datatable`, `n8n_manage_credentials`,
`n8n_executions`, `n8n_test_workflow`, `n8n_health_check`, …) takes an optional
`instance: "<name>"`. It routes **that one call** and changes nothing else. **Prefer this.**
- **Set the default with `switch`** — `n8n_instances({mode:"switch", name})` sets the instance used
by calls that *don't* name one.
The default is shared more widely than it looks. On claude.ai (and other hosted connectors) one
connection serves **every chat and agent** using it, so a `switch` in one chat moves all the
others too — and their next unnamed call silently lands on your instance. A wrong target is
usually silent: a read returns the wrong data and a write lands in the wrong place. So name the
instance.
If the `n8n_instances` tool is **not** present, the account is single-instance: ignore this skill
and use the n8n tools directly.
> **Availability.** The `instance` argument needs hosted n8n-mcp backend 0.1.120+ / n8n-mcp
> 2.94.0+. It is there when the n8n tools' input schemas list an `instance` property (and the
> `n8n_instances` list output carries a `hint` about it). If it isn't listed, the server predates
> it: fall back to `switch`, in its own turn, as described under *Switching*.
## Golden rules
1. **Discover first.** Call `n8n_instances({mode:"list"})` so you know the exact instance names and
which one is `current`. Never guess a name.
2. **Name the instance on every call when it matters** — whenever you work on more than one
instance, on any instance other than `current`, or alongside other agents/chats on the same
account: `n8n_list_workflows({instance:"prod"})`. Names are case-insensitive. Pass the name the
same way on every call of the task; there is nothing to "set up" first.
3. **An `instance` you name is never silently replaced.** An unknown name fails with
`INSTANCE_NOT_FOUND` and lists the `available` names — pick one from that list and retry. It
never falls back to another instance.
4. **Use `switch` only to change the default**, and only when you're the sole user of the
connection. Switch in its **own turn** — never in the same parallel batch as a call that depends
on it (batch order isn't guaranteed).
5. **Credential writes: name the instance.** `n8n_manage_credentials({action:"create", …,
instance:"prod"})`. A named write is explicit, so it is never `INSTANCE_AMBIGUOUS`. Check the name
against `list` first — naming the *wrong* instance writes the secret there.
6. **An unexpected `NOT_FOUND` is almost always a wrong-instance misroute, not a deletion.** Don't
recreate the object. Retry with `instance` set to where it lives (see Recovery).
## Core workflow
```
1. n8n_instances({mode:"list"}) # names, current, default
2. n8n_list_workflows({instance:"client-a"}) # read on client-a
3. n8n_get_workflow({id:"…", instance:"client-b"}) # read on client-b — no switch needed
4. n8n_update_partial_workflow({id:"…", operations:[…], instance:"client-b"})
5. Credential write:
n8n_manage_credentials({action:"create", name:"…", type:"…", data:{…}, instance:"client-a"})
```
Every call names its target, so it doesn't matter what any other chat switched to in between, and
calls can safely run in the same parallel batch even when they target different instances.
## The `instance` argument
- **Value:** an instance **name** from `n8n_instances` `list` (`available[].name`), matched
case-insensitively. Not the id, not the URL — the same URL can be registered under several names.
- **Scope:** routes only the call that carries it. It does **not** change `current` or the default
for anyone.
- **Omitted (or empty):** the call uses the default — the last `switch` on this connection, or the
account default.
- **Fails closed** with `INSTANCE_NOT_FOUND` (the call never reaches n8n, no quota charged) when:
- the name matches no instance — the error lists `available`;
- the value isn't a string;
- multi-instance mode is off and the name isn't the one instance the connection reaches.
```json
{
"error": "INSTANCE_NOT_FOUND",
"message": "No n8n instance named \"clinet-a\". Pass one of the available names as `instance`, …",
"available": ["client-a", "client-b"]
}
```
`n8n_instances` itself doesn't take `instance` — it has its own `name` argument for `switch`.
## The `n8n_instances` tool
Two modes (`mode` is required and enum-validated):
- `{mode:"list"}` → `{ current, default, available, hint }`, no side effects.
- `current` and `default` are each one instance `{ id, name, url, isDefault }` (or `null`).
- `available` is every instance, each with an extra `isCurrent` boolean. Match by **`name`**;
never hard-code `id`.
- `{mode:"switch", name:"<name>"}` → `{ previous, current }`, and sets the default for calls that
don't name an instance. `name` is case-insensitive.
### Error envelope (from the `n8n_instances` tool)
Every error returns `{ error: "<CODE>", message, … }`. The ones you'll actually hit:
| Code | When | What to do |
|---|---|---|
| `UNKNOWN_INSTANCE` | `switch` `name` matches no instance | Pick a name from the `available` list in the error payload and retry. |
| `NAME_REQUIRED` | `switch` with no `name` | Re-call with a `name` (the error lists the valid ones in `available`). |
| `MULTI_INSTANCE_DISABLED` | multi-instance mode is off | There's nothing to switch; use the n8n tools directly. The user can enable it at the n8n-mcp dashboard. |
| `NO_SESSION` | the request has **neither** an MCP session id **nor** a credential id | A selection has nowhere to land. Reconnect / initialize a session, then switch — or just name the `instance` on each call. |
| `UNKNOWN_MODE` | `mode` wasn't `list`/`switch` | Use `list` or `switch`. |
| `INVALID_CONTEXT` | server-side metadata missing | A server bug, not your input — report it. |
> Instance names can never be `default`, `current`, `list`, or `switch` (reserved), so you'll never
> see an instance literally named after a mode or field.
### `INSTANCE_AMBIGUOUS` (from the credential-write path, not the tool)
Returned when you call `n8n_manage_credentials` (or an `n8n_manage_agents` write) **without**
`instance`, and the default this call inherited is ambiguous: this session never switched on its own
but picked up a switch made elsewhere, pointing at a **non-default** instance. Rather than risk
writing a secret to the wrong instance, the server **blocks the write** (it never reaches n8n, no
quota is charged) and returns:From czlonkowski/n8n-skills, MIT.
More from czlonkowski/n8n-skills
- 0.848score
n8n-subworkflows
czlonkowski
Build reusable, composable n8n sub-workflows.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-self-hosting
czlonkowski
Deploy a production self-hosted n8n end-to-end to a fresh Linux VM over SSH, using Docker Compose behind a Caddy reverse proxy with automatic HTTPS.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-code-javascript
czlonkowski
Write, review, or debug JavaScript in an n8n Code node.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-error-handling
czlonkowski
Wire n8n error handling so failures are loud, structured, and recoverable.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-mcp-tools-expert
czlonkowski
Expert guide for using n8n-mcp MCP tools effectively.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-code-tool
czlonkowski
Write JavaScript or Python for the n8n Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode) — the AI-agent-callable tool, NOT the workflow Code node.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-code-python
czlonkowski
Write Python in n8n Code nodes (native Python, `language` pythonNative, n8n 2.x).
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-binary-and-data
czlonkowski
Handle files and binary data in n8n correctly.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-agents
czlonkowski
Design n8n AI agents the right way.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
using-n8n-mcp-skills
czlonkowski
Use when building, editing, validating, testing, or debugging an n8n workflow through the n8n-mcp MCP server — designing a flow, configuring a node, writing…
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.838score
n8n-node-configuration
czlonkowski
Operation-aware node configuration guidance.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.838score
n8n-workflow-patterns
czlonkowski
Proven workflow architectural patterns from real n8n workflows.
SkillAFreshness: A★ 6.5KClaude Code +9
Compare and alternatives
Signals
- Stars
- 6,517
- Forks
- 1,075
- Open issues
- 10
- Last commit (this folder)
- Oct 15, 2026 (12 days ago)
- Last release
- Oct 24, 2026 (4 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/czlonkowski/n8n-skills
- Website
- www.n8n-skills.com
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from czlonkowski
- 0.848score
using-n8n-mcp-skills
czlonkowski
Use when building, editing, validating, testing, or debugging an n8n workflow through the n8n-mcp MCP server — designing a flow, configuring a node, writing…
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-subworkflows
czlonkowski
Build reusable, composable n8n sub-workflows.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-self-hosting
czlonkowski
Deploy a production self-hosted n8n end-to-end to a fresh Linux VM over SSH, using Docker Compose behind a Caddy reverse proxy with automatic HTTPS.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-mcp-tools-expert
czlonkowski
Expert guide for using n8n-mcp MCP tools effectively.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-code-tool
czlonkowski
Write JavaScript or Python for the n8n Custom Code Tool (@n8n/n8n-nodes-langchain.toolCode) — the AI-agent-callable tool, NOT the workflow Code node.
SkillAFreshness: A★ 6.5KClaude Code +9 - 0.848score
n8n-code-python
czlonkowski
Write Python in n8n Code nodes (native Python, `language` pythonNative, n8n 2.x).
SkillAFreshness: A★ 6.5KClaude Code +9
Cite this page
n8n-multi-instance skill. Agent Mart. https://agentmart.dev/skills/czlonkowski-n8n-multi-instance (last updated 2026-10-24)