Xmlriver Mcp

Created By
artgas116 days ago
First MCP server for XMLRiver — Russian-focused SEO API. Provides Google/Yandex SERP parsing, Yandex Wordstat keyword frequency data, and URL indexing checks via XML API. Fills the gap for Russian SEO research and Yandex-aware analysis in Claude / Cursor / Windsurf. Tools (9 total, all read-only): - google_search — Google SERP with country/lang/device/page filters, additional blocks (ads, FAQ, knowledge graph, AI Overview) - yandex_search — Yandex SERP (Russian markets — primary use case) with region/domain/lang/device - yandex_search_api_v2 — official Yandex Search API v2 via XMLRiver proxy - wordstat_query — Yandex Wordstat keyword frequency, similar/containing phrases, history - check_url_indexed — index check in Google or Yandex - get_balance, get_tariff, get_tariff_expire, get_cost — account ops Pay-as-you-go via XMLRiver (~25 ₽ / 1000 requests on Basic tariff). GitHub: https://github.com/artgas1/xmlriver-mcp PyPI: https://pypi.org/project/xmlriver-mcp/ Official MCP Registry: io.github.artgas1/xmlriver-mcp
Overview

xmlriver-mcp

MCP server for XMLRiver — Google/Yandex SERP parsing and Yandex Wordstat keyword frequency data via XML API.

mcp-name: io.github.artgas1/xmlriver-mcp

PyPI License: MIT Python 3.10+

What it does

Gives Claude / Cursor / Windsurf direct access to:

  • Google SERP parsing (organic, ads, FAQ, knowledge graph, AI Overview) for any country / region / device
  • Yandex SERP parsing (Russian-speaking markets — primary use case)
  • Yandex Wordstat keyword frequency, history, similar queries (Yandex's keyword volume tool)
  • Indexing check — is this URL in Google/Yandex index?
  • Account ops — balance, tariff, cost per 1k requests

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).

Quickstart

uvx xmlriver-mcp

Configuration

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "xmlriver": {
      "command": "uvx",
      "args": ["xmlriver-mcp"],
      "env": {
        "XMLRIVER_USER": "<your_numeric_user_id>",
        "XMLRIVER_KEY": "<your_40_char_hex_key>"
      }
    }
  }
}

Claude Code

Add to project .mcp.json:

{
  "mcpServers": {
    "xmlriver": {
      "command": "uvx",
      "args": ["xmlriver-mcp"],
      "env": {
        "XMLRIVER_USER": "<your_numeric_user_id>",
        "XMLRIVER_KEY": "<your_40_char_hex_key>"
      }
    }
  }
}

Cursor

Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):

{
  "mcpServers": {
    "xmlriver": {
      "command": "uvx",
      "args": ["xmlriver-mcp"],
      "env": {
        "XMLRIVER_USER": "<your_numeric_user_id>",
        "XMLRIVER_KEY": "<your_40_char_hex_key>"
      }
    }
  }
}

Tools

ToolWhat it does
google_searchParse Google SERP for a query — country, language, device, page, date filter, extra blocks (ads, FAQ, knowledge graph, AI Overview)
yandex_searchParse Yandex SERP — region, language, device, page, date filter, extra blocks
yandex_search_api_v2Yandex Search API v2 (official) via XMLRiver — cleaner structured output
wordstat_queryYandex Wordstat keyword frequency, device breakdown, history, similar queries
check_url_indexedCheck if URL is indexed in Google or Yandex
get_balanceCurrent XMLRiver balance in rubles
get_tariffCurrent XMLRiver tariff name (Basic / Pro / Mega / Giga)
get_tariff_expireTariff expiration date (for prepay tariffs)
get_costCost per 1000 requests for a given engine (google / yandex / yaxml / wordstat)

All tools are read-only (annotated with readOnlyHint: true). No destructive operations.

Authentication

  1. Register at https://xmlriver.com
  2. Top up balance (minimum ~100 ₽ to start)
  3. Get your user (numeric ID) and key (40-char hex) from the dashboard
  4. Set XMLRIVER_USER and XMLRIVER_KEY env vars in your MCP client config

Security note: XMLRiver API is HTTP-only (not HTTPS). The key is rotatable from the dashboard if compromised.

Pricing context

TariffSetupGoogle / Yandex / WordstatYandex Search API v2
BasicPay-as-you-go25 ₽ / 1k25 ₽ / 1k
Pro5000 ₽/mo20 ₽ / 1k24 ₽ / 1k
Mega15000 ₽/mo15 ₽ / 1k23 ₽ / 1k
Giga50000 ₽/mo12 ₽ / 1k22 ₽ / 1k

Use get_balance and get_cost to monitor spend before bulk operations.

Common use cases

  • SEO position trackingyandex_search(query="...", region=213) for own/competitor ranking
  • Keyword researchwordstat_query(query="купить iphone", history_period="monthly") for demand validation + seasonality
  • Featured snippet huntinggoogle_search(additional_blocks="faqsnippet,knowledge_graph,zeroposition") to see what owns the answer box
  • Indexation monitoringcheck_url_indexed(url="https://your-site.com/new-page") after publishing
  • Cross-region comparison — same query, different region/country for Yandex/Google to see geographic variance

Local development

git clone https://github.com/artgas1/xmlriver-mcp
cd xmlriver-mcp
uv sync --all-extras

# Run unit tests (no API key needed)
uv run pytest tests/unit -v

# Run integration tests (requires XMLRIVER_USER / XMLRIVER_KEY)
XMLRIVER_USER=... XMLRIVER_KEY=... uv run pytest tests/integration -v -m integration

# MCP Inspector — interactive
XMLRIVER_USER=... XMLRIVER_KEY=... npx @modelcontextprotocol/inspector uv run python -m xmlriver_mcp.server

# MCP Inspector — CLI smoke test (list tools)
npx @modelcontextprotocol/inspector --cli "uv run python -m xmlriver_mcp.server" --method tools/list

Architecture

  • Stack: Python 3.10+ / FastMCP / httpx / tenacity / pydantic
  • Transport: stdio (default)
  • No external SDK dependency — direct REST via httpx + custom XML parser
  • Retry strategy: 3 attempts with exponential backoff on network errors (not on HTTP 4xx)
  • Logging: stderr only (stdio protocol requires stdout for JSON-RPC)

Built with /mcp-development

This MCP server was written using NeiroOwl's /mcp-development skill — comprehensive guide for building MCP servers in 2026 (MCP spec 2025-11-25). The skill codifies:

  • Tool design (granular vs unified, 3-part descriptions, schemas, annotations)
  • Anti-patterns (top 20)
  • Security model (9 attack classes + defense-in-depth)
  • Distribution (PyPI/npm + registries)

If you're building your own MCP — check it out.

License

MIT

Contributing

PRs welcome. Open an issue first for substantial changes.

Acknowledgements

Server Config

{
  "mcpServers": {
    "xmlriver": {
      "command": "uvx",
      "args": [
        "xmlriver-mcp"
      ],
      "env": {
        "XMLRIVER_USER": "<your_user_id>",
        "XMLRIVER_KEY": "<your_api_key>"
      }
    }
  }
}
Project Info
Created At
16 days ago
Updated At
16 days ago
Author Name
artgas1
Star
-
Language
-
License
-
Category
Tags

Recommend Servers

View All
Tavily Mcp
@tavily-ai

JavaScript
a year ago
Crevio

2 days ago