npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

n8n-flow-bridge-mcp

v1.0.0

Published

Git-based version control for n8n workflows with automatic credential remapping — stop rewiring nodes every import.

Downloads

52

Readme

n8n Flow Bridge

Git-based version control for n8n workflows with automatic credential remapping — stop rewiring nodes every import.

The problem

Exporting/importing n8n workflows breaks credential bindings because node references point to internal instance-specific ids, not names. Every environment switch (dev → prod, or teammate → teammate) means manually reopening every credentialed node and rewiring it by hand. This tool fixes that.

What it does

  • Pulls workflows from n8n into clean, diffable git files
  • Auto-rewrites credential references to stable symbolic keys (cred:<type>:<slug>)
  • Auto-remaps symbolic keys back to real local credential ids on push
  • Detects and blocks on missing credential bindings before they break a workflow silently

Quick start

No install step — works the same on Windows, macOS, and Linux:

export N8N_BASE_URL=http://localhost:5678
export N8N_API_KEY=...

npx n8n-flow-bridge-mcp pull --workflow 123
npx n8n-flow-bridge-mcp bind cred:slackApi:team-bot
npx n8n-flow-bridge-mcp push --workflow 123

Prefer a shorter command? npm install -g n8n-flow-bridge-mcp once, then use bridge directly (bridge pull --workflow 123, etc.) instead of npx n8n-flow-bridge-mcp ....

Developing on this repo instead of the published package

git clone https://github.com/dorkian/n8n-flow-bridge-mcp.git
cd n8n-flow-bridge-mcp
npm install
npm run build
npm link        # makes the local build available as `bridge`

Running separate dev and prod n8n instances from one checkout? Every command accepts -e, --env-dir <path> (and -d, --dir <path> for workflows/ itself, rarely needed) to say which environment's .env and credentials.map.json to use — point it at any two folders you like, e.g.:

bridge push --workflow 123 --env-dir ./environments/dev
bridge push --workflow 123 --env-dir ./environments/prod

workflows/ stays a single shared, git-tracked folder; only .env and credentials.map.json differ per environment. Register bridge mcp --env-dir <path> twice (once per environment) to get the same separation through MCP tools.

Before / after

Raw n8n export (instance-specific, breaks on import elsewhere):

{
  "name": "Post Release Alert",
  "type": "n8n-nodes-base.slack",
  "credentials": {
    "slackApi": { "id": "17", "name": "Team Bot" }
  }
}

After bridge pull (portable, committed to git):

{
  "name": "Post Release Alert",
  "type": "n8n-nodes-base.slack",
  "credentials": {
    "slackApi": { "id": "cred:slackApi:team-bot", "name": "Team Bot" }
  }
}

bridge push remaps cred:slackApi:team-bot back to whatever the real local credential id is on the target machine — see docs/credential-remap.md for the full walkthrough.

CLI commands

| Command | What it does | |---|---| | bridge pull --workflow <id> / --all | Fetch, sanitize, and save workflow(s) to workflows/ | | bridge push --workflow <id\|file\|name> / --all | Remap credentials and push workflow(s) to n8n | | bridge bind <cred-key> | Bind a symbolic credential key to a local credential id | | bridge bind --auto | Auto-bind all unbound keys by exact type + name match | | bridge status | Show credential drift and remote sync status | | bridge mcp | Run the MCP server (stdio) for Claude Code / Cursor |

All of the above accept -e, --env-dir <path> (which .env + credentials.map.json to use) and -d, --dir <path> (where workflows/ lives, defaults to cwd, rarely needs overriding).

Configuration

Set N8N_BASE_URL and N8N_API_KEY (env vars or a .env file, optionally loaded from --env-dir).

Want AI to build the workflow itself, not just version it?

This tool has no opinion about which n8n nodes solve your problem — pair it with n8n-mcp for that (node catalog, validation, natural-language workflow creation/editing on dev), and use bridge to snapshot the result into git and promote it to prod. See docs/pairing-with-n8n-mcp.md.

Architecture

bridge pull fetches a workflow from n8n, strips instance-specific metadata, and rewrites each node's credential id to a portable symbolic key (sanitize.ts) before writing it to workflows/ in a deterministically ordered, diff-friendly format (diffFormat.ts). Each machine keeps a git-ignored credentials.map.json binding those symbolic keys to its own real credential ids (credentialMap.ts). bridge push substitutes the real ids back in (remap.ts) — aborting first if any key is unbound — then calls the n8n API. The CLI (src/cli/*) and the MCP server (src/mcp/server.ts) both call the same core modules, so both surfaces stay in sync. Full details in docs/architecture.md.

Roadmap

  • [x] MCP server for Claude Code / Cursor
  • [x] Multi-environment support from one checkout (--env-dir)
  • [ ] Web UI for credential binding
  • [ ] Multi-instance orchestration (sync dev → staging → prod in one command)

See docs/roadmap.md.

About me

Ashkan Dorkian — AI-native frontend & automation engineer.