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 分