Skip to main content
Glama
TrendPulse - Google News & Trends

TrendPulse - Google News & Trends

mcp-trendpulse

MCP Python License

TrendPulse — это Python-сервер Model Context Protocol (MCP) для исследования актуальных новостей и трендов поисковых интересов. Он объединяет поиск по Google News и извлечение статей с анализом Google Trends, чтобы MCP-клиенты могли отслеживать текущие тренды, сравнивать динамику ключевых слов, изучать связанный спрос и добавлять контекст актуальных новостей в исследовательские рабочие процессы.

Проект сейчас поставляется как community/self-hosted MCP-сервер, а также содержит реализацию отдельного интерфейса hosted TrendPulse by DigestSEO для удалённых MCP-клиентов, таких как ChatGPT и Codex. Хостируемый уровень использует меньший, ориентированный на задачи набор инструментов, в то время как community-сервер сохраняет полный низкоуровневый исследовательский инструментарий для разработчиков.

Статус проекта: локальный/community-сервер уже можно использовать. Хостируемый DigestSEO MCP и публичный плагин OpenAI ещё не выпущены, и их не следует рассматривать как доступные конечные точки.

Инженерный контекст: TrendPulse является частью экосистемы MCP DigestSEO. Он дополняет mcp-gsc для данных Google Search Console, mcp-geo для видимости в ИИ и mcp-web-validator для технической валидации веб-сайтов. Более широкая архитектура описана в инженерном кейсе DigestSEO MCP Suite.

Что умеет TrendPulse

Новостные исследования

  • Искать в Google News по ключевому слову, местоположению, теме или домену издателя.

  • Получать главные новостные материалы.

  • Разрешать ссылки Google News и извлекать содержимое статей.

  • Использовать Playwright/Chromium как запасной вариант, когда обычный HTTP-запрос не справляется со сложными страницами.

  • По желанию суммаризировать текст статьи с помощью сэмплирования MCP-клиента, с локальным NLP в качестве запасного варианта.

Исследование трендов

  • Получать текущие трендовые запросы для географического рынка.

  • Загружать данные Google Trends об интересе во времени для одного или нескольких ключевых слов.

  • Рассчитывать рост ключевых слов за произвольные периоды, такие как 3M или 1Y.

  • Ранжировать текущие тренды по объёму или росту.

  • Анализировать интерес по странам, регионам, городам или DMA там, где это поддерживается.

  • Исследовать связанные запросы, связанные темы, подсказки и ID категорий.

  • Сравнивать трендовые свойства Google Search, YouTube Search, News Search, Image Search и Google Shopping там, где это поддерживается провайдером.

Related MCP server: NewsIQ MCP

Архитектура Community и hosted-версии

TrendPulse разрабатывается с двумя намеренно выделенными интерфейсами:

Интерфейс

Назначение

Статус

Community MCP

Полноценный Python MCP-сервер для локального использования, разработки, самостоятельного хостинга и интеграций с MCP-совместимыми клиентами.

Доступен в этом репозитории

TrendPulse by DigestSEO

Управляемый удалённый MCP для ChatGPT/Codex и будущий публичный плагин OpenAI с меньшим, ориентированным на задачи набором инструментов.

В разработке

Community-сервер остаётся полезным и сам по себе. Хостируемая редакция будет использовать те же базовые концепции исследования трендов, добавляя при этом развёртывание, надёжность, аутентификацию, наблюдаемость и продуктовую интеграцию, необходимые для управляемого сервиса.

Реализованный хостируемый интерфейс инструментов намеренно сделан более высокоуровневым, чем community API, и сосредоточен на таких задачах, как:

  • discover_trends

  • analyze_keyword_trend

  • compare_keyword_trends

  • discover_related_demand

  • get_trend_context

  • find_seo_opportunities

Эти названия описывают интерфейс хостируемых ChatGPT Apps/MCP; они остаются отдельными от текущих названий инструментов Community MCP.

Установка

Запуск напрямую из GitHub через uvx (рекомендуется)

Пакет ещё не опубликован в PyPI, поэтому самый прямой способ установки:

uvx --from git+https://github.com/AKzar1el/mcp-trendpulse.git mcp-trendpulse

После появления релиза в PyPI более короткая форма будет такой:

uvx 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

Использование uvx напрямую из GitHub:

{
  "mcpServers": {
    "mcp-trendpulse": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/AKzar1el/mcp-trendpulse.git",
        "mcp-trendpulse"
      ]
    }
  }
}

