Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Google/Yandex SERP parsing and Yandex Wordstat keyword frequency via XMLRiver XML API
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"xmlriver": {
"command": "uvx",
"args": [
"xmlriver-mcp"
]
}
}
}在终端中运行这条命令
claude mcp add xmlriver -- uvx xmlriver-mcp粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"xmlriver": {
"command": "uvx",
"args": [
"xmlriver-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"xmlriver": {
"type": "stdio",
"command": "uvx",
"args": [
"xmlriver-mcp"
]
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 artgas1 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.2.3)于上个月进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, ScienceShot science reference
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Sourced, citable answers in radiation and particle physics, photonics, electronics and quantum.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
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.
uvx xmlriver-mcp
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": " ", "XMLRIVER_KEY": " " } } } }
Add to project .mcp.json:
{
"mcpServers": { "xmlriver": { "command": "uvx", "args": ["xmlriver-mcp"], "env": { "XMLRIVER_USER": " ", "XMLRIVER_KEY": " " } } } }
Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json (project):
{
"mcpServers": { "xmlriver": { "command": "uvx", "args": ["xmlriver-mcp"], "env": { "XMLRIVER_USER": " ", "XMLRIVER_KEY": " " } } } }
| 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 variancegit clone https://github.com/artgas1/xmlriver-mcp
cd xmlriver-mcp uv sync --all-extras
uv run pytest tests/unit -v
XMLRIVER_USER=... XMLRIVER_KEY=... uv run pytest tests/integration -v -m integration
XMLRIVER_USER=... XMLRIVER_KEY=... npx @modelcontextprotocol/inspector uv run python -m xmlriver_mcp.server
npx @modelcontextprotocol/inspector --cli "uv run python -m xmlriver_mcp.server" --method tools/list
MIT
PRs welcome. Open an issue first for substantial changes.