@digestseo/mcp-gsc

MCPattested
v0.4.36DigestSEOMITUpdated 23d agonpmGitHub

Self-hostable Google Search Console MCP server for analytics, URL inspection, sitemaps, indexing, and SEO reporting on Cloudflare Workers.

Works in
ClaudeCursorCopilotGemini

Inferred from the transports this listing declares (stdio). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.

Attested build
A verified provenance attestation binds this artifact to the listed repository. Nobody has claimed the listing yet — this proves where the code was built, not who stands behind it.
7kDownloads/wk
5GitHub stars
1Forks
23d agoLast update
Needs 2 credentials before it runs
  • GOOGLE_CLIENT_SECRETOAuth apprequired

    Google OAuth client secret for the local Worker.

  • TOKEN_ENCRYPTION_KEYAPI keyrequired

    Base64-encoded 32-byte key used to encrypt stored Google refresh tokens.

Declared by the author in the official MCP registry. Forge does not store, broker, or ever see these values — the config below is scaffolded with placeholders you fill in locally.

Package
AuthorDigestSEO
LicenseMIT
Version0.4.36
Sourcenpm+mcp-registry
Trust Status
A
85/100Trusted
✓Listed in Forge index+10/10
✓Identity verified · attested build+20/20
—Ed25519 publish signature+0/5
→ Included automatically when the publisher runs `forge publish`
—Domain verification+0/5
→ Publisher: host /.well-known/forge.json on the package homepage with { "publisher": "<github-login>" }
✓npm Trusted Publishing (Sigstore)+5/5
—npm maintainer match+0/5
→ Publisher: add the verified GitHub login to the npm package's maintainers (npm owner add <login>)
✓CVE scan · clean+30/30
✓Static analysis · clean+20/20
Paste into Claude Code, Cursor, or any AI assistant to fix all gaps
StatusIdentity verified
PublisherUnverified
SignatureUnsigned
Domain—
Provenance✓ Sigstore-verified · ed20b9a
Dependencies✓ 57 resolved+ · none vulnerable
Tool surface23 tools · none privileged
Security scan✓ Cleanv0.4.36 · todayHow well does this scan work?
EvalsNone
IndexedAug 31, 2026

Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.

Tools

23 tools · none privileged
Statically extracted from the published packagev0.4.36 · 9m ago

Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.

sites.listList the Google Search Console properties (sites) the connected Google account can access, including whether each returned identifier matches the website-property siteUrl forms currently documented by the Search Console API.

List the Google Search Console properties (sites) the connected Google account can access, including whether each returned identifier matches the website-property siteUrl forms currently documented by the Search Console API.

No input schema was published for this tool.

sites.getGet one exact Search Console property and the connected account's permission level for it.

Get one exact Search Console property and the connected account's permission level for it.

No input schema was published for this tool.

sites.addAdd a website property to the connected Google account's Search Console site set. This does not verify ownership; Google handles ownership verification through a separate Site Verification/Search Console workflow.

Add a website property to the connected Google account's Search Console site set. This does not verify ownership; Google handles ownership verification through a separate Site Verification/Search Console workflow.

No input schema was published for this tool.

sites.deleteRemove an existing website property from the connected Google account's Search Console site set. This changes that account's Search Console membership for the property; it does not delete the website itself.

Remove an existing website property from the connected Google account's Search Console site set. This changes that account's Search Console membership for the property; it does not delete the website itself.

No input schema was published for this tool.

analytics.queryQuery Search Console search analytics (impressions, clicks, CTR, average position) over a date range, broken down by query, page, country, device, date, or search appearance. Supports filters and pagination. Google does not guarantee every data row and can return only top rows. The current document…

Query Search Console search analytics (impressions, clicks, CTR, average position) over a date range, broken down by query, page, country, device, date, or search appearance. Supports filters and pagination. Google does not guarantee every data row and can return only top rows. The current document…

No input schema was published for this tool.

insights.page_queriesFor one exact page URL, list the Search Console queries that produced impressions for it, with clicks, impressions, CTR, average position, search type, and bounded pagination.

For one exact page URL, list the Search Console queries that produced impressions for it, with clicks, impressions, CTR, average position, search type, and bounded pagination.

No input schema was published for this tool.

insights.query_pagesFor one exact search query, list the site pages that received impressions for it, with clicks, impressions, CTR, average position, search type, and bounded pagination.

For one exact search query, list the site pages that received impressions for it, with clicks, impressions, CTR, average position, search type, and bounded pagination.

No input schema was published for this tool.

urls.inspectInspect Google's indexed version of a single URL: a conservative normalized index-status summary plus Google's raw index status, last crawl, page-fetch/indexing state, canonicals, and rich-results/AMP analysis where available. This is not a live URL test; mobile usability is a deprecated response f…

Inspect Google's indexed version of a single URL: a conservative normalized index-status summary plus Google's raw index status, last crawl, page-fetch/indexing state, canonicals, and rich-results/AMP analysis where available. This is not a live URL test; mobile usability is a deprecated response f…

No input schema was published for this tool.

urls.inspect_manyNo description published

This tool published no description. Forge does not invent one.

sitemaps.listList all sitemaps submitted for a property, with submission/processing status, submitted URL counts, and warning/error counts. Google's deprecated sitemap indexed count is intentionally omitted.