VS Code

{
  "mcp": {
    "servers": {
      "mcp-trendpulse": {
        "command": "uvx",
        "args": [
          "--from",
          "git+https://github.com/AKzar1el/mcp-trendpulse.git",
          "mcp-trendpulse"
        ]
      }
    }
  }
}

Cursor

Cursor поддерживает глобальную и проектную конфигурацию MCP. Добавьте сервер в соответствующий конфигурационный файл mcp.json:

{
  "mcpServers": {
    "mcp-trendpulse": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/AKzar1el/mcp-trendpulse.git",
        "mcp-trendpulse"
      ]
    }
  }
}

ChatGPT и другие облачные MCP-клиенты

В репозиторий теперь включена отдельная stateless Streamable HTTP ASGI точка входа по адресу mcp_trendpulse.asgi:app. Она отделена от точки входа Community stdio, которая остаётся без изменений.

Для контролируемого локального/частного тестирования вы можете запустить ASGI-приложение с помощью Uvicorn или использовать предоставленный контейнер. См. deploy/README.md о защищённом контейнере, списках разрешённых Host/Origin, требованиях к песочнице Chromium, конечных точках health/readiness и замечаниях по обратному прокси.

Конечная точка DigestSEO-hosted и публичное приложение ChatGPT всё ещё не выпущены. Хостируемые развёртывания теперь поддерживают аутентификацию Clerk OAuth с принципом fail-closed; не открывайте удалённый транспорт публично, если для этого развёртывания не настроены параметры Clerk issuer/JWKS/audience, публичный базовый URL и списки разрешённых Host/Origin.

Конфигурация

TrendPulse загрuzhaет переменные окружения из процесса и из локального файла .env, если он присутствует.

Полезные переменные включают:

HTTP_PROXY=http://your-proxy-address:port
HTTPS_PROXY=http://your-proxy-address:port
GOOGLE_TRENDS_DELAY=2.0

GOOGLE_TRENDS_DELAY управляет задержкой запросов, используемой текущим провайдером Trends. Переменные прокси могут быть полезны, когда вышестоящий сервис ограничивает частоту запросов или блокирует определённую сеть.

Удалённые развёртывания также поддерживают 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

Получить ID и названия категорий Google Trends.

Пример: явно заданный временной интервал

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:

keyword
location
top
topic
trending

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

Упаковка

В репозитории уже есть workflow GitHub Actions для сборки и публикации Python-дистрибутивов через PyPI Trusted Publishing при создании релиза GitHub. До появления первого релиза пакета используйте команду GitHub uvx --from ..., показанную выше.

Замечания по безопасности

Получение статей — это исходящая сетевая функция, и она рассматривается как недоверенный ввод. Реализация проверяет HTTP(S)-адреса, отклоняет частные и нероутизируемые адреса, проверяет целевые адреса редиректов, ограничивает размер ответов и применяет валидацию браузерных маршрутов при использовании Playwright.

Если вы развёртываете TrendPulse удалённо, сохраните эти средства контроля и добавьте ограничение частоты запросов, таймауты, наблюдаемость и лимиты ресурсов на уровне развёртывания, а не полагайтесь только на настройки приложения по умолчанию.

Дорожная карта

Текущая работа по доведению до production-готовности сосредоточена на:

  1. Поддержании согласованности документации, метаданных упаковки и генерируемых MCP-манифестов с актуальным набором инструментов.

  2. Добавлении непрерывной интеграции для модульных тестов и статических проверок.

  3. Разделении доступа к провайдерам и доменной логики TrendPulse, чтобы провайдеров можно было менять без переписывания MCP-слоя.

  4. Добавлении production-удалённого HTTP-транспорта с сохранением локального режима stdio.

  5. Проектировании меньшего высокоуровневого хостируемого набора инструментов для ChatGPT/Codex.

  6. Интеграции хостируемого сервиса с приложением DigestSEO и эксплуатационным стеком.

  7. Упаковке и тестировании хостируемого MCP в качестве плагина OpenAI только после того, как сервис будет готов к production.

Лицензия

MIT. См. LICENSE.

Available Tools

16 tools
get_article_contentA
Read-only

Download and parse one specific news article when you already have an article URL. Use it to retrieve article text or metadata or summarize that URL; do not use it for discovery - use the news search tools instead.

Inputs: url (required), full_data, summarize. Returns: result

