wordstat_top_requests
Wordstat top requests
Popular and associated Wordstat queries for the last 30 days.
phraserequireddevicesregion_idsnum_phrases
io.github.solaixPublished by GitHub account solaixv0.1.1Updated Nov 1, 2026
Unofficial Yandex Wordstat MCP server for SEO keyword research, trends, and regional interest.
Unofficial Yandex Wordstat MCP server that gives an assistant read-only keyword research data: popular queries, demand dynamics and regional interest.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Follow the launch instructions in the repository.
Неофициальный open-source MCP-сервер, который даёт AI-агентам типизированный read-only доступ ко всем стандартным методам Yandex Wordstat API.
Статус:
0.1.1, исправление совместимости с пропущенными protobuf-default значениями Wordstat API.
Retry-After, таймауты и отмена запросов;stdout.Все инструменты помечены как read-only и idempotent. Запросы к Wordstat являются внешними API-вызовами и могут тарифицироваться.
22.23.4+, 24.22.1+ или 26.12.1+ в соответствующей LTS-линейке;yc.search-api.execute или IAM-токен;search-api.webSearch.user на нужный каталог Yandex Cloud.Задайте ровно один credential в окружении MCP-клиента:
Не сохраняйте реальные credentials в репозитории или общей MCP-конфигурации. Перезапустите клиент после изменения его окружения.
YANDEX_WORDSTAT_FOLDER_IDПеременная обязательна для IAM-токена аккаунта Яндекса или федеративного аккаунта. Укажите ID каталога,
на который назначена роль search-api.webSearch.user:
Для API-ключа или IAM-токена сервисного аккаунта переменную обычно не задают: Search API использует каталог сервисного аккаунта.
Выберите один способ авторизации: API-ключ или IAM-токен. Не передавайте оба одновременно. В примерах Codex и Claude Code переменные уже экспортированы в окружение процесса клиента.
Добавьте в ~/.codex/config.toml:
Для IAM-токена аккаунта Яндекса или федеративного аккаунта используйте:
Затем проверьте подключение командой codex mcp list. Codex CLI и IDE используют общую конфигурацию.
Вариант с IAM-токеном аккаунта Яндекса или федеративного аккаунта:
Добавьте сервер в пользовательский ~/.hermes/config.yaml:
Вариант с IAM-токеном аккаунта Яндекса или федеративного аккаунта:
Hermes передаёт stdio-серверу только явно перечисленные переменные. Не добавляйте пользовательский конфиг с credential в репозиторий.
Проверьте подключение командой hermes mcp test yandex_wordstat, затем перезапустите Hermes или
выполните /reload-mcp. Инструменты будут зарегистрированы с префиксом
mcp_yandex_wordstat_. Параллельные вызовы по умолчанию выключены, что помогает контролировать квоту.
Значения devices: all, desktop, phone, tablet; all нельзя сочетать с другими значениями.
В одном запросе допускается до 100 region_ids.
wordstat_find_regions работает по кэшированному дереву. Он полезен, когда агент знает название региона,
но не его ID. wordstat_regions при resolve_names: true делает дополнительный бесплатный вызов дерева
только при промахе кэша. Каждая следующая страница wordstat_regions заново вызывает платный метод
распределения по регионам, поэтому для полной выборки лучше использовать максимальный limit.
wordstat_dynamics принимает даты в формате YYYY-MM-DD. Если при auto_dates: true обе даты
отсутствуют, сервер запрашивает последние 60 завершённых дней, 52 завершённые недели или 12 завершённых
месяцев — в зависимости от детализации. Если отсутствует только одна граница, сервер вычисляет её;
автоматически добавленный to_date всегда указывает на последний завершённый период. Явно переданные
границы не сдвигаются. При auto_dates: false обязателен только from_date; to_date можно не задавать.
Дневной диапазон не может превышать 60 дней. Для недельной и месячной детализации Wordstat документирует диапазон от 3 недель или месяцев до 5 лет; самая ранняя доступная история начинается с января 2018 года. Неделя задаётся от понедельника до воскресенья, месяц — от первого до последнего дня месяца.
Live-проверки показали наблюдаемое, но не документированное поведение: последние календарные точки могут быть ещё не опубликованы, API возвращает только доступную часть пересекающегося диапазона, а диапазон целиком после последней опубликованной точки может получить HTTP 400. Поскольку HTTP 400 может иметь и другие причины, проверьте все параметры запроса; для недавнего диапазона попробуйте более ранние даты. Сервер не сдвигает явно заданный диапазон и не делает дополнительный платный запрос автоматически.
Для дневной динамики разрешены операторы -, !, +, кавычки, [], () и |; для недельной и
месячной — только +. Явные неподдерживаемые операторы для недельной и месячной детализации
отклоняются до платного API-вызова.
Каждый успешный ответ содержит:
api_calls — логические вызовы Wordstat API, включая бесплатное дерево регионов;http_attempts — все HTTP-попытки, в том числе повторы;billable_calls_estimate — оценка платных вызовов; финальный биллинг определяет Yandex;local_hourly_budget_remaining — остаток локального часового лимита или null;content_truncated — был ли сокращён текстовый MCP-контент из-за размера.Поля count и total_count возвращаются строками, чтобы не терять точность 64-битных целых.
Лимиты процесса защищают от неожиданного расхода, но не синхронизируются между несколькими процессами
и не заменяют квоты Yandex Cloud. Повторы учитываются в http_attempts, но один логический вызов занимает
одну единицу локального RPH-бюджета.
Ошибка инструмента содержит code, безопасное message, retryable, а при наличии — http_status,
retry_after_seconds и http_attempts.
Логи пишутся только в stderr. Для диагностики временно задайте YANDEX_WORDSTAT_LOG_LEVEL=debug;
credentials и Authorization-заголовок сервер не логирует.
Проверки без обращения к Wordstat API:
Live probe и live smoke могут расходовать квоту и требуют credentials. Их запускают только явно через
npm run contract:probe и npm run smoke:live:mcp.
Сервер не изменяет данные и обращается только к Wordstat API. Тем не менее, фразы и названия в ответах приходят из внешнего источника: агент должен считать их недоверенным содержимым, а не инструкциями. Уязвимости сообщайте по правилам из SECURITY.md, не через публичный issue.
MIT
Unofficial open-source MCP server that gives AI agents typed, read-only access to every standard Yandex Wordstat API method.
Status:
0.1.1, a compatibility fix for omitted protobuf default values in the Wordstat API.
stdout, diagnostics on stderr only.All tools are read-only and idempotent. Wordstat requests are external API calls and may be billed.
22.23.4+, 24.22.1+, or 26.12.1+ in the corresponding LTS line;yc.search-api.execute scope or an IAM token;search-api.webSearch.user role on the target Yandex Cloud folder.Set exactly one credential in the MCP client's environment:
YANDEX_WORDSTAT_FOLDER_ID is required with a Yandex-account or federated-account IAM token. Set it
to the folder on which the role is granted. It can normally be omitted for an API key or a
service-account IAM token because Search API uses the service account's folder.
Never commit credentials or place literal credentials in shared MCP configuration. Restart the client after changing its environment.
Choose one authentication method: API key or IAM token. Never pass both. In the Codex and Claude Code examples, the variables are already exported in the client process environment.
Add this to ~/.codex/config.toml:
For a Yandex-account or federated-account IAM token, use:
Run codex mcp list to verify the connection. Codex CLI and the IDE share this configuration.
Yandex-account or federated-account IAM token variant:
Add the server to the user-level ~/.hermes/config.yaml:
Yandex-account or federated-account IAM token variant:
Hermes passes only explicitly listed variables to a stdio server. Do not commit a user configuration containing credentials.
Run hermes mcp test yandex_wordstat, then restart Hermes or use /reload-mcp. Hermes registers the
tools with the mcp_yandex_wordstat_ prefix. Parallel tool calls stay disabled by default, helping to
keep API usage under control.
Devices are all, desktop, phone, and tablet; all must be used alone. A request can contain at
most 100 region IDs. wordstat_find_regions searches the cached tree. With resolve_names: true,
wordstat_regions may make one additional free regions-tree call on a cache miss. Every additional
wordstat_regions page repeats the billable regional-distribution API call, so use the maximum
limit when a complete result set is required.
Dates use YYYY-MM-DD. When both bounds are absent and auto_dates: true, the server requests the last
60 complete days, 52 complete weeks, or 12 complete months, depending on granularity. If exactly one
bound is absent, the server calculates it; an automatically added to_date always ends on the latest
complete period. Explicit bounds are never shifted. With auto_dates: false, only from_date is
required; to_date may be omitted.
A daily range cannot exceed 60 days. For weekly and monthly detail, Wordstat documents a range from 3 weeks or months up to 5 years, with the earliest available history starting in January 2018. Weeks run Monday through Sunday, and months from their first through their last calendar day.
Live probes revealed observed but undocumented behavior: recent calendar points may not be published yet, the API returns only the available part of an overlapping range, and a range entirely after the latest published point may receive HTTP 400. Because HTTP 400 can have other causes, verify every request parameter; for a recent range, try earlier dates. The server does not shift explicit bounds or make an additional billable request automatically.
Daily dynamics supports -, !, +, quotes, [], (), and |; weekly and monthly dynamics support
only +. Explicitly unsupported operators for weekly and monthly detail are rejected before a
billable API call.
Every successful result includes:
api_calls: logical Wordstat calls, including the free regions-tree method;http_attempts: all HTTP attempts, including retries;billable_calls_estimate: an estimate; Yandex billing is authoritative;local_hourly_budget_remaining: remaining process-local hourly budget, or null;content_truncated: whether textual MCP content was shortened because of its size.Counts are strings to preserve 64-bit integer precision.
Process-local limits protect against accidental spend but are not coordinated across processes and do
not replace Yandex Cloud quotas. Retries increase http_attempts, while one logical call consumes one
unit of the local hourly budget.
Tool errors return code, a safe message, retryable, and, when available, http_status,
retry_after_seconds, and http_attempts.
Logs go to stderr only. Temporarily set YANDEX_WORDSTAT_LOG_LEVEL=debug for diagnostics. Credentials
and the Authorization header are never logged.
Offline checks:
npm run contract:probe and npm run smoke:live:mcp contact the real API, may consume quota, and must
only be run explicitly with credentials configured.
The server does not modify data and only calls the Wordstat API. Query phrases and region labels still come from an external source: agents must treat them as untrusted content, not instructions. Report vulnerabilities privately as described in SECURITY.md.
MIT
Source: README.md at commit a489171
Wordstat top requests
Popular and associated Wordstat queries for the last 30 days.
phraserequireddevicesregion_idsnum_phrasesWordstat dynamics
Daily, weekly or monthly Wordstat demand dynamics.
periodphraserequireddevicesto_datefrom_dateauto_datesregion_idsWordstat regions
Wordstat demand distribution by region for the last 30 days.
limitoffsetphraserequireddevicesregion_typeresolve_namesWordstat regions tree
The hierarchy of regions supported by Wordstat.
max_depthroot_region_idFind Wordstat regions
Find Wordstat region IDs locally by exact or substring name match.
limitqueryrequiredchildren_depthinclude_childrenparent_region_id90% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
export YANDEX_WORDSTAT_API_KEY='your-api-key'# или: export YANDEX_WORDSTAT_IAM_TOKEN='your-iam-token'export YANDEX_WORDSTAT_FOLDER_ID='b1g...'[mcp_servers.yandex-wordstat]command = "npx"args = ["-y", "wordstat-mcp-server@latest"]env_vars = ["YANDEX_WORDSTAT_API_KEY"][mcp_servers.yandex-wordstat]command = "npx"args = ["-y", "wordstat-mcp-server@latest"]env_vars = ["YANDEX_WORDSTAT_IAM_TOKEN", "YANDEX_WORDSTAT_FOLDER_ID"]claude mcp add-json --scope user yandex-wordstat \ '{"command":"npx","args":["-y","wordstat-mcp-server@latest"],"env":{"YANDEX_WORDSTAT_API_KEY":"${YANDEX_WORDSTAT_API_KEY}"}}'claude mcp listclaude mcp add-json --scope user yandex-wordstat \ '{"command":"npx","args":["-y","wordstat-mcp-server@latest"],"env":{"YANDEX_WORDSTAT_IAM_TOKEN":"${YANDEX_WORDSTAT_IAM_TOKEN}","YANDEX_WORDSTAT_FOLDER_ID":"${YANDEX_WORDSTAT_FOLDER_ID}"}}'claude mcp listmcp_servers: yandex_wordstat: command: "npx" args: ["-y", "wordstat-mcp-server@latest"] env: YANDEX_WORDSTAT_API_KEY: "your-api-key"mcp_servers: yandex_wordstat: command: "npx" args: ["-y", "wordstat-mcp-server@latest"] env: YANDEX_WORDSTAT_IAM_TOKEN: "your-iam-token" YANDEX_WORDSTAT_FOLDER_ID: "your-folder-id"Подбери запросы по теме «онлайн-курсы английского». Покажи 100 популярных запросови похожие запросы за последний месяц. Сгруппируй их по смыслу: обучение, цена,формат, уровень и бренды. В каждой группе выдели 5 самых популярных фраз.Популярные и похожие запросы покажи отдельно.Сравни спрос на «доставка цветов» в Москве и Санкт-Петербурге за последние 12 полныхмесяцев. Найди нужные регионы сам. Покажи динамику по месяцам для каждого города,отметь месяцы с самым высоким и низким спросом и объясни различия в сезонности.Если каких-то данных нет, не додумывай их.Покажи, в каких регионах запросом «горнолыжный курорт» интересуются сильнее всего.Составь два списка: топ-15 регионов по индексу интереса и топ-15 по числу запросов.Для каждого региона укажи число запросов, долю и индекс интереса. Коротко объясни,почему списки отличаются. Загружай дополнительные страницы только при необходимости.Проанализируй спрос на «кондиционер» по России за последние 24 полных календарных месяца,не включая текущий месяц. Используй регион «Россия» с ID 225 и обязательно задай началои конец периода. Сравни каждый месяц с тем же месяцем годом ранее. Покажи изменениев запросах и процентах, а также начало и пик сезона. Если данных не хватает, перечислипропущенные месяцы и сравни только полные пары. Если год назад было ноль запросов,процентное изменение не рассчитывай.Сравни спрос на «заказать продукты» с компьютеров, телефонов и планшетов за последние60 полных дней. Для каждого типа устройства покажи общее число запросов, среднее за деньи его долю среди трёх типов устройств. Сравнивай только даты, которые есть во всех выборках.Не называй число запросов количеством уникальных пользователей.Покажи, как кавычки влияют на статистику запроса «ремонт квартир». Сравни за последние60 полных дней обычный запрос `ремонт квартир` и запрос в кавычках `"ремонт квартир"`.Покажи общую частотность каждого варианта, разницу между ними и простыми словамиобъясни, что ограничивают кавычки в Wordstat.Нужно изучить запрос «ипотека»: популярные и похожие запросы, динамику по месяцами интерес по регионам. Сначала скажи, сколько платных обращений к Wordstat потребуется,и дождись моего подтверждения. После исследования покажи фактическое число обращенийи отдельно отметь повторные попытки, если они были.npm installnpm run buildYANDEX_WORDSTAT_API_KEY='...' node dist/cli.jsnpm run checknpm testnpm run smoke:packageexport YANDEX_WORDSTAT_API_KEY='your-api-key'# or: export YANDEX_WORDSTAT_IAM_TOKEN='your-iam-token'[mcp_servers.yandex-wordstat]command = "npx"args = ["-y", "wordstat-mcp-server@latest"]env_vars = ["YANDEX_WORDSTAT_API_KEY"][mcp_servers.yandex-wordstat]command = "npx"args = ["-y", "wordstat-mcp-server@latest"]env_vars = ["YANDEX_WORDSTAT_IAM_TOKEN", "YANDEX_WORDSTAT_FOLDER_ID"]claude mcp add-json --scope user yandex-wordstat \ '{"command":"npx","args":["-y","wordstat-mcp-server@latest"],"env":{"YANDEX_WORDSTAT_API_KEY":"${YANDEX_WORDSTAT_API_KEY}"}}'claude mcp listclaude mcp add-json --scope user yandex-wordstat \ '{"command":"npx","args":["-y","wordstat-mcp-server@latest"],"env":{"YANDEX_WORDSTAT_IAM_TOKEN":"${YANDEX_WORDSTAT_IAM_TOKEN}","YANDEX_WORDSTAT_FOLDER_ID":"${YANDEX_WORDSTAT_FOLDER_ID}"}}'claude mcp listmcp_servers: yandex_wordstat: command: "npx" args: ["-y", "wordstat-mcp-server@latest"] env: YANDEX_WORDSTAT_API_KEY: "your-api-key"mcp_servers: yandex_wordstat: command: "npx" args: ["-y", "wordstat-mcp-server@latest"] env: YANDEX_WORDSTAT_IAM_TOKEN: "your-iam-token" YANDEX_WORDSTAT_FOLDER_ID: "your-folder-id"Build a keyword set for "online English courses". Show 100 popular requests and relatedrequests for the last month. Group them by intent: learning, price, format, level, and brand.Highlight the five most popular phrases in every group. Keep popular and related requests separate.Compare demand for "flower delivery" in Moscow and Saint Petersburg over the last 12 completemonths. Find the correct regions yourself. Show monthly dynamics for each city, highlight thehighest and lowest months, and explain differences in seasonality. Do not invent missing data.Show where interest in "ski resort" is strongest. Create two lists: the top 15 regions byaffinity index and the top 15 by request count. Include count, share, and affinity index foreach region. Briefly explain why the lists differ. Load additional pages only when necessary.Analyze demand for "air conditioner" in Russia over the last 24 complete calendar months,excluding the current month. Use Russia region ID 225 and explicitly set the start and end dates.Compare every month with the same month one year earlier. Show the change in requests and percent,and identify the start and peak of the season. If data is missing, list the missing months andcompare only complete pairs. If the earlier value is zero, do not calculate a percentage change.Compare demand for "grocery delivery" on desktop, phone, and tablet over the last 60 completedays. For each device, show the total request count, daily average, and its share among the threedevice types. Compare only dates present in every result. Do not call request counts unique users.Show how quotation marks affect statistics for "apartment renovation". Over the last 60 completedays, compare the plain query `apartment renovation` with `"apartment renovation"`. Show the totalcount for each, the difference between them, and explain in simple terms what quotes restrict.Research "mortgage": popular and related requests, monthly dynamics, and regional interest.First tell me how many billable Wordstat calls this will require and wait for confirmation.After the research, show the actual number of calls and note any retry attempts separately.npm installnpm run buildYANDEX_WORDSTAT_API_KEY='...' node dist/cli.jsnpm run checknpm testnpm run smoke:package