List all sitemaps submitted for a property, with submission/processing status, submitted URL counts, and warning/error counts. Google's deprecated sitemap indexed count is intentionally omitted.

No input schema was published for this tool.

sitemaps.submitSubmit a sitemap URL to a Search Console property. A successful API response proves the Search Console submission request succeeded; it does not prove sitemap processing completed or that any page was indexed.

Submit a sitemap URL to a Search Console property. A successful API response proves the Search Console submission request succeeded; it does not prove sitemap processing completed or that any page was indexed.

No input schema was published for this tool.

sitemaps.deleteRemove a submitted sitemap from a Search Console property. This removes the Search Console sitemap entry; it does not delete the remotely hosted sitemap file or prove that any page was deindexed.

Remove a submitted sitemap from a Search Console property. This removes the Search Console sitemap entry; it does not delete the remotely hosted sitemap file or prove that any page was deindexed.

No input schema was published for this tool.

sitemaps.getGet status and details of a single sitemap submitted to Google Search Console.

Get status and details of a single sitemap submitted to Google Search Console.

No input schema was published for this tool.

insights.quick_winsFind observed query/page Search Analytics rows with at least the requested impressions whose average position falls in a configurable opportunity range (8-20 by default). Average position is an aggregate metric, not a literal current rank; CTR is context, not an eligibility filter.

Find observed query/page Search Analytics rows with at least the requested impressions whose average position falls in a configurable opportunity range (8-20 by default). Average position is an aggregate metric, not a literal current rank; CTR is context, not an eligibility filter.

No input schema was published for this tool.

insights.cannibalizationAnalyze query/page Search Analytics for queries surfaced by multiple pages. Candidate totals and impression shares are explicitly scoped to observed query/page rows, not true query-level property totals.

Analyze query/page Search Analytics for queries surfaced by multiple pages. Candidate totals and impression shares are explicitly scoped to observed query/page rows, not true query-level property totals.

No input schema was published for this tool.

insights.content_decayAssess page-level click declines across two contiguous periods for pages returned in both Search Analytics responses, without treating one-sided row absence as zero traffic.

Assess page-level click declines across two contiguous periods for pages returned in both Search Analytics responses, without treating one-sided row absence as zero traffic.

No input schema was published for this tool.

indexing.requestRequest an eligible JobPosting or livestream URL update through Google's restricted Indexing API; this is not a general webpage submission tool. Google treats the default publish quota as onboarding/testing capacity, requires approval for ongoing usage/resource provisioning, and spam-screens submis…

Request an eligible JobPosting or livestream URL update through Google's restricted Indexing API; this is not a general webpage submission tool. Google treats the default publish quota as onboarding/testing capacity, requires approval for ongoing usage/resource provisioning, and spam-screens submis…

No input schema was published for this tool.

indexing.removeRequest a URL_DELETED notification for a previously eligible JobPosting or livestream URL through Google's restricted Indexing API. The URL must already return HTTP 404/410 or expose a robots noindex meta directive; notification receipt does not prove removal completed.

Request a URL_DELETED notification for a previously eligible JobPosting or livestream URL through Google's restricted Indexing API. The URL must already return HTTP 404/410 or expose a robots noindex meta directive; notification receipt does not prove removal completed.

No input schema was published for this tool.

indexing.statusRead the latest successful Indexing API update/remove notifications Google received for a previously submitted URL. This reports notification receipt only, not crawl, index coverage, indexing completion, or removal completion.

Read the latest successful Indexing API update/remove notifications Google received for a previously submitted URL. This reports notification receipt only, not crawl, index coverage, indexing completion, or removal completion.

No input schema was published for this tool.

indexing.list_pagesNo description published

This tool published no description. Forge does not invent one.

analytics.compareCompare Search Console performance metrics between two date ranges for dimension keys returned in both Search Analytics responses; one-sided row absence is not treated as zero.

Compare Search Console performance metrics between two date ranges for dimension keys returned in both Search Analytics responses; one-sided row absence is not treated as zero.

No input schema was published for this tool.

reports.weekly_digestGenerate a plain-language weekly SEO report for one Google Search Console property.

Generate a plain-language weekly SEO report for one Google Search Console property.

No input schema was published for this tool.

server.capabilitiesList every tool this server exposes and report local Google credential state. A connected status means a stored refresh credential is present; it is not a live Google authorization check.

List every tool this server exposes and report local Google credential state. A connected status means a stored refresh credential is present; it is not a live Google authorization check.

No input schema was published for this tool.

21 of 23 tools published a description.

Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.

About

Self-hostable Google Search Console MCP server for analytics, URL inspection, sitemaps, indexing, and SEO reporting on Cloudflare Workers.

Keywords
mcpmodel-context-protocolgoogle-search-consolegoogle-search-console-mcpsearch-consolesearch-analyticsindexing-apiseocloudflare-workersclaude
Alternatives
Comparing tool surfaces…

Dependency tree

What one Forge scan resolved from npm metadata on 2026-10-17 — observed resolution, not a publisher declaration.

57 packages resolved · 5 direct · none carrying advisories Resolution stops at depth 4 and 60 packages.

The crawl stopped at the depth-4 limit. Anything below that level was never resolved.

33 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)

Declared but not resolved

24 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.

+12 more not listed. The counts by reason above cover all of them.

Not followed: peerDependencies, optionalDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.

Topics

Related in search & retrieval