In-depth architectural comparison of the Substack Publisher MCP and Seo Tools MCP MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Substack Publisher MCP
Marketing · Local stdio
Quality: 52/100 (Good) | Auth: API Key required
Seo Tools MCP
Marketing · Local stdio
Quality: 65/100 (Great) | Auth: API Key required
Verdict Summary: Choose Substack Publisher MCP if you need specialized Marketing tools running via a local process. Choose Seo Tools MCP if your workspace requires Marketing integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Substack Publisher MCP when:
You need dedicated capabilities in the Marketing domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: API Key required (Free / Open Source).
You have access to required keys: SUBSTACK_API_KEY.
Read-only access to posts, engagement stats, subscriber counts, and subscriber lookup through Substack's official Publisher API. Supports multiple publications.
Five read-only SEO servers for the Google/Yandex (RU/CIS) market: SERP (XMLStock), Yandex Wordstat, Google Search Console (Search Analytics + URL Inspection), Yandex.Webmaster, and Yandex.Metrica. 38 tools, multi-account, OAuth with auto-refresh. Install: npx -y seo-tools-mcp-.
Category & Scope
Tools & Capabilities Breakdown
Substack Publisher MCP Tools (6)
list_publications
List configured publications
list_posts
List published posts
get_post
Get a specific post by URL slug
get_post_stats
Get engagement stats for a post
get_subscriber_counts
Get daily subscriber counts by type
get_subscriber
Look up a subscriber by email
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Substack Publisher MCP is categorized under Marketing and uses a local stdio subprocess. In contrast, Seo Tools MCP belongs to Marketing using local stdio subprocess. Select Substack Publisher MCP when you need capabilities focused on marketing and Seo Tools MCP when you require tools for marketing.
Статус авторизации 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 в других запросах. ПЛАТНО за запрос.