Install

Install

Every route runs the same installer, gsm. Only the way you start it differs. The installer needs Node.js 20 or newer; the product's engines field requires >=20. It needs no build and no npm install.

Routes

How to start the installer
RouteCommandNeeds
npx (recommended)npx google-services-mcps <command>Node.js 20 or newer, npm
Global installnpm install -g google-services-mcps, then google-services-mcps <command>Node.js 20 or newer, npm
One line, no npmthe line for your shell, belowNode.js 20 or newer
From a clonenode gsm.mjs <command> in the repository folderNode.js 20 or newer, git

The old package name @firedmosquito831/google-services-mcps is deprecated. It is the same installer; use google-services-mcps. A global install gives the commands google-services-mcps and gsm.

The one-line installers

Each line downloads the repository into google-services-mcps in your home folder and runs node gsm.mjs there with your arguments. The download folder is replaced on each run, and logins are not affected.

PowerShell

& ([scriptblock]::Create((irm "https://raw.githubusercontent.com/FiredMosquito831/google-services-mcps/main/scripts/install.ps1"))) install --agent claude --plugin gmail

Command Prompt

curl -fsSL -o "%TEMP%\install-gsm.cmd" https://raw.githubusercontent.com/FiredMosquito831/google-services-mcps/main/scripts/install.cmd && "%TEMP%\install-gsm.cmd" install --agent claude --plugin gmail

Linux, macOS and WSL

curl -fsSL "https://raw.githubusercontent.com/FiredMosquito831/google-services-mcps/main/scripts/install.sh" | sh -s -- install --agent claude --plugin gmail

Flags or the menu

With all the flags given, or with no terminal, nothing is asked: the command runs as written, and a missing flag is a usage error with the valid values. In a terminal, npx google-services-mcps with no arguments opens a guided menu. It covers installing, uninstalling, signing in to a Google group, signing out, the install list, the sign-in status, the products, the APIs and methods, the scopes, the checks and the version. Each answer shows the exact command it will run, and the install previews it with --dry-run.

Install options
OptionWhat it doesDefault
--agent <a>claude, codex, opencode, agy (Antigravity) or allrequired
--plugin <ids>one product (gmail), several (gmail,gcalendar), or all. Unknown ids are refusedrequired
--scope <s>global: your account, every project. project: the folder, shared when committed. local: the folder only. folder means localglobal
--path <dir>the folder for project and local. It must existthe current folder
--allow-writesallows the write tools. Each change still asks unless confirmation is offoff
--confirmation <mode>every-change, destructive-only or offevery-change
--toolset <set>all, google or curated: which tools each server lists. Written only when givenall
--install-missinginstalls the requirements gsm can install, then checks againoff
--dry-runprints every change and command, and writes nothingoff
--marketplace <src>Claude Code only: owner/repo, a URL or a folderthe clone folder, else GitHub
--servers <a,b>keeps only these servers of the productsall
--home <dir>another home folder, for tests. Not for Claude Codeyour home folder

What an install does

  1. Checks the requirements of the agents you chose: Claude Code (claude), Codex (codex), OpenCode (opencode), and git when the Claude Code marketplace comes from GitHub. A missing one stops the install before any file is written, and the message gives the command that installs it.
  2. Installs what is missing, if you ask (--install-missing). npm installs Claude Code, Codex and OpenCode. git is installed with winget on Windows and Homebrew on macOS; on Linux gsm shows the command instead, because git needs sudo.
  3. Claude Code: declares the google-services-mcps marketplace in the same scope as the plugin, then runs claude plugin install <product>@google-services-mcps --scope <scope>. Claude Code writes its own settings files.
  4. Codex, OpenCode and Antigravity: copies each product's server files to ~/.google-services-mcps/runtime/<product>/, and writes one entry per server into the agent's config file.
  5. Records the install in ~/.google-services-mcps/runtime/installs.json, so list and uninstall know what gsm did. Logins and tokens are never touched.

Scopes by agent

Where each agent reads its configuration
Agentglobal (default)projectlocal
Claude Code~/.claude/settings.json, all your projects.claude/settings.json in the folder.claude/settings.local.json in the folder
Codex~/.codex/config.toml.codex/config.toml in the folder, read only for trusted projectsthe same file as project
OpenCode~/.config/opencode/opencode.jsonopencode.json in the folderthe same file as project
Antigravity~/.gemini/config/mcp_config.jsonnot supported (exit code 2)not supported (exit code 2)

For Claude Code, the marketplace is declared in the same scope as the plugin. A project install writes both extraKnownMarketplaces and enabledPlugins into the folder's .claude/settings.json, so a teammate who clones the project gets both. An install from a clone records the clone folder, which is a local path, so do not commit that file.

Plugin options

Every Claude Code plugin has four options. --allow-writes and --confirmation set the first two at install time. The plugins need Claude Code 2.1.271 or later, because their options offer fixed choices.

The four plugin options
OptionWhat it doesDefault
allow_writeslists the tools that create, change, delete or send. Off, only reads are listedoff
confirmationevery-change, destructive-only or offevery-change
toolsetall, google or curated: which tools the server lists. It applies when the server starts againall
token_dirthe folder for tokens and the OAuth client. Empty means ~/.google-services-mcpsempty

gadmin adds admin_subject and service_account_key_file. gads adds ads_developer_token and ads_login_customer_id. Show the options with claude plugin configure gmail@google-services-mcps; change them by piping JSON to the same command with --values-stdin, or with /plugin configure in Claude Code.

Update

Claude Code does not update plugins from this marketplace on its own. After a new release, refresh the marketplace and update each plugin you use:

Update the plugins

claude plugin marketplace update google-services-mcps
claude plugin update gmail@google-services-mcps

Run the second line once per plugin. The new version loads in the next session, or after /reload-plugins. For Codex, OpenCode and Antigravity, run the install again so the runtime copy is refreshed.

Check and remove

claude plugin list shows each plugin with its scope and status. npx google-services-mcps list shows every install gsm made. npx google-services-mcps doctor --plugin gmail checks the plugin folder and the credentials, and exits 1 when a check fails.

To remove one install, run uninstall with the same --agent, --plugin, --scope and --path. To remove every install gsm recorded, preview and then remove:

Remove every install

npx google-services-mcps uninstall --all --dry-run
npx google-services-mcps uninstall --all --yes

Uninstall removes only gsm's own entries and leaves a backup of each changed config file. It never deletes the token directory. To remove logins, use logout for each group, then delete ~/.google-services-mcps by hand.