SEO Data MCP
Provides tools for Google Search Console, including querying search analytics with dates, dimensions, and pagination; listing sitemaps; and inspecting indexed URLs.
Provides tools for PageSpeed Insights to retrieve Lighthouse performance summaries for URLs.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@SEO Data MCPshow me last 28 days of Google Search Console clicks for example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SEO Data MCP
Local stdio MCP server for Google Search Console, Bing Webmaster, IndexNow, PageSpeed Insights and CrUX. Your SEO data goes directly from those APIs to your MCP client; it does not pass through Atesen Software. No LLM APIs, hosted proxy or telemetry.
Install in five lines
# Node.js 22+; download the .tgz from the GitHub release while npm publication is pending
npx -y --package ./pabsamuel-seo-data-mcp-0.1.0.tgz seo-data-mcp --help
# Put your own Google service_account or authorized_user JSON in a private directory
claude mcp add --transport stdio --env GOOGLE_APPLICATION_CREDENTIALS=/private/google.json seo-data -- npx -y --package /absolute/path/pabsamuel-seo-data-mcp-0.1.0.tgz seo-data-mcp
# Restart your MCP client, then ask it to list sitemaps for sc-domain:your-domain.exampleAfter npm publication the command becomes npx -y @pabsamuel/seo-data-mcp@0.1.0. npm installation, authentication and Claude-specific GUI installation are not claimed as complete; real stdio MCP integration is tested.
Claude Desktop config (merge this inside mcpServers):
{"seo-data":{"command":"npx","args":["-y","--package","C:/absolute/path/pabsamuel-seo-data-mcp-0.1.0.tgz","seo-data-mcp"],"env":{"GOOGLE_APPLICATION_CREDENTIALS":"C:/private/google.json"}}}Use an absolute npx.cmd path on Windows if your client cannot locate npx. Never commit client config containing credentials.
Related MCP server: mcp-server-google-search-console
Tools and plans
Tool | Purpose | Free |
| Search analytics, dates, dimensions, pagination | Yes |
| List sitemaps | Yes |
| Indexed URL inspection, not a live test | No |
| Verified-site query statistics | No |
| Verified-site crawl issues | No |
| Submit same-host URLs; requires | No |
| Lighthouse performance summary | Yes |
| Origin field metrics; low traffic can return 404 | No |
Free: 3 tools / 20 attempts per UTC day. Starter: $12/month, all tools / 1,000 attempts per UTC day. Pro: $29/month, all tools / 5,000 attempts per UTC day. Billing is currently preview/closed, not a live paid offering. Provider quotas are separate. Starter/Pro limits are product implementation decisions; the brief specifies only the free cap and prices.
Why pay: URL inspection, Bing diagnostics, IndexNow and CrUX plus larger daily capacity. Attempts count even when credentials/provider calls fail; schema-invalid requests do not count. Quota uses a local lock and persistent counter shared by processes. This is local software: users control their filesystem and clock, so limits are not a tamper-proof remote meter.
Bring your own credentials
GOOGLE_APPLICATION_CREDENTIALS: path to Google service-account JSON or user-owned OAuth authorized_user JSON. Enable Search Console API. First try adding the service-account email to the Search Console property's Settings → Users and permissions as Full user. No site membership was available in this build session, so real SA acceptance is pending.
Fallback: create your own Desktop OAuth client and, with Google Cloud CLI, run:
gcloud auth application-default login --client-id-file=/private/desktop-client.json --scopes=https://www.googleapis.com/auth/webmasters.readonlyPoint the env variable to the generated application_default_credentials.json. Configure yourself as a test user in your Google project; testing-mode refresh tokens may need reauthorization. No publisher OAuth verification is required because there is no shared publisher client.
Other environment variables:
Variable | Meaning |
| Your Bing Webmaster key for a verified site |
| Your API key with PageSpeed and Chrome UX Report APIs enabled |
| 8–128 character verification key hosted on your domain |
| Private text file containing the offline license (preferred) |
| Alternative inline license; avoid shell history/config sharing |
| Private quota directory; default |
No credentials are read from project .env files. The client must explicitly pass env variables. Read-only Google scope only. Tokens are cached in memory and refreshed directly with Google; credential-file token endpoints are ignored. IndexNow never fetches arbitrary URLs itself, and refuses URLs/keyLocation on other hosts.
Privacy and licensing
Only these hosts can receive MCP requests: oauth2.googleapis.com, www.googleapis.com, searchconsole.googleapis.com, ssl.bing.com, api.indexnow.org, chromeuxreport.googleapis.com. No redirects or automatic retries. Trace records omit query strings, headers and bodies. npm installation and your MCP/AI host are separate from tool traffic; your chosen host may process the reports.
License format: SEO1.<base64url JSON>.<Ed25519 signature>. Public key ships with the package; private key is excluded. Product, tier, issue/expiry timestamps and signature are checked locally. Subscription keys expire at the paid period end. Retrieve a fresh key after renewal; there are no background activation calls. Refunds/cancellations cannot instantly revoke an offline key. See LICENSE, privacy and terms.
Build and evidence
npm ci
npm test
npm audit --omit=dev
npm pack --pack-destination artifacts
npm run liveTests use explicit synthetic responses; these are not live API evidence. test/stdio.test.mjs runs the actual MCP SDK client against the spawned stdio executable. test/billing.test.mjs uses real SQLite and Ed25519 with signed synthetic Paddle payloads; no sandbox checkout/payment occurred. evidence/live.json records live blockers without secrets. SUBMIT.md contains exact browser handoff and billing provisioning steps. STATE.md tracks acceptance.
Primary references
MCP TypeScript SDK (MIT), Zod (MIT). Dependencies retain their licenses.
Service-account property setup, Bing JSON API, IndexNow, PageSpeed, CrUX.
Historical research anchor: Advanced GSC MCP, $4,766 MRR / 147 subscriptions recorded in the 22 October portfolio brief. Not independently reverified here; no earnings claims are used in the listing.
Available Tools
8 toolsbing_crawl_issuesBRead-onlyIdempotent
Read Bing Webmaster crawl issues for a verified site. Paid.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, open-world, and non-destructive behavior. The description adds two important behavioral facts beyond annotations: the call is paid and the site must be verified. It does not detail cost tiers, rate limits, or return format, keeping it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, with no filler. The 'Paid.' fragment is terse but communicates a critical constraint in minimal space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter read tool with rich annotations, the description is adequately complete on safety and cost. However, with no output schema, it does not describe what crawl issues are returned or how to interpret them, and the site parameter remains underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the burden for the single 'site' parameter. It adds that the site must be verified, which is useful, but it does not clarify whether the value should be a domain, full URL, or site identifier, nor how verification should be represented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: read Bing Webmaster crawl issues. It adds the 'verified site' scope qualifier. It does not explicitly distinguish itself from siblings like bing_query_stats or gsc_inspect, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only guidance is the prerequisite 'for a verified site' and the cost note 'Paid.' There is no explicit when-to-use guidance, no when-not-to-use guidance, and no routing to sibling tools such as bing_query_stats or gsc_inspect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bing_query_statsARead-onlyIdempotent
Read Bing Webmaster query statistics for a verified site. Paid.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructive behavior. The description adds two useful behavioral facts: the site must be verified and the operation is 'Paid'. However, it does not mention auth requirements, rate limits, or what data is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short, front-loaded sentences with no wasted words. The key prerequisite and cost signal are immediately visible.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, single-parameter read-only tool with full annotations and no output schema, the description covers the essential prerequisite and cost. It could be improved by noting return format or date-range defaults, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single parameter 'site' is only typed as a URI in the schema. The description adds meaningful semantic constraint: the site must be a verified Bing Webmaster site, which is not captured in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource ('Bing Webmaster query statistics') with clear scope ('for a verified site'). It differentiates from sibling tools like gsc_query by naming Bing, though it does not explicitly contrast with bing_crawl_issues.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context (Bing Webmaster, verified site, paid) but gives no explicit when-to-use guidance or alternatives. It does not say when to choose this over gsc_query or bing_crawl_issues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cruxBRead-onlyIdempotent
Chrome UX Report 28-day field metrics; low-traffic sites may have no record. Paid.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | ||
| formFactor | No | PHONE |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, openWorld), so the description's job is to add context beyond that. It does: a 28-day aggregation window, the possibility of an empty result for low-traffic origins, and the fact that calls are billed. That cost and empty-result disclosure is exactly the kind of thing annotations cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact fragments with no filler, and the identifying information (what data, what window) comes first. It is telegraphic to the point of omitting a verb, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only, two-parameter tool with no output schema, the definition covers the data source, the time window, the billing implication and the empty-result risk. What is missing is any explanation of the parameters and of what metrics are actually returned, which leaves the agent guessing at request shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description needed to carry the two parameters and did not. 'origin' is only obliquely implied by 'sites', and 'formFactor' with its PHONE/DESKTOP/TABLET enum and default is never mentioned, leaving a real gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Chrome UX Report 28-day field metrics'), which is informative, but it uses no verb and the tool name 'crux' is an opaque acronym. It does not distinguish itself from the sibling 'pagespeed', which also surfaces performance metrics, so an agent must infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to choose this over 'pagespeed' or other siblings. The 'low-traffic sites may have no record' clause signals a failure mode rather than a usage rule, and 'Paid' flags cost but not the conditions under which the cost is justified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_inspectARead-onlyIdempotent
Read Google indexed URL inspection; does not request indexing. Paid.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| site | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, and open-world behavior. The description adds valuable context by clarifying that no indexing request occurs and flagging that the operation is paid, though it does not describe the return contents or rate-limit details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted words. The core operation and the key exclusion are front-loaded, and the cost warning is succinct.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with rich annotations, the description covers the main behavioral distinction. But it omits parameter semantics and does not explain what the inspection returns, which is relevant because there is no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for undocumented parameters. It provides no explanation of what 'site' means in Google Search Console terms or how 'url' relates to the inspected property, leaving both required parameters only inferable from their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Read Google indexed URL inspection.' It also explicitly contrasts with indexing submission ('does not request indexing'), which helps distinguish it from the sibling indexnow_submit tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states an exclusion: this reads inspection data and does not request indexing. However, it does not name alternatives such as gsc_query or pagespeed, nor does it explain when a paid inspection is preferable to other diagnostics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_queryCRead-onlyIdempotent
Read Search Console search performance. Paginate using startRow. Free tier.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes | ||
| endDate | Yes | ||
| rowLimit | No | ||
| startRow | No | ||
| startDate | Yes | ||
| dimensions | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, so the safety profile is covered. The description adds pagination behavior and a free-tier note, but it does not disclose auth requirements, quota behavior, or result structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded and wastes no words. However, its terseness is partly under-specification rather than pure efficiency, so it is not quite exemplary for a six-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter query tool with no parameter descriptions and no output schema, the description is not complete enough. It covers pagination and free-tier context but leaves required fields, date semantics, dimensions, and return behavior unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% across six parameters, so the description carries the full burden. It only explains startRow as the pagination offset and says nothing about site, startDate, endDate, rowLimit, or dimensions, leaving most parameters semantically undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: read Search Console search performance. It implicitly distinguishes itself from non-GSC siblings, but it does not explicitly differentiate from gsc_inspect or bing_query_stats, so sibling routing is left partly to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The only usage guidance is pagination via startRow and a note about the free tier. It does not say when to use this tool instead of gsc_inspect, bing_query_stats, or other performance-related siblings, nor does it state exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
gsc_sitemapsCRead-onlyIdempotent
List Search Console sitemaps. Free tier.
| Name | Required | Description | Default |
|---|---|---|---|
| site | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only the 'Free tier' note, which hints at quota or cost considerations, but never explains what it means, what permissions are needed, or whether pagination occurs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and resource, with zero padding. The trailing 'Free tier' fragment is terse but understandable as a cost caveat.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no description of what a sitemap entry looks like (path, lastDownloaded, errors, warnings), and the critical property-identifier format is absent. For a tool whose only parameter is a site identifier, this leaves an agent guessing at invocation details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'site' parameter, and the description says nothing about its expected format (e.g., URL-prefix vs sc-domain property identifier) or length constraints. With one undocumented required parameter, the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A clear verb and resource ('List Search Console sitemaps') tells an agent exactly what the tool returns. It does not differentiate from siblings like gsc_query or gsc_inspect, but the purpose itself is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this versus gsc_query or gsc_inspect, no prerequisites (e.g., property must be verified), and no exclusions. An agent must infer usage entirely from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
indexnow_submitB
WRITE: submit URLs to IndexNow, requires explicit confirm:true and a hosted verification key. Paid.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | ||
| urls | Yes | ||
| confirm | Yes | ||
| keyLocation | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=false and openWorldHint=true, but the description adds meaningful context beyond them: this is a WRITE operation, it requires explicit confirmation, it needs a hosted verification key, and it is paid. It still omits consequences, response behavior, and failure modes, but the added operational constraints are valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single compact sentence with the most important qualifier (WRITE) front-loaded. Every clause carries weight: action, resource, confirmation requirement, verification key, and payment status.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an external write tool with no output schema, zero parameter descriptions, and paid access, the description is too sparse. It covers the confirmation and verification-key prerequisites but leaves the host/URL relationship, submission limits, and expected outcome or errors undocumented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for four parameters. The description clarifies confirm:true and hints at a hosted verification key, but it does not explain the host parameter, the urls array, the 1–10,000 item limit, or how keyLocation relates to the verification key.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: submit URLs to IndexNow. It is clearly distinct from the sibling tools (queries, inspections, stats, pagespeed, crux, sitemaps), though it does not explicitly name an alternative or non-goal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives prerequisites (confirm:true, hosted verification key) and cost context (Paid), which implies when the tool is applicable. However, it does not explain when to use this versus other indexing-related siblings or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pagespeedCRead-onlyIdempotent
PageSpeed Lighthouse score and selected audits. Free tier.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| strategy | No | mobile |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds useful cost context ('Free tier') and hints at scoped output ('selected audits'), but does not describe rate limits, authentication, or which audits are actually returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with the purpose front-loaded and little wasted text. The phrase 'selected audits' is vague, but overall it is appropriately sized for a simple tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with rich annotations, the safety profile is already handled. But with no output schema and zero parameter description coverage, the description omits what 'selected audits' means and how strategy affects results, leaving meaningful gaps for an agent trying to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With two parameters and 0% schema description coverage, the description should explain the required url and the optional strategy/default mobile behavior. It mentions neither, leaving the strategy enum entirely undocumented in prose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the resource (PageSpeed Lighthouse score) and a return element (selected audits), which is clear enough to identify the tool. However, it lacks an explicit operation verb and does not distinguish itself from siblings like crux, which also deals with performance data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as crux or gsc_inspect. 'Free tier' gives licensing context but does not help an agent decide when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
bing_crawl_issues - First observed
bing_query_stats - First observed
crux - First observed
gsc_inspect - First observed
gsc_query - First observed
gsc_sitemaps - First observed
indexnow_submit - First observed
pagespeed
TDQS
Scored across 8 tools
Each tool targets a distinct SEO data source or operation: GSC querying, GSC inspection, GSC sitemaps, Bing stats, Bing crawl issues, IndexNow submission, PageSpeed, and CrUX. The read-only tools are separated from the explicit write tool, and performance tools are split into lab (PageSpeed) versus field (CrUX) data.
Most names use snake_case and a service_action pattern (gsc_query, bing_query_stats, indexnow_submit), which is readable. However, pagespeed and crux are bare product names with no verb, and action placement varies across prefixes, so the set is mixed rather than fully consistent.
Eight tools is well-scoped for an SEO data server, covering the main integrations without obvious padding. Each tool corresponds to a meaningful data source or action.
The surface covers key SEO data sources: GSC performance, inspection, sitemaps, Bing stats and crawl issues, IndexNow submission, PageSpeed, and CrUX. Minor gaps remain, such as sitemap submission/management and broader keyword or backlink data, but core read and submission workflows are present.
Maintenance
Related MCP Connectors
Audit, rank-track and analyze SEO for sites via an authenticated MCP server.
Hosted, read-only Google Search Console MCP: performance, comparisons, URL inspection, sitemaps.
Read and edit GA4, Search Console and Google Tag Manager from any MCP client. 29 tools.
Read-only Google Search Console MCP server for AI assistants.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables interaction with Google Search Console to query search analytics, inspect URL indexing status, and manage sitemaps. It allows users to monitor SEO performance and site health through natural language commands in MCP-compatible clients.94 npm3MIT
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Google Search Console via MCP, offering search analytics, performance summaries, URL inspection, sitemap management, and property listing for SEO workflows.149 npm1MIT
- AlicenseAqualityAmaintenanceConnects MCP clients to the Google Search Console API, enabling search analytics queries, URL inspection, sitemap management, and performance comparison across time periods.2049 PyPIMIT
- AlicenseBqualityBmaintenanceEnables Google Search Console data queries via MCP, including search analytics, performance comparisons, URL inspection, and sitemap management.121MIT