The Model Context Protocol (MCP) allows AI assistants like Claude, GPT, and Cursor to interact directly with your Better Search Console data. Your assistant can list websites, check indexation status, analyze prompts, manage sitemaps, and much more — all through a standardized tool-calling interface.
The MCP server is available at:
https://<your-host>/_mcpThree methods are supported (in priority order):
| Method | Example |
|---|---|
X-API-TOKEN header | X-API-TOKEN: your_token_here |
Authorization: Bearer header | Authorization: Bearer your_token_here |
?token= query parameter | /_mcp?token=your_token_here |
Find your API token in Settings. It is a 64-character hex string.
For clients that support OAuth, the MCP endpoint also accepts standard OAuth 2.0 Bearer tokens obtained via the Google OAuth flow. The access token returned after the user authorizes is stored on the user record and can be used as a Bearer token.
{
"mcpServers": {
"better-search-console": {
"url": "https://<your-host>/_mcp?token=<YOUR_API_TOKEN>"
}
}
}{
"mcpServers": {
"better-search-console": {
"url": "https://<your-host>/_mcp",
"headers": {
"X-API-TOKEN": "<YOUR_API_TOKEN>"
}
}
}
}{
"mcpServers": {
"better-search-console": {
"url": "https://<your-host>/_mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_TOKEN>"
}
}
}
}| Tier | Requests/min | Requests/day |
|---|---|---|
| Free | 10 | 50 |
| Starter | 100 | 200 |
| Pro | 200 | 500 |
| Master | Unlimited | Unlimited |
List all websites owned by the authenticated user.
No parameters required.
Get detailed information about a specific website.
Parameters:
website_idUpdate website settings (name, description, category, auto flags).
Parameters:
website_idnamedescriptioncategoryauto_indexingauto_sitemap_refreshauto_update_statusList URLs for a website with optional filters and pagination.
Parameters:
website_idcoverage_stateurl_containsindexing_statepagelimitDelete a single URL from a website.
Parameters:
url_idDelete multiple URLs from a website in bulk.
Parameters:
website_idurlsGet URL statistics grouped by coverage state.
Parameters:
website_idGet the current indexation queue status for a website.
Parameters:
website_idList all sitemaps for a website.
Parameters:
website_idAdd a sitemap URL to a website (validates domain and reachability).
Parameters:
website_idsitemap_urlFetch and parse a sitemap, importing discovered URLs into the database.
Parameters:
sitemap_idProcess all sitemaps for a website.
Parameters:
website_idDelete a sitemap and optionally its associated URLs.
Parameters:
sitemap_idQueue a URL for Google indexation.
Parameters:
urlQueue a URL for Bing indexation.
Parameters:
urlQueue multiple URLs for Google and/or Bing indexation.
Parameters:
website_idurlsgooglebingQueue a URL for indexation status check.
Parameters:
urlQueue multiple URLs for indexation status check.
Parameters:
website_idurlsDisable indexation for multiple URLs (sets mustBeIndexed to false).
Parameters:
website_idurlsRe-enable indexation for multiple URLs (sets mustBeIndexed to true).
Parameters:
website_idurlsManually update the coverage state of a URL.
Parameters:
urlstateGet Search Console analytics data with flexible dimensions.
Parameters:
website_idstart_dateend_datedimensionsrow_limitGet top search queries for a website.
Parameters:
website_idstart_dateend_datelimitGet top pages by search performance.
Parameters:
website_idstart_dateend_datelimitGet search performance breakdown by device type.
Parameters:
website_idstart_dateend_dateGet search performance breakdown by country.
Parameters:
website_idstart_dateend_datelimitCompare search analytics between two time periods with deltas.
Parameters:
website_idperiod1_startperiod1_endperiod2_startperiod2_enddimensionsList all prompt analyses for a website.
Parameters:
website_idCreate a new prompt analysis entry.
Parameters:
website_idpromptmodelstargeted_keywordsUpdate targeted keywords for a prompt analysis.
Parameters:
analysis_idtargeted_keywordsGet detailed results and keyword statistics for a prompt analysis.
Parameters:
analysis_idCreate a custom dashboard (max 3 per website).
Parameters:
website_idnameis_defaultUpdate a custom dashboard name or default status.
Parameters:
dashboard_idnameis_defaultDelete a custom dashboard and its widgets.
Parameters:
dashboard_idReplace all widgets on a dashboard.
Parameters:
dashboard_idwidgetsList saved URL filters for a website.
Parameters:
website_idCreate a saved URL filter.
Parameters:
website_idnamesearchsitemapindexationDelete a saved filter.
Parameters:
filter_idGenerate a PDF report for a website (requires pro/master subscription).
Parameters:
website_idstart_dateend_dateGet report branding settings for a website.
Parameters:
website_idUpdate report branding settings (company name, colors, footer).
Parameters:
website_idcompany_nameprimary_coloraccent_colorfooter_textFetch a URL and extract SEO meta tags (title, description, OG, robots, h1s).
Parameters:
urlAnalyze keyword density in a text.
Parameters:
textkeywordsCheck URL structure for SEO issues and return a score.
Parameters:
urlAnalyze text readability using Flesch Reading Ease and Flesch-Kincaid grade.
Parameters:
textCrawl a website and generate a sitemap XML file.
Parameters:
website_urlmax_urlsGenerate a robots.txt from a configuration of user agents and sitemaps.
Parameters:
user_agentssitemapsGet the authenticated user profile and subscription info.
No parameters required.
List your websites:
Tool: list-websites
Arguments: {}Check indexation for a URL:
Tool: check-url-indexation
Arguments: { "website_id": 1, "url": "https://example.com/page" }Submit URLs for indexing:
Tool: submit-urls-for-indexing
Arguments: { "website_id": 1, "url_ids": [10, 11, 12] }| Issue | Solution |
|---|---|
| 401 Unauthorized | Check your API token is correct and included in the request. |
| 429 Too Many Requests | You have exceeded your rate limit. Wait or upgrade your plan. |
| Tool not found | Verify the tool name matches the reference above exactly. |
| Connection refused | Ensure the host URL is correct and accessible from your network. |
| Invalid parameters | Check required parameters match the schema. IDs must be numbers. |