Skip to main content
Glama
gsc-mcp

gsc-mcp

by ajmalaksar25

Searchlight

Technical SEO that fixes itself.

An autonomous technical-SEO and analytics agent, delivered as a Model Context Protocol (MCP) server. Point it at your site: it finds what's broken, explains it in plain language, fixes it in your repository, deploys, and verifies the fix is live.

Website · The /searchlight skill · Quickstart · Tools

License: MIT  Model Context Protocol  Node


The loop

Most SEO tools stop at the diagnosis. Searchlight runs the whole loop and proves the last step.

Step

What it does

Detect

Reads your Search Console and Analytics data, crawls key pages, finds indexing, canonical, redirect, sitemap, speed and on-page issues.

Explain

Triages every finding in plain language with a worry-level: fix now, worth improving, or normal and safe to ignore.

Fix

Edits your repository, framework-aware: canonical and host conflicts, redirect loops, sitemaps, metadata, structured data, the analytics tag.

Deploy

Commits and ships through your existing pipeline. Edits only count once they are live.

Verify

Re-audits the live site and confirms the fix in a real browser: the redirect resolves, the tag fires, the canonical agrees.

Proof

A live run on zawaaj.in (a custom Next.js site with a host and canonical conflict and missing analytics) went from audit 90 → 98 — canonical set, host redirect aligned (www → apex), meta trimmed, GA4 installed and verified firing, sitemap submitted — in about 50 minutes (≈25 minutes active; the rest idle waiting on a redeploy), versus a 4–6 hour manual baseline for a skilled developer. The full annotated run is on the website.

Searchlight automates the diagnosis and the fix. It does not design your ecommerce event-tracking plan — that part is still a human's job.


Related MCP server: Google Search Console MCP Server

Quickstart

1. Add it to your MCP client (Claude Code shown; works in any MCP client):

claude mcp add searchlight -- npx -y @ajmalaksar/searchlight serve --setup

Or, in a generic client config:

{
  "mcpServers": {
    "searchlight": { "command": "npx", "args": ["-y", "@ajmalaksar/searchlight", "serve"] }
  }
}

2. Sign in with Google (one local OAuth sign-in for Search Console and Analytics; the token is stored only on your machine):

npx -y @ajmalaksar/searchlight login --setup

3. Install the /searchlight skill so your agent runs the whole loop with one command:

npx -y @ajmalaksar/searchlight skill install

4. Ask:

/searchlight audit zawaaj.in

First time on Google Cloud? The bundled client lets most users skip setup. To bring your own (Tier 0), create a Desktop app OAuth client (enable the Google Search Console API and PageSpeed Insights API, add yourself as a test user) and pass SEARCHLIGHT_OAUTH_CLIENT_ID / SEARCHLIGHT_OAUTH_CLIENT_SECRET to login.

Renamed from gsc-mcp: the legacy ~/.gsc-mcp directory and GSC_* environment variables still resolve, so an existing install keeps working without re-authenticating.


The /searchlight skill

skill install drops a skill into your AI client so the agent orchestrates the full loop instead of you calling raw tools. It routes on the first word:

Command

Does

/searchlight audit [site]

Read-only diagnosis: detect + explain, triaged. No changes.

/searchlight setup [site]

The full guided loop: interview → detect → confirm → provision → fix → deploy → verify.

/searchlight fix [site]

Already audited? Go straight to plan → confirm → fix → deploy → verify.

It always confirms before any provisioning, code edit, sitemap submit, or deploy.


Tools

auth_status, auth_login, list_sites, use_site, get_active_site, set_default_site, account_overview, gsc_deep_link, query_search_analytics (presets: top_queries/top_pages), find_opportunities, compare_periods, inspect_url, coverage_report, refresh_coverage, crawl_site, site_audit, export_report, diagnose_site, audit_page, page_speed, snapshot_baseline, list_snapshots, progress_report, ga_list_properties, ga_measurement_id, ga_report (presets: traffic/top_pages), list_sitemaps. With --write / --setup: submit_sitemap, delete_sitemap, and the GA4 / verification provisioning tools.

crawl_site → site_audit → export_report crawl your live site directly (no Google scope, no quota), then produce a triaged, site-wide technical-SEO report (status/redirects/ canonicals/orphans/link-graph/schema/hreflang) you can share as Markdown.

Coverage report reconstructs the "Page indexing" report the GSC API won't export in bulk: it gathers candidate URLs from sitemaps and analytics, inspects them within the 2,000/day per-property quota (resumable), caches the results under ~/.searchlight/sites/, and buckets them by index status.

Baseline & progress (snapshot_baseline → … fix … → snapshot_baseline → progress_report) freeze a site's health on a given day, then diff two days into a plain-English before→after of what improved — which issues resolved, which are new, and how score and traffic moved.


Local-first & private

Searchlight runs as a local server. You sign in with your own Google account; the token is stored only on your device. There is no hosted backend and no data warehouse — each person runs their own. Read-only by default; write and provisioning scopes are opt-in, requested only when you start a setup action. Open source and MIT licensed. See the Privacy Policy.


CLI

