grain-seo-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GSC_OAUTH_SECRETS_FILE | Yes | Path to Google Cloud OAuth secrets JSON file |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_startedA | Start here. Returns a complete map of this server's capabilities, active platforms, and recommended workflows. Call this once at the beginning of any session. |
| sites_listA | List all verified sites or properties across all authorized accounts |
| bing_seo_cannibalizationB | Detect pages competing for the same query in Bing. |
| bing_seo_lost_queriesC | Identify queries that lost significant traffic on Bing compared to the previous period. |
| bing_brand_analysisB | Analyze Brand vs Non-Brand performance on Bing. |
| bing_analytics_trendsC | Detect rising or declining trends in Bing query performance |
| sites_addC | Add a new site to Search Console or Bing Webmaster Tools |
| sites_deleteA | Remove a site from Search Console or Bing Webmaster Tools |
| sites_getC | Get information about a specific site |
| sites_health_checkC | Run a health check on one or all verified sites. Checks performance trends and status. |
| sitemaps_listB | List sitemaps for a site |
| sitemaps_getC | Get details about a specific sitemap |
| sitemaps_submitB | Submit a sitemap to Search Console or Bing Webmaster Tools |
| sitemaps_deleteB | Delete a sitemap from Search Console or Bing Webmaster Tools |
| analytics_queryC | Query search analytics data with optional pagination |
| analytics_performance_summaryB | Get the aggregate performance metrics (clicks, impressions, CTR, position) for the last N days. |
| analytics_compare_periodsA | Compare performance metrics between two date periods. Useful for week-over-week or month-over-month analysis. |
| compare_enginesA | Compare performance data between Google and Bing for a specific dimension (query, page, etc). |
| analytics_top_queriesA | Get top search queries by clicks or impressions for the last N days. |
| analytics_top_pagesB | Get top performing pages by clicks or impressions for the last N days. |
| analytics_by_countryC | Get performance breakdown by country for the last N days. |
| analytics_search_appearanceC | Get performance breakdown by search appearance type for the last N days. |
| analytics_trendsC | Detect traffic trends (rising/declining) for queries or pages. |
| analytics_anomaliesB | Identify unusual daily spikes or drops in traffic. |
| analytics_drop_attributionB | Analyze a significant traffic drop to identify if it was caused by specific devices (mobile/desktop) or coincides with known Google algorithm updates. |
| analytics_time_seriesB | Get advanced time series data including rolling averages, seasonality strength, and trend forecasting. Supports multi-dimensional analysis, metrics selection, and custom granularities. |
| inspection_inspectB | Inspect a URL to check its indexing status, crawl info, and health |
| inspection_batchB | Inspect multiple URLs for a site in batch |
| pagespeed_analyzeC | Run PageSpeed Insights analysis on a URL to get performance, accessibility, best practices, and SEO scores |
| pagespeed_core_web_vitalsA | Get Core Web Vitals for both mobile and desktop including LCP, FID, CLS, FCP, TTI, and TBT |
| seo_recommendationsB | Generate SEO recommendations based on site performance data |
| seo_low_hanging_fruitC | Find keywords with high impressions but low rankings that have potential for growth |
| seo_cannibalizationC | Detect keyword cannibalization - multiple pages competing for the same query |
| seo_low_ctr_opportunitiesA | Find queries with low CTR relative to their ranking position. Great for title tag optimization. |
| seo_striking_distanceA | Find keywords ranking in positions 8-15. These are high-priority targets to push to Page 1. |
| seo_lost_queriesA | Identify queries that lost all traffic (or dropped >80%) compared to the previous period. |
| seo_brand_vs_nonbrandC | Analyze performance split between Brand and Non-Brand queries using a regex. |
| seo_quick_winsC | Find pages with queries ranking on page 2 (positions 11-20) that could be pushed to page 1 |
| grain_content_decayA | Detect pages with consistent traffic decline across 3 consecutive 30-day windows. Only flags pages with strict monotonic decline (oldest > middle > newest). |
| grain_traffic_dropsA | Diagnose WHY traffic dropped: ranking loss, CTR collapse, search demand decline, or page disappeared. Compares current vs prior period. |
| grain_ctr_benchmarkA | Compare actual CTR per page against industry benchmarks by position. Classifies as Above/At/Below/Significantly below benchmark. |
| grain_verify_claimB | Anti-hallucination: re-query GSC to verify a specific numeric claim. Tolerance: position ±0.5, other metrics ±5%. |
| grain_topic_clusterA | Aggregate performance for all pages matching a URL path pattern (e.g. /blog/, /guides/). Returns top pages and queries. |
| grain_content_recommendationsB | Generate prioritized SEO recommendations by cross-referencing quick wins, content gaps, and cannibalization. Returns update/create/consolidate actions. |
| accounts_listB | List all authorized Google and Bing accounts |
| accounts_add_siteC | Authorize a specific site or domain for an account (Account Boundary) |
| accounts_removeB | Remove an authorized account |
| seo_primitive_ranking_bucketC | primitive: Get the ranking bucket for a specific position (e.g. Top 3, Page 1). |
| seo_primitive_traffic_deltaA | primitive: Calculate the delta between two traffic metrics (absolute and percentage). |
| seo_primitive_is_brandB | primitive: Check if a query is a brand query based on a regex pattern. |
| seo_primitive_is_cannibalizedC | primitive: Check if two pages are competing for the same query based on their metrics. |
| schema_validateA | Validate Schema.org structured data (JSON-LD) from a URL, HTML snippet, or JSON object. |
| util_star_repoA | Star the GitHub repository to support the project. Uses GitHub CLI if available, or opens a browser. |
| bing_sites_listA | List all sites verified in Bing Webmaster Tools |
| bing_sites_addB | Add a new site to Bing Webmaster Tools |
| bing_sites_deleteB | Remove a site from Bing Webmaster Tools |
| bing_sitemaps_listB | List sitemaps for a Bing site |
| bing_sitemaps_submitC | Submit a sitemap to Bing Webmaster Tools |
| bing_sitemaps_deleteB | Remove a sitemap from Bing Webmaster Tools |
| bing_analytics_queryC | Get query performance stats from Bing Webmaster Tools (Top Queries) |
| bing_analytics_pageC | Get page performance stats from Bing Webmaster Tools (Top Pages) |
| bing_analytics_page_queryB | Get query performance stats for a specific page from Bing Webmaster Tools |
| bing_get_top_queriesC | Alias for bing_analytics_query. Get top queries for a site. |
| bing_get_top_pagesC | Alias for bing_analytics_page. Get top pages for a site. |
| bing_analytics_query_pageB | Get combined query and page performance stats for a site |
| bing_rank_traffic_statsC | Get historical rank and traffic statistics for a site |
| bing_keywords_statsC | Get historical stats for a keyword in Bing |
| bing_related_keywordsB | Get related keywords and search volume from Bing |
| bing_crawl_issuesC | Get crawl issues for a site from Bing Webmaster Tools |
| bing_crawl_statsA | Get crawl statistics (indexed, crawled, errors) for a site |
| bing_url_submission_quotaA | Get remaining URL submission quota for Bing |
| bing_url_submitB | Submit a single URL to Bing for indexing |
| bing_url_submit_batchB | Submit multiple URLs to Bing for indexing in a single batch |
| bing_index_nowB | Submit URLs via IndexNow API (Bing, Yandex, etc.) |
| indexing_submit_urlA | Submit a URL for indexing (notify Google or Bing that a page was updated). Google Indexing API is officially for JobPosting/BroadcastEvent pages. |
| indexing_remove_urlC | Notify Google that a URL has been removed (e.g., expired job posting). Google only. |
| indexing_statusB | Check the notification status for a URL previously submitted to the Google Indexing API |
| indexing_batch_submitB | Submit multiple URLs for indexing in batch. Google: max 200 (daily quota), Bing: max 500. |
| bing_sites_healthA | Run a comprehensive health check on one or all verified Bing sites |
| bing_opportunity_finderC | Find high-potential 'low-hanging fruit' keywords in Bing |
| bing_seo_recommendationsB | Generate prioritized SEO recommendations for a Bing site |
| bing_striking_distanceB | Find keywords ranking positions 8-15 on Bing (near page 1) |
| bing_low_ctr_opportunitiesC | Identify high-ranking Bing queries with lower than expected CTR |
| bing_url_infoA | Get detailed indexing and crawl information for a URL in Bing |
| bing_link_countsB | Get inbound link counts for a site from Bing |
| bing_analytics_detect_anomaliesC | Detect performance anomalies in Bing traffic |
| bing_analytics_compare_periodsC | Compare performance between two date ranges in Bing |
| bing_analytics_drop_attributionC | Identify the likely cause of a Bing traffic drop |
| bing_analytics_time_seriesC | Advanced time series analysis for Bing performance data |
| analytics_page_performanceB | Get detailed page performance metrics from GA4 (sessions, views, engagement) |
| analytics_traffic_sourcesB | Analyze traffic sources (Channel, Source, Medium) in GA4 |
| analytics_organic_landing_pagesB | Get performance of organic landing pages in GA4 (matches GSC data) |
| analytics_content_performanceB | Analyze content performance by Content Group in GA4 (Requires Content Groups to be configured in GA4 Admin) |
| analytics_ecommerceB | Get ecommerce performance (products, revenue) from GA4 |
| analytics_realtimeB | Get realtime active users broken down by page, country, and device |
| analytics_user_behaviorA | Get user behavior breakdown (Device, Country, Engagement) in a single batch |
| analytics_audience_segmentsB | Get audience segmentation (New vs Returning, Age, OS) in a single batch |
| analytics_conversion_funnelC | Analyze top converting pages and events |
| analytics_pagespeed_correlationB | Correlate GA4 engagement metrics with PageSpeed Insights scores for top organic pages |
| page_analysisB | Compare GSC ranking data with GA4 behavior data for top pages to find opportunities |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| analyze-site-performance | |
| compare-performance | |
| find-declining-pages | |
| keyword-opportunities | |
| new-content-impact | |
| mobile-vs-desktop | |
| site-health-check | |
| investigate_traffic_drop | |
| find_quick_wins | |
| full_site_audit | |
| analyze_page | |
| platform_comparison | |
| content_opportunity_report | |
| executive_summary | |
| ga4_traffic_audit |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| sites | |
| sitemaps | |
| analytics-summary | |
| docs-dimensions | |
| docs-filters | |
| docs-search-types | |
| docs-patterns | |
| docs-algorithm-updates | |
| docs-bing-api | |
| docs-index-now | |
| docs-bing-dimensions | |
| docs-bing-filters | |
| docs-bing-search-types | |
| docs-bing-patterns | |
| docs-bing-algorithm-updates | |
| docs-indexing |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zhangluka/grain-seo-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server