Install the server
One guided command connects Google and your client. Read-only unless you explicitly choose full.
1Check your runtime
Bun 1 or newer, or Node 22 or newer. Check yours before anything else:
Runtime check — Bun
bun --version- Expect
1.xfrom Bun, orv22(or newer) from Node. Anything older stops here — upgrade first. - A Google account that can open at least one Search Console property. No Google login happens on this website and no credential is ever pasted here — sign-in happens later, in your own terminal.
2Run setup
Not published yet. These pinned commands work only after release @sonnivasquez/gsc-mcp@0.1.0 is confirmed published. Until then there is no public install path, and this page does not establish registry availability.
Setup — Bun (pinned to @sonnivasquez/gsc-mcp@0.1.0)
bunx --bun @sonnivasquez/gsc-mcp@0.1.0 setup- Pin the version:
@sonnivasquez/gsc-mcp@0.1.0. Upgrading is an explicit act, never a surprise. setupwalks you through sign-in and client config. Every flag is listed under Commands; the two choices that matter now are--auth(which credential) and--client(which app).
Runner or global install
npx -y …andbunx --bun …are cached execution, not an install: the runner fetches the pinned release into a cache and runs it. Either path works only after the release is confirmed published — neither is available sooner.- A global install —
npm install -g @sonnivasquez/gsc-mcp@0.1.0— becomes an option only after the release is confirmed published, for people who want the binary on PATH without a runner. It is never required. - Removal differs accordingly: a global install removes with
npm uninstall -g @sonnivasquez/gsc-mcp; runner runs install no global package, so there is no package to uninstall for them (downloaded runner cache files may remain and are harmless). Never wipe a shared npm cache as part of uninstalling — the full procedure lives under Uninstall.
Name your properties
- Use exact identifiers, byte-for-byte:
sc-domain:example.comorhttps://example.com/. Both are documentation examples, never a live property — replace them with your exact Search Console IDs. - Repeat
--sitefor each property, one identifier per flag — never comma-split. Or pass--all-sitesas an explicit opt-in that also covers future properties. Mixingallwith identifiers is rejected (fail closed). - Setup stores the selection as a JSON-string array in
GSC_SITE_URLS. Tool arguments can never widen it: a property outside the allowlist fails withPROPERTY_NOT_ALLOWED.
3Verify your connection
Verify — Bun (pinned to @sonnivasquez/gsc-mcp@0.1.0)
bunx --bun @sonnivasquez/gsc-mcp@0.1.0 doctor
bunx --bun @sonnivasquez/gsc-mcp@0.1.0 auth status --onlinedoctoris the offline check: runtime, paths, environment, auth state — paths and booleans, never secrets.auth status --onlineis the minimal validation against Google. Without credentials the server still starts; tools returnAUTH_REQUIREDwith the exact fix command instead.