searchlight login            Sign in with Google (opens a browser)
searchlight logout           Remove the stored token
searchlight status           Authentication + onboarding status
searchlight setup            Guided first-run
searchlight sites …          Manage the property registry (list / add / remove / default)
searchlight skill install    Install the /searchlight skill into your AI client (--here for this project)
searchlight serve            Start the MCP server over stdio (default)

Develop

npm install
npm run build
npm test

The server is a tool registry. To add a capability, create src/tools/<group>.ts exporting register: ToolModule, then add it to MODULES in src/tools/index.ts. See SPEC.md for the architecture.

License

MIT © Ajmal Aksar

Available Tools

16 tools
account_overviewAccount overview (all sites)B

Portfolio view across every accessible property: last-28-day clicks and impressions per site, ranked. (Per-site SEO/coverage scores are added in a later phase.)

Inputs: days.

auth_loginLog in to Google Search ConsoleA

Sign in to Google in the browser, right from here — no terminal needed. Opens the consent screen, captures the token on a localhost callback, and stores it. Use when auth_status says needs_login.

Inputs: no named parameters.

auth_statusAuth statusA

Check whether the server is authenticated to Google Search Console, which scope is active, and where you are in onboarding (setupState). Call this first if other tools report an auth error.

Inputs: no named parameters.

compare_periodsCompare periodsA

Compare the most recent N days against the preceding N days. Returns total clicks/impressions deltas plus the biggest gainers and losers for the chosen dimension.

Inputs: days, limit, siteUrl, dimension.

find_opportunitiesFind SEO opportunitiesA

Surface actionable wins: 'striking distance' rows ranked between positions 5-20 (small gains can push them to page one) and high-impression / low-CTR rows (the listing shows but few click). Returns a ranked, deduped list with a reason for each.

Inputs: days, limit, siteUrl, dimension, +1 more.

get_active_siteGet active siteA

Report which property tool calls currently target, and whether it came from the session, the default, or none.

Inputs: no named parameters.

get_sitemapGet sitemapA

Get detailed status for a single sitemap by its full feed URL.

Inputs: feedpath (required), siteUrl.

inspect_urlInspect URLA

Run the URL Inspection tool on a single URL: index status, coverage, last crawl, canonical, mobile usability and rich-results state. Use this to diagnose why a page is or is not indexed. Subject to a 2,000/day per-property quota.

Inputs: inspectionUrl (required), siteUrl, languageCode.

list_sitemapsList sitemapsA

List all sitemaps submitted for a property, with processing status and error/warning counts.

Inputs: siteUrl.

list_sitesList sitesA

List every Search Console property the signed-in user can access, with permission level, any registered alias, and which property is currently active / default.

Inputs: no named parameters.

query_search_analyticsQuery search analyticsA

The core Search Console performance query. Returns clicks, impressions, CTR and average position, broken down by the dimensions you request, over a date range. Use top_queries / top_pages for quick cases.

Inputs: type, endDate, siteUrl, rowLimit, +6 more.

set_default_siteSet default siteA

Persist the default property to config.json (survives restarts). Used when a call omits siteUrl and no session site is set. Accepts a property URL or alias.

Inputs: site (required).

top_pagesTop pagesB

Quick view of the top landing pages for a site over the last N days, ranked by clicks.

Inputs: days, limit, siteUrl.

top_queriesTop queriesC

Quick view of the top search queries for a site over the last N days, ranked by clicks.

Inputs: days, limit, siteUrl.

use_siteSwitch active siteA

Set the active property for this session, so later tool calls can omit siteUrl. Accepts a property URL or a registered alias (e.g. "blog"). The primary way to switch context.

Inputs: site (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.9/5.0

    Scored across 16 tools

    Disambiguation5/5

    Each tool targets a distinct GSC operation: authentication, site selection, analytics queries, sitemaps, URL inspection, and comparative analysis. Even similar analytics tools like top_queries, compare_periods, and find_opportunities have clear differentiating descriptions (quick view vs. comparative vs. actionable wins). No two tools overlap in purpose.

    Naming Consistency4/5

    Tools follow a consistent 'verb_noun' or 'category_action' pattern in lowercase with underscores (e.g., auth_login, list_sitemaps, top_queries). Minor deviations include 'gsc_deep_link' (prefix with noun) and 'account_overview' (noun_verb), but overall the pattern is predictable and readable.

    Tool Count5/5

    With 16 tools, the server covers the full spectrum of Google Search Console operations—authentication, site management, analytics, sitemaps, URL inspection, and deep links—without being bloated. Each tool serves a clear purpose, and the count is well-scoped for a specialized API wrapper.

    Completeness4/5

    The tool set covers core GSC workflows: authentication, site selection, search analytics (queries, pages, comparisons, opportunities), sitemap status, and URL inspection. Minor gaps include the lack of property addition/removal and live URL testing, but these are secondary. The planned addition of per-site SEO/coverage scores suggests recognized missing functionality.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables querying Google Search Console and Google Analytics 4 through natural language, with tools for SEO analysis like anomaly detection, cannibalization detection, and opportunity scoring.
      16 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables querying Google Search Console data, including search analytics with advanced filtering, quick wins detection, and rich dimensions, through natural language.
      9,024 npm
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Connects Google Search Console to AI assistants, enabling natural language queries for SEO data, indexing audits, sitemap management, and full site audits.
      20
      MIT