multi-account-netlify-mcp
Provides multi-account access to Netlify through the official Netlify MCP tools. It allows AI agents to query and manage Netlify sites, deploys, projects, and teams across multiple Netlify accounts, including running reads on one, several, or all accounts while restricting changes to a single named account.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@multi-account-netlify-mcp List all my Netlify sites and which account each belongs to."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
multi-account-netlify-mcp
Use several Netlify accounts from your AI coding agent at the same time.
This module runs the official @netlify/mcp server once per account and adds an account argument to each of its tools. Send a call to one account, to a list of accounts, or to all of them. Each account is added with its own Netlify login, from a terminal or from the chat, and its token is stored in the operating system's credential store. The official package is never edited, so npm update brings in its changes.
It installs into four agents: Claude Code, Codex, opencode and Google Antigravity (agy).
Status: version 0.1.3. Tested on Windows only.
Quick start
npm install -g multi-account-netlify-mcp
multi-account-netlify-mcp install
multi-account-netlify-mcp add work
multi-account-netlify-mcp add personal
multi-account-netlify-mcp default work
multi-account-netlify-mcp doctorinstall in a terminal asks which agents and which scope you want, then shows the exact command before it runs. add work opens a browser for the Netlify login: sign in with the account you want to call work. In a chat, ask the agent to add an account instead: it uses the account_add tool, which opens the same sign-in. Restart the agents you installed into, and ask one of them about your Netlify sites.
No browser on this machine? add work --pat asks for a Netlify personal access token instead. The input is hidden.
Related MCP server: OpenConnector
What you get
One tool set, many accounts. Each official Netlify tool takes an
accountargument: one name, a comma-separated list, orall. Reads can run on several accounts at once. A change always runs on one account.Safe by design. Changes are never sent to several accounts. Tokens never appear in config files, in output, or in the chat.
Installs everywhere you work. Claude Code (plugin), Codex, opencode and Antigravity each get the server and the account guide, at the scope you choose.
Clean uninstalls. Each install records what it wrote, so uninstall removes only that.
Documentation
Document | What it covers |
Requirements, install paths, updating, uninstalling | |
Every command and option, output format, exit codes | |
Each agent: scopes, what is written where, skills, limits | |
The tools, the | |
Logins, personal access tokens, storage, defaults, removal | |
What is refused, what needs confirmation, secrets and personal data | |
Environment variables, data folder, state files, config files | |
Common errors and how to fix them | |
The test suite, live checks, CI | |
Code layout, adding an agent or an operation | |
How a release reaches npm | |
What changed in each version |
Agents
install takes the agents to set up: claude, codex, opencode, antigravity, or all. With no agent named, it installs into every agent that is set up on this machine.
Agent | Global | Project | Local | Server registered with | Skill |
Claude Code | yes | yes | yes | the plugin ( | yes, in the plugin |
Codex | yes | yes | no |
| yes |
opencode | yes | yes | no |
| yes, through |
Antigravity | yes | no | no |
| yes |
multi-account-netlify-mcp install # every agent set up here, global
multi-account-netlify-mcp install codex opencode # only these two, global
multi-account-netlify-mcp install --scope project # every agent set up here, this folder
multi-account-netlify-mcp install claude --scope local # Claude Code, this folder, only for you
multi-account-netlify-mcp install --dry-run # show the plan, change nothing
multi-account-netlify-mcp update # refresh what is already installed
multi-account-netlify-mcp uninstall codex # remove from Codex, in every scopeIn a terminal, install asks for anything you left out, and shows the exact command before it runs. Scripts and CI pass flags, and nothing is asked. --yes skips the final confirmation. See docs/AGENTS.md for what each agent gets.
Scopes
global (default): every folder, for your user account.
project: the folder you pick, and it can be shared through git.
local: the folder you pick, only for you (Claude Code only).
For Claude Code, a project install is safe to commit: .claude/settings.json then holds the marketplace (from GitHub) and the plugin reference, not your machine's paths. The other agents' project files hold this computer's Node and CLI paths, so do not commit those.
Use
Ask your agent as usual. Each Netlify tool takes an optional account argument:
Value | What happens |
left out | the default account (set with |
| the call runs on that account only, and the result is the official result. |
| reads run on each listed account. Changes are refused: name one account. |
| reads run on every account. Changes are refused: name one account. |
How each operation can span accounts is in docs/MCP.md. In short: reads with no id run on every account; reads that need an id (a project, deploy, team or site) reach every account and keep only the account that owns the id; reads of sensitive data may span accounts; changes stay on one account.
Plugin commands in Claude Code:
Command | What it does |
| list the accounts (tokens are never shown) |
| add an account. A browser login is done by the agent with the |
| choose the default account |
| remove an account and its stored token, after you confirm |
| check the data folder, the official server, the agents and each token |
The same account commands work in a terminal, for example multi-account-netlify-mcp list. The agent also has two account tools: account_add (a browser login) and account_list.
Update
npm install -g multi-account-netlify-mcp@latest
multi-account-netlify-mcp updateThen restart the agents. update refreshes only the installs that already exist. The npm command also updates the official @netlify/mcp package, because it is a dependency.
Uninstall
multi-account-netlify-mcp remove work # once per account; deletes its stored token
multi-account-netlify-mcp uninstall # removes this server from every agent and scope here
npm uninstall -g multi-account-netlify-mcpSee docs/INSTALL.md for the full list, including the Claude Code marketplace.
Security
Tokens are stored in the operating system's credential store. On Windows that is Credential Manager, with one entry per account.
accounts.jsonholds names, emails and dates, never tokens.Each
addrunsnetlify loginin a throwaway profile folder. Your own Netlify CLI login is never read or changed.Each official server runs with an empty config folder and only its own account's token.
Agent config files are backed up (
.bak) before a change, and an invalid file is never overwritten.Changes are never sent to several accounts. Reads are.
Report security issues privately through GitHub's security advisories for this repository, not in a public issue. See SECURITY.md.
Limits
Tested on Windows only. macOS and Linux are untested.
The guided install questions are tested with scripted answers, not yet in a real terminal.
Codex and Antigravity skills are loaded from the folders listed in docs/AGENTS.md. Their discovery is verified by location and format, not by a live model run.
opencode installs only into
opencode.json. Aopencode.jsoncfile is not touched.Claude Code keeps the marketplace declaration after an uninstall, because other folders may use it.
The official
netlifyMCP server, if you also have it installed, gives you duplicate tools. Remove that entry when you use this one.
Development
npm install
npm test # builds, then runs the tests in dist/test
npm run typecheckSee docs/DEVELOPMENT.md and docs/TESTING.md.
License
Available Tools
10 toolsnetlify-coding-rulesBRead-onlyIdempotent
ALWAYS call when writing serverless or Netlify code. required step before creating or editing any type of functions, Netlify sdk/library usage, etc.
Inputs: creationType (required), reference.
netlify-deploy-services-readerARead-onlyIdempotent
Select and run one of the following Netlify read operations (read-only) get-deploy, get-deploy-for-site
Multi-account (the account argument): get-deploy: only the account that owns the id answers, and accounts without it are listed under notFoundIn; get-deploy-for-site: only the account that owns the id answers, and accounts without it are listed under notFoundIn.
Inputs: selectSchema (required), account.
netlify-deploy-services-updaterCDestructive
Select and run one of the following Netlify write operations deploy-site
Multi-account (the account argument): deploy-site: one account only, so a list or all is refused.
Inputs: selectSchema (required), account.
netlify-extension-services-readerARead-onlyIdempotent
Select and run one of the following Netlify read operations (read-only) get-extensions, get-full-extension-details, initialize-database
Multi-account (the account argument): get-extensions: every named account answers; get-full-extension-details: only the account that owns the id answers, and accounts without it are listed under notFoundIn; initialize-database: every named account answers.
Inputs: selectSchema (required), account.
netlify-extension-services-updaterBDestructiveIdempotent
Select and run one of the following Netlify write operations change-extension-installation
Multi-account (the account argument): change-extension-installation: one account only, so a list or all is refused.
Inputs: selectSchema (required), account.
netlify-observability-services-readerCRead-onlyIdempotent
Select and run one of the following Netlify read operations (read-only) get-counts, get-topk, get-timeseries, get-request-logs, get-request-detail
Multi-account (the account argument): get-counts: only the account that owns the id answers, and accounts without it are listed under notFoundIn; get-topk: only the account that owns the id answers, and accounts without it are listed under notFoundIn; get-timeseries: only the account that owns the id answers, and accounts without it are listed under notFoundIn; get-request-logs: only the account that owns the id answers, and accounts without it are listed under notFoundIn; get-request-detail: only the account that owns the id answers, and accounts without it are listed under notFoundIn.
Inputs: selectSchema (required), account.
netlify-project-services-readerARead-onlyIdempotent
Select and run one of the following Netlify read operations (read-only) get-project, get-projects, get-forms-for-project
Multi-account (the account argument): get-project: only the account that owns the id answers, and accounts without it are listed under notFoundIn; get-projects: every named account answers; get-forms-for-project: only the account that owns the id answers, and accounts without it are listed under notFoundIn.
Inputs: selectSchema (required), account.
netlify-project-services-updaterBDestructive
Select and run one of the following Netlify write operations update-visitor-access-controls, update-forms, manage-form-submissions, update-project-name, manage-env-vars, create-new-project
Multi-account (the account argument): update-visitor-access-controls: one account only, so a list or all is refused; update-forms: one account only, so a list or all is refused; manage-form-submissions: get-submissions needs the account that owns the form (only it answers); delete-submission needs one account; update-project-name: one account only, so a list or all is refused; manage-env-vars: listing needs the account that owns the site (only it answers); creating, updating and deleting need one account; create-new-project: one account only, so a list or all is refused.
Inputs: selectSchema (required), account.
netlify-team-services-readerARead-onlyIdempotent
Select and run one of the following Netlify read operations (read-only) get-teams, get-team, get-team-env-vars
Multi-account (the account argument): get-teams: every named account answers; get-team: only the account that owns the id answers, and accounts without it are listed under notFoundIn; get-team-env-vars: only the account that owns the id answers, and accounts without it are listed under notFoundIn.
Inputs: selectSchema (required), account.
netlify-user-services-readerCRead-onlyIdempotent
Select and run one of the following Netlify read operations (read-only) get-user
Multi-account (the account argument): get-user: every named account answers.
Inputs: selectSchema (required), account.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool is scoped to a distinct Netlify domain (user, deploy, team, project, extension, observability) and cleanly split into read vs. write, so boundaries are clear. The only ambiguity is that each tool multiplexes many sub-operations internally, and netlify-coding-rules overlaps thematically with everything as a pre-step advisory tool.
Tools follow a strong, predictable pattern: netlify-<domain>-services-<reader|updater>, which makes read vs. write obvious at a glance. The lone outlier is netlify-coding-rules, which breaks the pattern but is clearly a different kind of tool.
Ten tools is well-scoped for a multi-domain Netlify server, and the dispatcher pattern lets each tool cover several operations without surface bloat. No tool feels redundant or padded.
Read coverage is thorough across user, deploy, team, project, extension, and observability, and core writes exist (deploy-site, create-new-project, manage-env-vars, forms, extension install change). Notable gaps remain, including team/member management writes, project or site deletion, and DNS management, but agents can work around most of these.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
One PAT, any MCP agent: Vercel, GitHub, Cloudflare, Supabase, GCP — unified dev infra gateway.
Related MCP Servers
- AlicenseAqualityBmaintenanceLocal, open-source multi-account MCP broker — one endpoint, every account. Add credentials once and switch identity without reconnecting, from any LLM client.59MIT
- AlicenseNot gradedqualityBmaintenanceProvides a single local MCP endpoint that connects Gmail, GitHub, Slack, Notion, and Linear once, with multiple accounts per service, so any AI agent can use per-agent tokens, policies, and optional result filtering without re-authenticating.2 npmMIT
- AlicenseNot gradedqualityCmaintenanceRuns each MCP server once and lets any number of AI agents connect over HTTP with their own keys, per-tool grants and audit logging, plus a shared task list, shared memory and agent-to-agent requests. Enables agents to work as a coordinated team without duplicating processes, credentials or work.12 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables Claude Code and Codex to work with multiple accounts of the same MCP server at once, such as two Gmail inboxes or several Slack and Notion workspaces. It presents a single toolset where every tool takes a required account argument, with per-account OAuth sign-in and credentials isolated in the macOS Keychain.MIT