get_categoriesA
Read-only

Return a bounded page of Google Trends category IDs and names for use in the cat parameter of trend tools. Use query to find categories by name and offset/limit to page through broader results; do not guess category IDs.

Inputs: limit, query, offset. Returns: result

get_growthA
Read-only

Estimate momentum for one or more known keywords across requested growth windows. Use this when percentage growth is the goal; use get_trends when the user needs the underlying historical time series.

Inputs: keyword (required), geo, source, percent_growth. Returns: result

get_interest_by_regionA
Read-only

Return geographic Google Trends interest for one or more known keywords at country, region, city, or DMA resolution. Use this to compare where demand is strongest; use get_trends for interest over time instead.

Inputs: keywords (required), cat, geo, gprop, +3 more. Returns: result

get_news_by_keywordA
Read-only

Find recent Google News articles for a free-form keyword or phrase. Use this for ad-hoc subject searches; use get_news_by_topic for a predefined topic category or get_news_by_site for one publisher.

Inputs: keyword (required), period, full_data, summarize, +2 more. Returns: result

get_news_by_locationA
Read-only

Find recent Google News articles about a place-focused location such as a city, state, or country. Use this when geography is the primary filter; use get_news_by_keyword for general subject searches.

Inputs: location (required), period, full_data, summarize, +2 more. Returns: result

get_news_by_siteA
Read-only

Find recent Google News articles from one publisher domain. Use this when the user wants source-specific coverage; use get_news_by_keyword for cross-publisher subject search.

Inputs: site (required), period, full_data, summarize, +2 more. Returns: result

get_news_by_topicA
Read-only

Find recent Google News articles from a predefined Google News topic category. Use this for topic category browsing such as BUSINESS, TECHNOLOGY, or SPORTS; use get_news_by_keyword for a free-form query.

Inputs: topic (required), period, full_data, summarize, +2 more. Returns: result

get_suggestionsA
Read-only

Return Google Trends autocomplete suggestions for a seed keyword. Use this for lightweight autocomplete or entity candidates; use get_related_queries when you need top or rising demand signals.

Inputs: keyword (required), language. Returns: result

get_top_newsA
Read-only

Return general headline and top-news stories from Google News without a keyword or topic seed. Use this for a broad news snapshot; use the keyword, location, topic, or site tools when the user gives a filter.

Inputs: period, full_data, summarize, max_results, +1 more. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4.1/5.0

    Scored across 16 tools

    Disambiguation3/5

    Most tools have clear axes of distinction (news vs. trends, and filter-by-keyword/location/topic/site), and the descriptions cross-reference each other explicitly. However, three tools — get_trending_terms, get_top_trends, and get_ranked_trends — all return a current trending feed with only subtle differences, which is a likely source of misselection. get_growth vs. get_trends is also a thin boundary (derived metric vs. underlying series).

    Naming Consistency4/5

    Every tool follows a consistent get_<noun_phrase> snake_case pattern, which is easy to scan and predict. The minor inconsistency is noun choice for near-identical concepts (terms vs. trends vs. top_trends vs. ranked_trends), which slightly obscures semantics rather than breaking the pattern.

    Tool Count4/5

    16 tools is slightly heavy but reasonable for a two-domain server (news search + trends analytics). Each tool covers a distinct retrieval dimension (source filter, geography, time series, region, growth) rather than duplicating surface area. No obviously redundant slot beyond the trending-feed trio.

    Completeness4/5

    The surface covers trend discovery, historical series, related queries/topics, suggestions, categories, regional interest, growth, and ranking, plus news by keyword/location/topic/site, top news, and full article retrieval. Minor gaps exist: no explicit publisher/source listing tool and no combined news+trend workflow, but agents can work around these with the provided filters.

    Maintenance

    ActivityActive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server providing news article mention volume data, weekly series, growth percentages, and a live Google News feed as an AI tool.
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      An AI-powered news aggregator MCP server that fetches live news from multiple sources, provides AI summaries via Claude, and performs sentiment analysis and trending topic detection.
      -
    • A
      license
      Not graded
      quality
      C
      maintenance
      A persistent news intelligence MCP server that enables AI agents to fetch, store, deduplicate, embed, and semantically query news from Google News across 141 countries and 41 languages.
      12 PyPI
      8
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      MCP server that exposes Google Trends data via BigQuery, enabling LLMs to query top search terms, rising terms, and compare term interest over time for different countries.
      -