mcp-trendpulse
TrendPulse — это сервер на Python, реализующий Model Context Protocol (MCP) и предназначенный для изучения актуальных новостей и поисковых трендов. Он объединяет поиск в Google News и извлечение содержимого статей с анализом Google Trends. С его помощью MCP-клиенты могут отслеживать популярные темы, сравнивать динамику ключевых слов, изучать связанный спрос и дополнять исследовательские процессы контекстом актуальных новостей.
Сейчас проект распространяется как общественный сервер MCP для самостоятельного размещения. В репозитории также есть реализация отдельного размещаемого сервиса TrendPulse by DigestSEO для удалённых MCP-клиентов, например ChatGPT и Codex. В размещаемой версии используется более компактный набор инструментов, ориентированный на конкретные задачи, а общественный сервер предоставляет разработчикам полный низкоуровневый инструментарий для исследований.
Статус проекта: локальный общественный сервер уже можно использовать. Размещаемый DigestSEO MCP и общедоступный плагин OpenAI пока не выпущены и не являются доступными конечными точками.
Контекст разработки: TrendPulse входит в экосистему MCP DigestSEO. Он дополняет mcp-gsc для работы с данными Google Search Console, mcp-geo для анализа видимости в AI и mcp-web-validator для технической проверки сайтов. Более широкая архитектура описана в инженерном кейсе DigestSEO MCP Suite.
Сводка спроса TrendPulse
Нужно быстро проверить факты перед тем, как выбрать тему, ключевое слово, рынок, позиционирование продукта или направление для контента? Tomi предлагает подготовленную специалистом сводку спроса TrendPulse за 49 EUR.
Для одного решения сводка охватывает до пяти ключевых слов или фраз и два географических рынка. В ней используются открытые исследовательские возможности TrendPulse и актуальные общедоступные источники: направление изменения поискового интереса, относительная динамика, связанный спрос, полезный новостной контекст и три конкретных вывода. Планируемый срок подготовки — до 24 часов после подтверждения оплаты и получения исходных данных.
Посмотрите точный объём работ и формат запроса, ознакомьтесь с общедоступным примером сводки или отправьте письмо на info@tomiseregi.si с темой TrendPulse Demand Brief [TP-RS1].
Платная сводка необязательна. Community MCP остаётся бесплатным и не меняется, а маркер TP-RS1 используется только для атрибуции входящего запроса; скрытая телеметрия в MCP не добавляется.
Возможности TrendPulse
Исследование новостей
-
Поиск в Google News по ключевым словам, местоположению, теме или домену издателя.
-
Получение наиболее популярных новостных материалов.
-
Обработка ссылок Google News и извлечение содержимого статей.
-
Переход от обычного получения данных по HTTP к Playwright/Chromium, если страницы трудно обработать.
-
При необходимости — краткий пересказ текста статьи с помощью функции семплирования MCP-клиента; в качестве запасного варианта используется локальная обработка естественного языка (NLP).
Исследование трендов
-
Получение актуальных трендовых запросов для выбранного географического рынка.
-
Получение данных Google Trends об изменении интереса к одному или нескольким ключевым словам с течением времени.
-
Расчёт роста интереса к ключевым словам за заданные периоды, например 3M или 1Y.
-
Ранжирование текущих трендов по объёму или темпам роста.
-
Анализ интереса по странам, регионам, городам или DMA, если это поддерживается.
-
Изучение связанных запросов, связанных тем, предложений и идентификаторов категорий.
-
Сравнение трендов в Google Search, YouTube Search, News Search, Image Search и Google Shopping, если такие варианты поддерживает используемый поставщик данных.
Архитектура общественной и размещаемой версий
TrendPulse разрабатывается с двумя отдельными вариантами использования:
| Вариант | Назначение | Статус |
|---|---|---|
| Community MCP | Полнофункциональный сервер MCP на Python для локальной работы, разработки, самостоятельного размещения и интеграции с MCP-совместимыми клиентами. | Доступен в этом репозитории |
| TrendPulse by DigestSEO | Управляемый удалённый MCP для ChatGPT/Codex и будущий общедоступный плагин OpenAI с более компактным набором инструментов, ориентированным на задачи. | В разработке |
Общественный сервер полезен и сам по себе. Размещаемая версия будет использовать те же основные подходы к исследованию трендов, дополняя их инфраструктурой развёртывания, надёжностью, аутентификацией, наблюдаемостью и интеграцией с продуктами, необходимыми для управляемого сервиса.
Реализованный набор инструментов размещаемой версии намеренно сделан более высокоуровневым, чем API общественного сервера. Он ориентирован на такие задачи, как:
-
discover_trends -
analyze_keyword_trend -
compare_keyword_trends -
discover_related_demand -
get_trend_context -
find_seo_opportunities
Эти названия относятся к интерфейсу ChatGPT Apps/MCP размещаемой версии и отличаются от названий инструментов текущего Community MCP.
Установка
Запуск из PyPI с помощью uvx (рекомендуется)
TrendPulse опубликован в PyPI, поэтому самый быстрый способ запуска:
uvx mcp-trendpulse
Чтобы запустить текущую версию репозитория, а не опубликованный пакет:
uvx --from git+https://github.com/AKzar1el/mcp-trendpulse.git mcp-trendpulse
Установка через pip из клонированного репозитория
git clone https://github.com/AKzar1el/mcp-trendpulse.git
cd mcp-trendpulse
python -m pip install .
python -m mcp_trendpulse
Использование браузера в качестве запасного варианта
Инструменты для работы с новостями и статьями могут переключаться на Playwright, если обычным способом не удаётся извлечь пригодное для использования содержимое статьи. Установка пакета Python playwright не устанавливает Chromium автоматически.
Для локального использования:
playwright install chromium
Для сред Linux, которым также нужны системные зависимости браузера:
playwright install --with-deps chromium
Для операций только с трендами Chromium не требуется.
Настройка клиентов
Claude Desktop и Claude Code
Конфигурация плагина Claude Code находится в .claude-plugin/plugin.json, а описание MCP — в .mcp.json. Community MCP работает локально через stdin и запускается командой uvx mcp-trendpulse.
Claude Desktop
Использование опубликованного в PyPI пакета через uvx:
{
"mcpServers": {
"mcp-trendpulse": {
"command": "uvx",
"args": ["mcp-trendpulse"]
}
}
}
VS Code
Установить TrendPulse в VS Code
Требуется uv/uvx. Установка запускает опубликованный в PyPI пакет Community MCP через локальный stdio.
Чтобы настроить сервер для рабочей области, добавьте этот фрагмент в .vscode/mcp.json. Для глобальной настройки в mcp.json профиля пользователя VS Code используется такая же структура с верхнеуровневым ключом servers.
{
"servers": {
"mcp-trendpulse": {
"command": "uvx",
"args": ["mcp-trendpulse"]
}
}
}
ChatGPT для настольных компьютеров, Codex CLI и расширение для IDE
Локальные клиенты OpenAI ChatGPT и Codex поддерживают локальные MCP-серверы через stdio и используют общую конфигурацию MCP на хосте Codex. Добавьте опубликованный пакет TrendPulse одной командой:
codex mcp add mcp-trendpulse -- uvx mcp-trendpulse
После этого один и тот же локальный сервер будет доступен в приложении ChatGPT для настольных компьютеров, Codex CLI и расширении Codex для IDE. В ChatGPT для настольных компьютеров сервер также можно добавить через Settings -> MCP Servers: выберите сервер типа STDIO, укажите команду uvx mcp-trendpulse, а затем перезапустите приложение. При этом запускается опубликованный в PyPI пакет Community MCP, а не ещё не выпущенная конечная точка размещаемого TrendPulse. ChatGPT в браузере работает отдельно и не использует локальную конфигурацию Codex MCP.
Cursor и переносимые Agent Plugins
В корне репозитория находится манифест Agent Plugins 1.0. Совместимые клиенты, такие как Cursor и GitHub Copilot, могут загружать тот же переносимый пакет plugin.json + mcp.json.
Cursor также поддерживает глобальную конфигурацию MCP и настройки для отдельных проектов. Добавьте сервер в соответствующий файл конфигурации mcp.json:
{
"mcpServers": {
"mcp-trendpulse": {
"command": "uvx",
"args": ["mcp-trendpulse"]
}
}
}
Devin CLI и Devin Desktop
Плагины Devin CLI могут загружать пакеты плагинов Claude и Agent Plugins 1.0 напрямую с GitHub. TrendPulse уже включает оба совместимых варианта структуры (.claude-plugin/plugin.json + .mcp.json и корневые plugin.json + mcp.json). Установите плагин командой:
devin plugins install AKzar1el/mcp-trendpulse
Для управления плагинами в Devin требуется войти в CLI. Установленный плагин TrendPulse запускает опубликованный Community MCP локально через stdio командой uvx mcp-trendpulse; он не использует ещё не выпущенную конечную точку размещаемого TrendPulse. После установки плагин также станет доступен в Devin Desktop.
Kiro
Требуется uv/uvx. При установке запускается опубликованный пакет Community MCP из PyPI; неиспущенная hosted-версия не используется.
Конфиденциальность: Уведомление о конфиденциальности TrendPulse Community MCP · Поддержка: info@tomiseregi.si
LM Studio
Добавить TrendPulse в LM Studio
Требуется uv/uvx. LM Studio локально запускает опубликованный пакет Community MCP через stdio; для этого не требуется hosted-сервис TrendPulse.
ChatGPT в браузере и другие облачные MCP-клиенты
В репозитории появилась отдельная stateless ASGI-точка входа Streamable HTTP: mcp_trendpulse.asgi:app. Она не связана с точкой входа Community через stdio, которая остаётся без изменений.
Для контролируемого локального тестирования или тестирования в приватной среде можно запустить ASGI-приложение с помощью Uvicorn либо использовать предоставленный контейнер. В deploy/README.md описаны усиленная защита контейнера, списки разрешённых Host/Origin, требования к песочнице Chromium, конечные точки проверки работоспособности и готовности, а также настройки обратного прокси.
Размещённая на DigestSEO конечная точка и общедоступное приложение ChatGPT ещё не выпущены. Hosted-развёртывания теперь поддерживают аутентификацию Clerk OAuth с отказом при невозможности подтвердить доступ. Не открывайте удалённый транспорт для публичного доступа, пока для конкретного развёртывания не настроены issuer/JWKS/audience Clerk, общедоступный базовый URL и списки разрешённых Host/Origin.
Настройка
TrendPulse загружает переменные среды из окружения процесса и из локального файла .env, если он существует.
Полезные переменные:
HTTP_PROXY=http://your-proxy-address:port
HTTPS_PROXY=http://your-proxy-address:port
GOOGLE_NEWS_LANGUAGE=en
GOOGLE_NEWS_COUNTRY=US
GOOGLE_TRENDS_DELAY=2.0
GOOGLE_NEWS_LANGUAGE и GOOGLE_NEWS_COUNTRY задают язык и регион Google News для всех инструментов поиска новостей; значения по умолчанию — en и US. GOOGLE_TRENDS_DELAY задаёт задержку между запросами для текущего провайдера Trends. Переменные прокси могут пригодиться, если upstream-сервис ограничивает частоту запросов или блокирует определённую сеть.
Удалённые развёртывания также поддерживают TRENDPULSE_HTTP_PATH, TRENDPULSE_HTTP_ALLOWED_HOSTS, TRENDPULSE_HTTP_ALLOWED_ORIGINS и TRENDPULSE_BROWSER_SANDBOX. В контейнере песочница Chromium включена явно; при локальном запуске Community сохраняется значение по умолчанию, совместимое с Playwright, если вы не включите её самостоятельно.
Не добавляйте в репозиторий секреты, учётные данные для приватных прокси и файлы .env, предназначенные для конкретной машины.
Инструменты MCP
Сервер Community MCP предоставляет 16 инструментов.
Инструменты для работы с новостями
| Инструмент | Назначение |
|---|---|
get_news_by_keyword | Находит свежие новости по ключевому слову. |
get_news_by_location | Находит свежие новости, связанные с указанным местом. |
get_news_by_topic | Находит свежие новости по поддерживаемой теме Google News. |
get_top_news | Получает самые популярные новости Google News. |
get_news_by_site | Находит свежие новости на сайте конкретного издателя. |
get_article_content | Загружает, проверяет и извлекает содержимое одной статьи по URL, а также при необходимости составляет краткое изложение. |
Инструменты для работы с трендами
| Инструмент | Назначение |
|---|---|
get_trending_terms | Получает актуальные популярные запросы для указанного региона. |
get_trends | Получает данные об интересе к одному или нескольким ключевым словам за определённый период. |
get_growth | Рассчитывает рост поискового интереса за заданные периоды. |
get_ranked_trends | Составляет рейтинг актуальных трендов по темпам роста или объёму. |
get_top_trends | Получает список наиболее популярных трендов без указания ключевого слова. |
get_interest_by_region | Сравнивает интерес к ключевому слову в разных регионах. |
get_related_queries | Получает популярные и быстро растущие связанные поисковые запросы. |
get_related_topics | Получает популярные и быстро растущие связанные темы Google Trends. |
get_suggestions | Подбирает варианты автодополнения и тем для запроса. |
get_categories | Ищет или постранично выводит идентификаторы и названия категорий Google Trends, чтобы затем использовать параметр cat. |
Пример: явное указание периода тренда
get_trends принимает явный параметр timeframe. Рекомендуется указывать его, если нужны воспроизводимые сравнения.
{
"keyword": ["technical SEO audit", "AI SEO audit"],
"geo": "US",
"source": "google search",
"timeframe": "today 12-m",
"cat": 0
}
Среди поддерживаемых провайдером периодов — стандартные интервалы, например today 12-m и today 5-y, относительные периоды, например today 90-d, период all и точные диапазоны дат, например 2021-01-01 2026-01-01.
Значения Google Trends — это нормализованные показатели интереса. Не следует интерпретировать ряд значений от 0 до 100 как абсолютный объём поиска.
CLI
Отдельный Click CLI предоставляет меньше команд для работы с новостями, чем сервер MCP:
uv run mcp-trendpulse-cli --help
Доступные команды CLI:
brief-pack
keyword
location
top
topic
trending
brief-pack формирует детерминированную таблицу данных о трендах и темпах роста для подготовки Demand Brief. Итоговую интерпретацию и рекомендации намеренно оставляет для включения в подготовленный специалистом brief.
CLI и MCP описаны отдельно, поскольку наборы доступных в них команд различаются.
Разработка
Установите проект вместе с зависимостями для разработки в предпочитаемом окружении Python, затем запустите набор модульных тестов:
python -m pytest
По умолчанию конфигурация pytest исключает интеграционные тесты с обращением к реальным сервисам.
Чтобы явно запустить тесты провайдеров с реальными запросами, выполните:
python -m pytest tests/integration -m integration
Для интеграционных тестов с отметкой browser необходимо установить Playwright Chromium.
Проверка с помощью Ruff:
ruff check .
MCP Inspector
Чтобы запустить сервер, опубликованный из GitHub, через MCP Inspector, выполните:
npx @modelcontextprotocol/inspector uvx --from git+https://github.com/AKzar1el/mcp-trendpulse.git mcp-trendpulse
Для локальной копии репозитория:
npx @modelcontextprotocol/inspector uv run mcp-trendpulse
Сборка и публикация пакета
При публикации релиза GitHub Actions собирает дистрибутивы Python и публикует их в PyPI с помощью Trusted Publishing. Текущую стабильную версию пакета можно запустить командой uvx mcp-trendpulse. Используйте вариант GitHub uvx --from ..., только если вам намеренно нужна версия из текущего состояния репозитория.
Примечания по безопасности
Получение содержимого статей выполняет исходящие сетевые запросы, а получаемые данные считаются недоверенными. Реализация проверяет HTTP(S)-адреса, отклоняет частные и недоступные для маршрутизации назначения, проверяет адреса переадресации, ограничивает размер ответа и проверяет маршруты браузера при использовании Playwright.
При удалённом развёртывании TrendPulse сохраните эти меры защиты и дополните их ограничением частоты запросов на уровне развёртывания, тайм-аутами запросов, наблюдаемостью и ограничениями ресурсов. Не полагайтесь только на настройки приложения по умолчанию.
Инструкции по ответственному раскрытию уязвимостей приведены в SECURITY.md.
План развития
К текущим приоритетам подготовки к промышленной эксплуатации относятся:
-
Поддерживать согласованность документации, метаданных пакета и сгенерированных манифестов MCP с фактически доступными инструментами.
-
Согласовывать CI, проверку пакета и охват зависимостей и сред выполнения с тем, что пользователи действительно устанавливают.
-
Сохранять границы между провайдерами, чтобы менять upstream-источники без переработки уровня MCP.
-
Усиливать защиту и обеспечивать работу существующего stateless-транспорта Streamable HTTP, сохраняя локальную работу через stdio.
-
Дорабатывать существующий, более компактный набор hosted-инструментов для ChatGPT/Codex с учётом реальных данных о развёртывании и потребностях заказчиков.
-
Завершить настройку авторизации провайдеров и интегрировать hosted-сервис с приложением DigestSEO и операционным стеком.
-
Упаковать hosted MCP в виде плагина OpenAI и протестировать его только после подготовки управляемого сервиса к промышленной эксплуатации.
Лицензия
MIT. См. LICENSE.