Xmlriver Mcp

io.github.artgas1由 GitHub 帳號 artgas1 發布v0.2.3更新於 Oct 24, 2026

Google/Yandex SERP parsing and Yandex Wordstat keyword frequency via XMLRiver XML API

概覽

AI 產生的概覽

本機 MCP 伺服器,讓助理透過 XMLRiver 查詢 Google 與 Yandex 搜尋結果、Yandex Wordstat 關鍵字資料、收錄檢查及帳戶餘額。

可以做什麼
解析 Google 和 Yandex 搜尋結果頁,可依國家、地區、語言、裝置、頁碼和日期篩選,並取得廣告、FAQ、知識圖譜、AI Overview 等附加區塊,以及經 XMLRiver 呼叫官方 Yandex Search API v2。取得 Yandex Wordstat 關鍵字頻次、相似查詢及按月、週、日的需求走勢。取得 Google 或 Yandex 搜尋框自動完成建議,並依座標查詢 Google 地圖地點。檢查某個網址是否被 Google 或 Yandex 收錄。讀取 XMLRiver 帳戶餘額、方案、方案到期時間和每千次請求費用。
適用情境
適合 SEO 與關鍵字研究,尤其是俄語市場:追蹤 Yandex 或 Google 排名、用 Wordstat 驗證需求、挖掘長尾詞、監控收錄情況,以及在大批量查詢前比較不同地區的結果。
執行需求
透過 uvx 以 Python 套件在本機執行(需 Python 3.10+)。需要已儲值的 XMLRiver 帳戶,並在 MCP 用戶端設定中設定 XMLRIVER_USER(數字 ID)和 XMLRIVER_KEY(40 字元十六進位金鑰)環境變數。需要連線至 XMLRiver API 的網路存取。
安裝前請注意
每次查詢都會從 XMLRiver 預付餘額扣款,批量操作會產生費用,建議先查看餘額和單價。README 說明 XMLRiver API 僅支援 HTTP 而非 HTTPS,憑證和查詢內容以未加密方式傳輸;金鑰可在控制台輪換。Google 地圖搜尋工具被說明為尚未經真實回應驗證。工具被描述為唯讀。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Xmlriver Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

[xmlriver-mcp logo]

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

[Add to Cursor] [Add to VS Code] [Add to Claude Desktop]

[PyPI] [Downloads] [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).

Demo

[xmlriver-mcp wordstat demo in Claude]

Claude queries wordstat_query and parses real frequency data from Yandex. Same flow works for google_search, yandex_search, indexing checks, and account ops.

Quickstart

bash
uvx xmlriver-mcp

Configuration

Claude Desktop

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

json
{  "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:

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

json
{  "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 + similar queries, or demand dynamics by month/week/day
search_suggestionsSearch-box autocomplete from Google or Yandex, 1–50 phrases per call. Surfaces long-tail phrasings that carry no Wordstat frequency at all
google_maps_searchGoogle Maps places around a coordinate (zoom + coords required). ⚠️ See caveat below
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.

⚠️ 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.

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 tracking — yandex_search(query="...", region=213) for own/competitor ranking
  • Keyword research — wordstat_query(query="купить iphone", history_period="monthly") for demand validation + seasonality
  • Featured snippet hunting — google_search(additional_blocks="faqsnippet,knowledge_graph,zeroposition") to see what owns the answer box
  • Long-tail discovery — search_suggestions(phrases=[...]) with a prefix sweep (seed + each letter of the alphabet) pulls phrasings Wordstat never reports
  • Indexation monitoring — check_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

bash
git clone https://github.com/artgas1/xmlriver-mcpcd xmlriver-mcpuv 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 — interactiveXMLRIVER_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)

License

MIT

Contributing

PRs welcome. Open an issue first for substantial changes.

Acknowledgements

來源:README.md,提交 cf86481

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

2
  1. v0.2.3最新Sep 23, 2026
  2. v0.2.0Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分