A side-by-side look at the Seo Tools MCP and GEO MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Seo Tools MCP for marketing work as a local process; choose GEO MCP for marketing over a hosted endpoint. You can also run both side by side in one mcpServers block.
xmlstock_auth_status, xmlstock_set_credentials, xmlstock_serp.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Marketing | Marketing |
| Quality signal | 65/100 · Great | 48/100 · Fair |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Remote HTTP/SSE |
| Auth | API key required | Not declared |
| Pricing | BYOK (pay the provider) | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 8 | 5,361 |
| Directory activity | 6 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 11 | Not listed |
| Full listing | View Seo Tools MCP | View GEO MCP |
xmlstock_auth_statusСтатус авторизации xmlstock: какие ключи заданы (маскированно), каких не хватает, как их получить. ВЫЗЫВАТЬ ПЕРВЫМ в начале работы с xmlstock. Если чего-то нет — запросить значения у пользователя и сохранить через xmlstock_set_credentials.xmlstock_set_credentialsСохранить ключи xmlstock в /home/user/.config/seo-tools-mcp/.env (права 600) и применить сразу, без перезапуска сервера. Передавать только обновляемые поля. account — сохранить в именованный профиль (мультиаккаунт). Значения даёт пользователь; в ответе они маскируются.xmlstock_serpСлепок выдачи Google/Yandex через XMLStock (ПЛАТНО за запрос). Возвращает { found, truncated (true = выдача кончилась раньше запрошенного depth), count, results: [{ position, url, title, snippet, text_bolds (подсветки hlword) }], serp_features: { featured_snippet, paa (только Google), related, sitelinks_top1, packs } }. Пустая выдача (код 15) ТАРИФИЦИРУЕТСЯ и помечается { results: [], empty: true, note }. depth>10 добирается пагинацией (каждая страница — отдельный платный запрос; у yandex_xml — до 100/страница). region: ОДИН регион (название или числовой id Яндекса) — работает для ВСЕХ движков. ОГРАНИЧЕНИЕ ИСТОЧНИКА: device=mobile отдаёт только позиции и сниппеты — без hlword/PAA/related; подсветки и SERP-фичи снимать с desktop. engine=yandex_xml — ОФИЦИАЛЬНЫЙ Яндекс XML (легальный API, тариф дороже: от 24 ₽/1000): groupby до 100 работает — до 100 результатов за ОДИН платный запрос (depth до 1000), hlword-подсветки на любых устройствах, статистика «найдено»: found (по запросу), found_docs (документов), found_human (строкой); в results доп. поля id/modtime/saved_copy_url/is_local. Отличие от yandex (live): SERP-фичей/packs нет — чистая органика; device/searchDomain/lang/l10n/period/exactQuery/includeAds/includeSimilar не применимы; safeSearch маппится в filter (strict/moderate/none).xmlstock_imagesПоиск по картинкам Google через XMLStock (ПЛАТНО за запрос). Возвращает { position, url (страница-источник), imageUrl (сама картинка), title }. truncated: true = выдача кончилась раньше запрошенного depth.xmlstock_newsПоиск по новостям Google через XMLStock (ПЛАТНО за запрос). Возвращает { position, url, title, source (издание), date (часто относительная), snippet }. truncated: true = выдача кончилась раньше запрошенного depth.xmlstock_videoПоиск по видео Google через XMLStock (ПЛАТНО за запрос). Возвращает { position, url, title, thumbnail, host (YouTube...), channel, duration, snippet }. truncated: true = выдача кончилась раньше запрошенного depth.xmlstock_balanceБаланс и дневной расход аккаунта XMLStock (бесплатный сервисный вызов). Заодно проверка ключей.xmlstock_wordstatЧастотность и топ запросов Яндекс Wordstat через XMLStock (ПЛАТНО за запрос, ~19₽/1K). Возвращает { totalCount, results: [{ phrase, count }] (топ по фразе), associations: [{ phrase, count }] (похожие) }. Операторы Wordstat в query: "…" (точная), ! (форма слова), + (стоп-слово), - (минус), [ ] (порядок), | (или).xmlstock_wordstat_dynamicsДинамика частотности фразы по времени (Яндекс Wordstat через XMLStock, ПЛАТНО за запрос). period: day/week/month. from/to — YYYY-MM-DD (для month период автоматически растягивается на целые месяцы). Возвращает [{ date, count, share }].xmlstock_wordstat_regionsРаспределение спроса по регионам для фразы (Яндекс Wordstat через XMLStock, ПЛАТНО — дороже топа/динамики). Возвращает [{ regionId, name, count, share, affinityIndex }]; имена регионов подставляются из дерева (кэш 24ч). ВНИМАНИЕ: при холодном кэше дерева (первый вызов за 24ч) делается дополнительный ПЛАТНЫЙ запрос regionsTree.xmlstock_wordstat_regions_treeДерево регионов Яндекс Wordstat через XMLStock (id + имя + путь) — id для параметра region в других запросах. ПЛАТНО за запрос.No tool names declared yet. Check the project README from the listing page.
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"antohins-seo-tools-mcp": {
"command": "npx",
"args": [
"-y",
"seo-tools-mcp-xmlstock"
]
}
}
}
{
"mcpServers": {
"google-ads-meta-ads-seo-geo-mcp": {
"url": "https://connector.get-ryze.ai/mcp"
}
}
}