Google/Yandex SERP parsing and Yandex Wordstat keyword frequency via XMLRiver XML API
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
xmlriver-mcpMCP server for XMLRiver β Google/Yandex SERP parsing and Yandex Wordstat keyword frequency data via XML API.
mcp-name: io.github.artgas1/xmlriver-mcp
Gives Claude / Cursor / Windsurf direct access to:
First MCP for XMLRiver β fills a gap for Russian SEO research and Yandex-aware analysis. Pay-as-you-go (~25 β½ / 1000 requests on Basic tariff).
Claude queries wordstat_query and parses real frequency data from Yandex. Same flow works for google_search, yandex_search, indexing checks, and account ops.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Add to project .mcp.json:
Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
| Tool | What it does |
|---|---|
google_search | Parse Google SERP for a query β country, language, device, page, date filter, extra blocks (ads, FAQ, knowledge graph, AI Overview) |
yandex_search | Parse Yandex SERP β region, language, device, page, date filter, extra blocks |
yandex_search_api_v2 | Yandex Search API v2 (official) via XMLRiver β cleaner structured output |
wordstat_query | Yandex Wordstat keyword frequency + similar queries, or demand dynamics by month/week/day |
search_suggestions | Search-box autocomplete from Google or Yandex, 1β50 phrases per call. Surfaces long-tail phrasings that carry no Wordstat frequency at all |
google_maps_search | Google Maps places around a coordinate (zoom + coords required). β οΈ See caveat below |
check_url_indexed | Check if URL is indexed in Google or Yandex |
get_balance | Current XMLRiver balance in rubles |
get_tariff | Current XMLRiver tariff name (Basic / Pro / Mega / Giga) |
get_tariff_expire | Tariff expiration date (for prepay tariffs) |
get_cost | Cost per 1000 requests for a given engine (google / yandex / yaxml / wordstat) |
All tools are read-only (annotated with readOnlyHint: true). No destructive operations.
β οΈ google_maps_search is unverified against a live response. Every setab=maps request
answered code 500 while it was written (2026-08-04), including a deliberately invalid one that
should have returned code 108 β plain Google and Yandex searches worked in the same minutes, so
the mode appears unavailable service-side. The request shape and response parsing follow the
documentation and are covered by unit tests; both still need a live check.
Deliberately not wrapped: raw=page (returns the full HTML page β bypasses parsing and
returns megabytes into the model's context) and the deferred-response mode (delayed / req_id)
β an MCP call is synchronous, so a request id the caller must poll for has nowhere useful to go.
user (numeric ID) and key (40-char hex) from the dashboardXMLRIVER_USER and XMLRIVER_KEY env vars in your MCP client configSecurity note: XMLRiver API is HTTP-only (not HTTPS). The key is rotatable from the dashboard if compromised.
| Tariff | Setup | Google / Yandex / Wordstat | Yandex Search API v2 |
|---|---|---|---|
| Basic | Pay-as-you-go | 25 β½ / 1k | 25 β½ / 1k |
| Pro | 5000 β½/mo | 20 β½ / 1k | 24 β½ / 1k |
| Mega | 15000 β½/mo | 15 β½ / 1k | 23 β½ / 1k |
| Giga | 50000 β½/mo | 12 β½ / 1k | 22 β½ / 1k |
Use get_balance and get_cost to monitor spend before bulk operations.
yandex_search(query="...", region=213) for own/competitor rankingwordstat_query(query="ΠΊΡΠΏΠΈΡΡ iphone", history_period="monthly") for demand validation + seasonalitygoogle_search(additional_blocks="faqsnippet,knowledge_graph,zeroposition") to see what owns the answer boxsearch_suggestions(phrases=[...]) with a prefix sweep (seed + each letter of the alphabet) pulls phrasings Wordstat never reportscheck_url_indexed(url="https://your-site.com/new-page") after publishingregion/country for Yandex/Google to see geographic variancePRs welcome. Open an issue first for substantial changes.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/xmlriver-mcp)<a href="https://allmcps.com/mcp/xmlriver-mcp"><img src="https://allmcps.com/api/badge/xmlriver-mcp?style=directory" alt="Xmlriver Mcp on AllMCPs" /></a>