Connect your assistant app

Five supported clients plus a print-only mode. Setup previews every change, asks before writing, and touches only the gsc entry — your other servers are never modified.

Supported clients

ClientHow it connectsWrites config
Claude Desktopconfig print --client desktop, then paste into claude_desktop_config.jsonYes — after your approval
Claude Codeconfig print --client code, then run the exact command it printsYes — after your approval
Cursorconfig print --client cursor, then Settings › MCPYes — after your approval
Codexconfig print --client codex, then run the exact command it printsYes — after your approval
Any other clientconfig print --client generic, then apply the JSON yourselfNever
Print onlyPreview mode: prints JSON, never writes client configNever
Automatic runner-based client entries depend on registry publication: use them only after release @sonnivasquez/gsc-mcp@0.1.0 is confirmed published. For anything earlier, use the manual config print route below.
Automatic entries use bunx --bun when setup runs under Bun and npx -y when it runs under Node. The examples below show the Bun default first; the Node alternative follows each one.

File targets: Desktop and Cursor

Setup — Claude Desktop, Bun (example property)

bunx --bun @sonnivasquez/gsc-mcp@0.1.0 setup --client desktop --auth shared --access readonly --site 'sc-domain:example.com'

Setup — Claude Desktop, Node (example property)

npx -y @sonnivasquez/gsc-mcp@0.1.0 setup --client desktop --auth shared --access readonly --site 'sc-domain:example.com'

Setup — Cursor, Bun (example property)

bunx --bun @sonnivasquez/gsc-mcp@0.1.0 setup --client cursor --auth shared --access readonly --site 'sc-domain:example.com'

Setup — Cursor, Node (example property)

npx -y @sonnivasquez/gsc-mcp@0.1.0 setup --client cursor --auth shared --access readonly --site 'sc-domain:example.com'
  • Paste the Desktop output into claude_desktop_config.json; apply the Cursor output under Settings › MCP. Both entries use the example property — replace it with your exact selected IDs.
  • File writes follow one protocol: a redacted preview first, your confirmation, a timestamped backup of the previous file, then an atomic merge of only mcpServers.gsc. Declining writes nothing and creates no backup.
  • When a target cannot be configured safely, setup falls back to printed generic JSON instead of guessing.

CLI targets: Code and Codex

Setup — Claude Code, Bun (example property)

bunx --bun @sonnivasquez/gsc-mcp@0.1.0 setup --client code --auth shared --access readonly --site 'sc-domain:example.com'

Setup — Claude Code, Node (example property)

npx -y @sonnivasquez/gsc-mcp@0.1.0 setup --client code --auth shared --access readonly --site 'sc-domain:example.com'

Setup — Codex, Bun (example property)

bunx --bun @sonnivasquez/gsc-mcp@0.1.0 setup --client codex --auth shared --access readonly --site 'sc-domain:example.com'

Setup — Codex, Node (example property)

npx -y @sonnivasquez/gsc-mcp@0.1.0 setup --client codex --auth shared --access readonly --site 'sc-domain:example.com'
  • For these clients, run the exact command setup prints — the claude mcp add … or codex mcp add … line with its exact arguments. It is previewed first and runs only when approved, never through a shell.
  • Codex appears here only as a supported consumer of this server. This site never launches external agents and documents no agent workflows.
  • --client print (and the generic kind) only print — they never write client configuration. Live OAuth during a print run still saves the token locally under ~/.gsc-mcp/ (or GSC_DATA_DIR).

Generic JSON template

Treat config print output as a template, not copy-paste-ready text: it carries the example property and the gsc-local key. Replace the allowlist with your exact selected IDs, then apply it in your client’s own MCP settings:

Generic template — Bun, replace the example property

{
  "mcpServers": {
    "gsc-local": {
      "command": "bunx",
      "args": ["--bun", "@sonnivasquez/gsc-mcp@0.1.0"],
      "env": {
        "GSC_SITE_URLS": "[\"sc-domain:example.com\"]",
        "GSC_ACCESS_MODE": "readonly"
      }
    }
  }
}
  • The process is the pinned runner, the arguments are the pinned spec, and the environment carries the exact-ID allowlist with an explicit readonly mode. Serve takes no other arguments — it accepts only --profile.
  • Runner-based entries work only after the release is confirmed published.
  • The Node secondary uses npx -y instead of bunx --bun:

Generic template — Node secondary (after publication)

{
  "mcpServers": {
    "gsc-local": {
      "command": "npx",
      "args": ["-y", "@sonnivasquez/gsc-mcp@0.1.0"],
      "env": {
        "GSC_SITE_URLS": "[\"sc-domain:example.com\"]",
        "GSC_ACCESS_MODE": "readonly"
      }
    }
  }
}

Paths, restarts, and PATH

  • GUI apps do not inherit your shell PATH: use the absolute paths from config print, then restart the client. A client that shows no tools almost always needs absolute paths plus a restart.
  • If your client offers no supported config route, apply the generic JSON through its manual MCP configuration and restart it the same way.

Next