geoseo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GEOSEO_DB | No | Path to SQLite database for trend tracking (default: platform user-data dir / geoseo.sqlite) | |
| GEOSEO_INDEXNOW_KEY | No | IndexNow key (32-char hex string) | |
| GEOSEO_GEMINI_API_KEY | No | Gemini API key | |
| GEOSEO_OPENAI_API_KEY | No | OpenAI API key | |
| GEOSEO_SERPAPI_API_KEY | No | SerpAPI API key | |
| GEOSEO_ANTHROPIC_API_KEY | No | Anthropic API key | |
| GEOSEO_PERPLEXITY_API_KEY | No | Perplexity API key | |
| GEOSEO_GOOGLE_CLIENT_SECRET | No | Absolute path to the Google OAuth client secret JSON file | |
| GEOSEO_BING_WEBMASTER_API_KEY | No | Bing Webmaster API key |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| geoseo_statusA | Report which engines are configured and reachable. Always safe to call. Returns a dict keyed by engine name with
|
| gsc_list_sitesA | List all Search Console properties the authenticated user can access. Returns a list of site entries with |
| gsc_performanceC | Query GSC search analytics. |
| gsc_inspect_urlA | Get index status for a specific URL via the URL Inspection API. Returns coverage state, last crawl time, mobile usability, indexed verdict, and indexing rich-result data. Slow (~1s/call); rate-limited by Google. |
| gsc_submit_sitemapC | Submit (or resubmit) a sitemap URL to GSC.
|
| bing_list_sitesB | List all Bing-verified sites for the API key owner. |
| bing_query_statsA | Last-6-months query stats from Bing Webmaster (clicks, impressions, position).
|
| bing_page_statsC | Per-page stats from Bing Webmaster. |
| bing_url_infoC | Index status + crawl info for a single URL on Bing. |
| bing_submit_urlB | Submit a URL for fast crawling. Daily quota applies (default ~10/day). |
| bing_crawl_issuesC | Crawl errors / blocked URLs / DNS issues reported by Bingbot. |
| yandex_list_sitesA | List sites in the token owner's Yandex Webmaster account. |
| yandex_site_summaryB | Site quality index (SQI), pages in search, excluded pages, problem counts.
|
| yandex_query_statsA | Top Yandex search queries: shows, clicks, average show/click position.
|
| yandex_url_infoC | Indexing + search status for a URL in Yandex "Monitoring important pages". |
| yandex_submit_urlC | Queue a URL for Yandex recrawl. Daily quota applies. |
| yandex_crawl_issuesC | Active Yandex site diagnostics (by severity) plus sample broken internal links. |
| indexnow_submit_urlB | Notify Bing, Yandex, Naver, Seznam, and Yep that a single URL was published or updated. Requires |
| indexnow_submit_urlsA | Batch-notify search engines about up to 10,000 URLs (must share one host). Best for sitemap-wide rebuilds or large content updates. |
| perplexity_queryB | Ask Perplexity (Agent API + web search); return answer + cited URLs/domains. Defaults to the |
| perplexity_citation_checkC | Citation share for |
| openai_queryB | Ask ChatGPT (with web search) a question; return answer + cited URLs. Uses the OpenAI Responses API with the |
| claude_queryB | Ask Claude (with server-side web search) a question; return answer + cited URLs. |
| gemini_queryA | Ask Gemini (with Google Search grounding) a question; return answer + cited URLs. Grounding sources here are the same signal Google uses for AI Overviews, so this is the closest open-API proxy for "what AIO might cite for this query". |
| grok_queryA | Ask Grok (with live web search) a question; return answer + cited URLs. Uses the xAI Responses API with the |
| brave_queryB | Ask Brave's AI Answers (grounded in Brave Search); return answer + cited URLs. Brave runs its own independent web index, so it is a useful extra
signal next to Google/Bing-backed engines. Requires the Brave Answers
plan ( |
| multi_llm_queryA | Ask the same question to all (or selected) configured LLM engines in parallel.
|
| multi_llm_citation_checkA | How often each configured LLM cites (or mentions) The headline GEO/AEO tool. Feed it your top 20-50 buyer questions and get a per-engine breakdown for ChatGPT/Claude/Gemini/Perplexity/Grok/Brave:
LLM answers vary run to run, so every question is asked |
| list_llm_enginesA | Return the LLM engines currently configured (have an API key). |
| aio_checkA | Run a Google search via SerpAPI and parse the AI Overview block. Returns |
| aio_citation_checkA | For a batch of queries, report AIO fire-rate and citation share for This is the GEO companion to |
| audit_pageA | Audit a single page (local file path or http(s) URL). Set Returns a structured report with: title/meta/headings, word count,
link counts, image alt coverage, JSON-LD schema types, Open Graph,
Twitter Card, freshness signals, GEO-quotability score, and a list
of human-readable findings. Plus a 0-100 overall Examples:
|
| audit_siteA | Recursively audit every HTML file under a folder. Returns per-file scores, an aggregate summary (mean score, worst pages, most common findings), and the top opportunities for improvement. Useful as the first call against a content directory to spot the worst offenders quickly. |
| find_broken_external_linksA | Find dead, redirected, or flaky outbound links across a folder of HTML. Every external
|
| lint_schema_pageA | Validate a page's JSON-LD against Google's structured-data requirements.
Returns per-entity |
| lint_schema_siteA | Run Returns files with errors, files that have no JSON-LD at all, a count of schema types found, the most common missing required properties, and per-file problems. |
| generate_llms_txtA | Generate a draft
|
| validate_llms_txtA | Validate an Returns parsed structure plus an |
| internal_link_graphA | Audit a folder of HTML pages as a directed internal-link graph. Returns counts of files/edges, the orphans (no inbound links), dead-ends (no outbound links), top hub pages, and a list of dangling internal hrefs that don't resolve to any file. Pass |
| suggest_internal_linksA | Suggest top-K internal links to add to each page in a folder. By default uses TF-IDF cosine similarity over Each suggestion includes a cheap |
| trend_initB | Create the local SQLite snapshot DB if it doesn't exist; return its path. |
| trend_statsB | Inventory of what's stored: row counts, sites/domains, oldest/newest snapshots. |
| snapshot_gscB | Run a GSC performance query and persist the rows as a snapshot. Run this on a schedule (cron, n8n, |
| snapshot_llm_citationsA | Run multi-LLM citation check and persist the per-question results. Builds the dataset behind |
| snapshot_serp_aioC | Run AIO citation check via SerpAPI and persist as |
| trend_gscA | Time-series of clicks/impressions/position from stored GSC snapshots. Aggregates by |
| trend_llm_citationsB | Per-snapshot citation share for
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 47 tools
Most provider-specific tools are distinguishable, but the set has notable overlap among aggregate vs provider-specific citation tools and snapshot/trend variants (e.g. multi_llm_citation_check, perplexity_citation_check, snapshot_llm_citations; aio_check, aio_citation_check, snapshot_serp_aio). An agent could reasonably misselect when asked to track or compare citation visibility.
Almost all tools use snake_case and many follow a provider_prefix_action pattern (gsc_*, bing_*, yandex_*), which is readable. However, ordering varies between provider_action, action_object, and entity_action (audit_page, trend_gsc, geoseo_status), so it is consistent but not uniform.
47 tools is far above the typical 3-15 range and creates a heavy selection surface for an agent. While the domain is broad, many tools are provider variants, aggregate wrappers, or snapshot/trend companions that could be consolidated.
The surface covers an unusually wide GEO/SEO lifecycle: multiple webmaster APIs, IndexNow submission, LLM/AIO citation checks, page/site audits, schema and link linting, llms.txt generation/validation, and trend snapshots. Minor gaps exist around destructive/update operations and broader sitemap management, but core workflows are well covered.