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
| Client | How it connects | Writes config |
|---|---|---|
| Claude Desktop | config print --client desktop, then paste into claude_desktop_config.json | Yes — after your approval |
| Claude Code | config print --client code, then run the exact command it prints | Yes — after your approval |
| Cursor | config print --client cursor, then Settings › MCP | Yes — after your approval |
| Codex | config print --client codex, then run the exact command it prints | Yes — after your approval |
| Any other client | config print --client generic, then apply the JSON yourself | Never |
| Print only | Preview mode: prints JSON, never writes client config | Never |
config print route below.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 …orcodex 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/(orGSC_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
readonlymode. 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 -yinstead ofbunx --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.