Gsc Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Gsc Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP server for Google Search Console. Query search performance, list properties, inspect URLs, and list sitemaps from Cursor, Claude Desktop, or any MCP-compatible client.
Use the scoped package name@jlnkrth/gsc-mcp-server. The unscoped namegsc-mcp-serveron npm is a different package.
| Situation | Auth | Run MCP server |
|---|---|---|
| Cloned this repo (inside project folder) | npm run auth | npm start |
| Installed from npm (any other directory) | npx -y -p @jlnkrth/gsc-mcp-server gsc-mcp-auth | npx -y @jlnkrth/gsc-mcp-server |
Set GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET before auth (see Google Cloud setup).
Using a Google passkey to sign in? That's fine — passkey only applies to signing into Google in the browser during auth. You still need your own GCP OAuth client ID and secret.
| Tool | Description |
|---|---|
gsc_list_sites | List Search Console properties accessible to your Google account |
gsc_search_analytics | Query clicks, impressions, CTR, and position with dimensions and filters |
gsc_inspect_url | Inspect a URL's index status, crawl state, and mobile usability |
gsc_list_sitemaps | List submitted sitemaps with status, errors, and indexed counts |
gsc_search_analytics filters| Parameter | Description |
|---|---|
query_filter | Shorthand: queries containing this string |
page_filter | Shorthand: page URLs containing this string |
dimension_filters | Full GSC filter objects (advanced) |
http://localhost:3336/callback as an authorized redirect URI (if prompted).export GOOGLE_CLIENT_ID="your-client-id.apps.googleusercontent.com"
export GOOGLE_CLIENT_SECRET="your-client-secret"
npx -y -p @jlnkrth/gsc-mcp-server gsc-mcp-authgit clone https://github.com/jlnkrth/gsc-mcp-server.git
cd gsc-mcp-server
npm install
cp .env.example .env
# Edit .env with your credentials, then:
export $(grep -v '^#' .env | xargs)
npm run authThe auth flow opens a browser on port 3336. Tokens are saved to ~/.config/gsc-mcp/tokens.json by default (override with GSC_TOKEN_PATH).
Add to ~/.cursor/mcp.json (merge with existing servers):
{
"mcpServers": {
"google-search-console": {
"command": "npx",
"args": ["-y", "@jlnkrth/gsc-mcp-server"],
"env": {
"GOOGLE_CLIENT_ID": "YOUR_CLIENT_ID",
"GOOGLE_CLIENT_SECRET": "YOUR_CLIENT_SECRET",
"GSC_TOKEN_PATH": "/Users/you/.config/gsc-mcp/tokens.json"
}
}
}
}Keep mcp.json private — it contains your OAuth client secret. Do not commit it to git.
For local development, point command at Node directly:
{
"mcpServers": {
"google-search-console": {
"command": "node",
"args": ["/absolute/path/to/gsc-mcp-server/src/index.js"],
"env": {
"GOOGLE_CLIENT_ID": "YOUR_CLIENT_ID",
"GOOGLE_CLIENT_SECRET": "YOUR_CLIENT_SECRET"
}
}
}
}Add to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS (see examples/claude-desktop.json).
After changing MCP config, fully quit and restart your client so the server reloads tokens.
Once connected, you can ask your AI assistant:
page_filter)| Variable | Required | Description |
|---|---|---|
GOOGLE_CLIENT_ID | Yes | OAuth 2.0 Desktop client ID |
GOOGLE_CLIENT_SECRET | Yes | OAuth 2.0 Desktop client secret |
GSC_TOKEN_PATH | No | Token file path (default: ~/.config/gsc-mcp/tokens.json) |
GOOGLE_LOGIN_HINT | No | Pre-fill email in the OAuth browser sign-in |
| Symptom | Fix |
|---|---|
Not authenticated | Run npx -y -p @jlnkrth/gsc-mcp-server gsc-mcp-auth (or npm run auth if inside a clone), then restart your MCP client |
npx fails inside cloned repo | Use npm run auth / npm start locally, or run npx from another directory |
| Google sign-in fails / access denied | If OAuth app is in Testing mode, add your Google account as a test user in GCP |
No refresh_token in saved tokens | Revoke the app at Google Account permissions, then re-run auth |
| Port 3336 in use | Free the port or stop the conflicting process, then re-run auth |
403 / permission denied on API calls | Confirm the signed-in Google account has access to the property in Search Console |
MCP client can't find npx | Use the full path to node and src/index.js in your config |
| Google OAuth fails after passkey sign-in | GOOGLE_CLIENT_ID / SECRET must be real GCP values — not placeholders. Check redirect URI http://localhost:3336/callback |
See CONTRIBUTING.md for local development, tests, and publishing.
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.