TrendPulse - Google News & Trends
mcp-trendpulse
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_trendsanalyze_keyword_trendcompare_keyword_trendsdiscover_related_demandget_trend_contextfind_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.0GOOGLE_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 инструментов.
Новостные инструменты
Инструмент | Назначение |
| Найти недавние новостные статьи по ключевому слову. |
| Найти недавние новости, связанные с местоположением. |
| Найти недавние новости по поддерживаемой теме Google News. |
| Получить главные материалы Google News. |
| Найти недавние новости с определённого домена издателя. |
| Загрузить, проверить, извлечь и при необходимости суммаризировать одну статью по URL. |
Трендовые инструменты
Инструмент | Назначение |
| Получить текущие трендовые запросы для географической цели. |
| Получить данные об интересе во времени для одного или нескольких ключевых слов. |
| Рассчитать рост поискового интереса за запрошенные периоды. |
| Ранжировать текущие тренды по росту или объёму. |
| Получить ленту главных трендов без указания ключевого слова. |
| Сравнить интерес к ключевым словам по географическим регионам. |
| Получить лучшие и растущие связанные поисковые запросы. |
| Получить лучшие и растущие связанные темы Google Trends. |
| Получить подсказки автозаполнения/темы для запроса. |
| Получить 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
trendingCLI и 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-готовности сосредоточена на:
Поддержании согласованности документации, метаданных упаковки и генерируемых MCP-манифестов с актуальным набором инструментов.
Добавлении непрерывной интеграции для модульных тестов и статических проверок.
Разделении доступа к провайдерам и доменной логики TrendPulse, чтобы провайдеров можно было менять без переписывания MCP-слоя.
Добавлении production-удалённого HTTP-транспорта с сохранением локального режима stdio.
Проектировании меньшего высокоуровневого хостируемого набора инструментов для ChatGPT/Codex.
Интеграции хостируемого сервиса с приложением DigestSEO и эксплуатационным стеком.
Упаковке и тестировании хостируемого MCP в качестве плагина OpenAI только после того, как сервис будет готов к production.
Лицензия
MIT. См. LICENSE.
Available Tools
16 toolsget_article_contentARead-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_categoriesARead-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_growthARead-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_regionARead-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_keywordARead-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_locationARead-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_siteARead-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_topicARead-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_ranked_trendsARead-only
Return currently trending keywords ranked by week-over-week growth or volume. Use this when explicit ranked order matters; use get_top_trends for a simpler current feed and get_trends for historical series.
Inputs: geo, sort, limit, source. Returns: result
get_suggestionsARead-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_newsARead-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
get_top_trendsARead-only
Return a bounded current topic discovery feed from Google Trends RSS, including related news where available. Use this for current top or daily trends; use get_ranked_trends when explicit ranking by growth or volume matters.
Inputs: geo, type, limit. Returns: result
get_trending_termsARead-only
Return terms that are trending now for a geography, optionally with related news metadata. Use this for current trend discovery; use get_trends when the user wants historical interest over time for known keywords.
Inputs: geo, full_data. Returns: result
get_trendsARead-only
Return historical Google Trends interest-over-time points for one or more known keywords. Use this for trajectory and comparisons across a timeframe; values are normalized 0-100 interest scores, not absolute search volume. Use get_trending_terms for what is trending now.
Inputs: keyword (required), cat, geo, source, +2 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
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).
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.
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.
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
Related MCP Connectors
MCP server for Google Veo AI video generation
MCP server for Google search results via SERP API
The NewsCatcher MCP server lets an AI assistant search the news and run the agent for you. Ask in plain language; the assistant picks the tools and answers with headlines, summaries, sources, and links.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server providing news article mention volume data, weekly series, growth percentages, and a live Google News feed as an AI tool.MIT
- FlicenseNot gradedqualityDmaintenanceAn 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.-
- AlicenseNot gradedqualityCmaintenanceA 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 PyPI8MIT
- FlicenseNot gradedqualityDmaintenanceMCP 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.-