Skip to main content
Glama
moltrus

Google News MCP

by moltrus

Google News MCP

Сервер Model Context Protocol (MCP), который предоставляет RSS-ленты Google News в качестве инструментов MCP, позволяя ИИ-ассистентам (Claude, GPT-4 и др.) получать доступ к новостным данным в реальном времени с автоматическим декодированием URL, параллельной обработкой и интеллектуальным кэшированием.

Основные возможности

Асинхронность и параллелизм — все операции выполняются асинхронно с параллельным декодированием URL для максимальной производительности Умное кэширование — LRU-кэш (1024 записи) для быстрого повторного декодирования URL Пакетное декодирование URL — декодирование нескольких URL Google News параллельно Чистые сводки — извлечение обычного текста из HTML-сводок с декодированными ссылками на статьи Token-Oriented Object Notation (TOON) — поддержка компактного, эффективного с точки зрения токенов формата ответа (сокращение на 30-60%) Поддержка нескольких языков — настройка для любой комбинации языка и страны Расширенный поиск — полная поддержка поисковых операторов Google News (site:, when:, intitle: и т. д.) Извлечение страниц — получение и обобщение полного содержания статьи с помощью Jina Reader и Groq


Обзор инструментов

Инструмент

Назначение

Параметры

get_top_headlines

Последние заголовки по стране

language, country

get_category_feed

Новости по категориям (TECH, BUSINESS и т. д.)

category, language, country

get_search_feed

Поиск новостей с расширенными операторами

query, language, country

get_geo_feed

Новости по местоположению

location, language, country

get_topic_feed

Трендовая тема по ID

topic_id, language, country

decode_google_news_url

Декодирование URL Google News

urls (список)

list_categories

Доступные категории новостей

(нет)

fetch_content

Получение и обобщение контента страницы

url, summarize

Всего: 8 инструментов


Быстрый старт

Установка

Вариант 1: Использование uv (рекомендуется)

# Clone the repository
git clone https://github.com/moltrus/google-news-mcp.git
cd google-news-mcp

# Install with uv
uv sync

Вариант 2: Использование pip с виртуальным окружением

# Clone the repository
git clone https://github.com/moltrus/google-news-mcp.git
cd google-news-mcp

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install in development mode
pip install -e .

Для глобального использования (любой метод)

Чтобы использовать команду google-news-mcp глобально из любого места:

pip install -e .

Это устанавливает точку входа командной строки в системе, позволяя запускать google-news-mcp из любой директории.

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

Создайте файл .env на основе .env.example:

# RSS Preferences
GOOGLE_NEWS_LANGUAGE=en
GOOGLE_NEWS_COUNTRY=US

# Response Optimization
# Options: "json" (standard) or "toon" (token-optimized)
RESPONSE_FORMAT=json

# Fetching & Summarization
JINA_API_KEY=your_jina_key
GROQ_API_KEY=your_groq_key
GROQ_MODEL=qwen/qwen3-32b

Запуск сервера

google-news-mcp

Или напрямую:

python -m google_news_mcp.server

Документация инструментов

get_top_headlines

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

Параметры:

  • language (строка, необязательно): Код языка (например, 'en', 'fr', 'es'). По умолчанию используется переменная окружения GOOGLE_NEWS_LANGUAGE.

  • country (строка, необязательно): Код страны (например, 'US', 'GB', 'JP'). По умолчанию используется переменная окружения GOOGLE_NEWS_COUNTRY.

Возвращает:

{
  "title": "Google News",
  "link": "https://news.google.com",
  "description": "Latest news",
  "entries": [
    {
      "title": "Article Title",
      "link": "https://source.com/article",
      "published": "2026-03-31T10:00:00Z",
      "summary": "Article Title (https://source.com/article)\nAnother Article (https://another.com/news)",
      "source": "Source Name"
    }
  ]
}

Примечания:

  • Статьи отсортированы по релевантности (по умолчанию в Google News)

  • URL-адреса автоматически декодируются из редиректов Google News

  • Сводки содержат извлеченные ссылки в формате обычного текста


get_category_feed

Получение заголовков новостей для конкретной категории.

Параметры:

  • category (строка, обязательно): Категория новостей. Допустимые значения:

    • WORLD - Международные новости

    • NATION - Национальные/местные заголовки

    • BUSINESS - Бизнес и финансы

    • TECHNOLOGY - Технологии и ИИ

    • ENTERTAINMENT - Развлечения и поп-культура

    • SPORTS - Спорт

    • SCIENCE - Наука и исследования

    • HEALTH - Здоровье и медицина

  • language (строка, необязательно): Код языка. По умолчанию берется из конфигурации.

  • country (строка, необязательно): Код страны. По умолчанию берется из конфигурации.

Возвращает: То же, что и get_top_headlines

Примеры:

get_category_feed(category="TECHNOLOGY")
get_category_feed(category="BUSINESS", country="UK")

get_search_feed

Поиск в Google News по ключевым словам и с использованием расширенных операторов.

Параметры:

  • query (строка, обязательно): Поисковый запрос с необязательными операторами

  • language (строка, необязательно): Код языка. По умолчанию берется из конфигурации.

  • country (строка, необязательно): Код страны. По умолчанию берется из конфигурации.

Поддерживаемые поисковые операторы:

  • Точная фраза: "Artificial Intelligence" (должно совпадать в точности)

  • Исключить термин: -apple (исключить статьи со словом "apple")

  • Поиск по сайту: site:techcrunch.com (только с этого домена)

  • Временной диапазон (относительный): when:1h, when:24h, when:7d, when:30d, when:1y, when:1m

  • Временной диапазон (абсолютный): after:2026-01-01, before:2026-03-31

  • Поиск в заголовке: intitle:merger (термин появляется только в заголовке)

  • Логическое ИЛИ: Tesla OR SpaceX (любой из терминов)

  • Комбинации: "GPT-4" site:openai.com when:7d (все вместе)

Возвращает: То же, что и get_top_headlines (макс. ~100 статей)

Примеры запросов:

"OpenAI Sora"                                # Exact phrase
AI -hype                                     # Include AI, exclude hype
site:arxiv.org quantum computing             # From academic site
when:1h breaking                             # Last hour
when:24h -rumor Bitcoin                      # Last 24h, exclude rumors
after:2026-03-01 before:2026-03-31 merger    # Date range
intitle:IPO tech companies                   # IPO in headline
SpaceX OR Blue Origin                        # Either company OR other

Важно: Фильтры даты работают на ежедневной основе (не с точностью до часа/минуты).


get_geo_feed

Получение новостей для конкретного географического местоположения.

Параметры:

  • location (строка, обязательно): Город, штат, регион или страна (например, 'San Francisco', 'California', 'Japan')

  • language (строка, необязательно): Код языка. По умолчанию берется из конфигурации.

  • country (строка, необязательно): Код страны. По умолчанию берется из конфигурации.

Возвращает: То же, что и get_top_headlines

Примеры:

get_geo_feed(location="New York")
get_geo_feed(location="London", language="en")
get_geo_feed(location="Tokyo", country="JP")

fetch_content

Получение чистого контента страницы по URL с использованием API Jina Reader, с опциональным обобщением через Groq.

Параметры:

  • url (строка, обязательно): Абсолютный URL для получения (должен начинаться с http:// или https://)

  • summarize (логическое, необязательно): Если true, возвращает краткую сводку через Groq и опускает полный необработанный контент для экономии токенов. По умолчанию false.

Возвращает:

{
  "url": "https://example.com/article",
  "reader_url": "https://r.jina.ai/https://example.com/article",
  "content": "Full article text...",
  "summary": "Concise summary points...",
  "summary_model": "qwen/qwen3-32b",
  "summary_error": "Error message if summarization fails"
}

Примечания:

  • Эффективность токенов: Когда summarize равно true, поле content автоматически удаляется из ответа, чтобы предотвратить переполнение контекстного окна.

  • Переменные окружения:

    • JINA_API_KEY: Требуется для извлечения контента.

    • GROQ_API_KEY: Требуется для обобщения.

    • GROQ_MODEL: Необязательно. Конкретная модель для использования (по умолчанию qwen/qwen3-32b).


decode_google_news_url

Декодирование нескольких URL Google News до их фактических адресов назначения параллельно.

Параметры:

  • urls (список строк, обязательно): Массив URL-адресов редиректов Google News для декодирования

Возвращает:

{
  "decoded_urls": [
    {
      "original_url": "https://news.google.com/articles/CBMi8wFAUU...",
      "decoded_url": "https://techcrunch.com/2026/03/31/ai-news"
    },
    {
      "original_url": "https://news.google.com/articles/CBMixAFAUU...",
      "decoded_url": "https://theverge.com/2026/3/31/10987654"
    }
  ]
}

Производительность:

  • Все URL декодируются одновременно (без последовательных задержек)

  • Результаты кэшируются для повторных запросов (мгновенно при попадании в кэш)

  • LRU-кэш с ограничением в 1024 записи

Примеры:

decode_google_news_url(urls=[
  "https://news.google.com/articles/CBMi8wFAUU...",
  "https://news.google.com/articles/CBMixAFAUU...",
  "https://news.google.com/articles/CBMi5gFAUU..."
])

get_topic_feed

Получение новостей по конкретной трендовой теме по ее ID.

Google News отслеживает трендовые темы как хэши (например, компании, события, повторяющиеся темы).

Параметры:

  • topic_id (строка, обязательно): Хэш-идентификатор темы Google News

  • language (строка, необязательно): Код языка. По умолчанию берется из конфигурации.

  • country (строка, необязательно): Код страны. По умолчанию берется из конфигурации.

Возвращает: То же, что и get_top_headlines

Общие ID тем:

  • CAAqKAgKIiJDQkFTRXdvS0wyMHZNSFp3YWpSZlloSUZaVzR0UjBJb0FBUAE - Криптовалюты

  • Находите больше, изучая Google News и проверяя параметр topic в URL

Примеры:

get_topic_feed(topic_id="CAAqKAgKIiJDQkFTRXdvS0wyMHZNSFp3YWpSZlloSUZaVzR0UjBJb0FBUAE")

list_categories

Получение списка доступных категорий новостей.

Параметры: Нет

Возвращает:

{
  "categories": [
    "WORLD",
    "NATION",
    "BUSINESS",
    "TECHNOLOGY",
    "ENTERTAINMENT",
    "SPORTS",
    "SCIENCE",
    "HEALTH"
  ]
}

Архитектура

Оптимизация производительности

  1. Async/Await - Все операции ввода-вывода (HTTP, декодирование) не блокируют выполнение

  2. Параллельная обработка - Несколько URL и записей обрабатываются параллельно через asyncio.gather()

  3. LRU-кэш (1024 записи) - Декодированные URL кэшируются на уровне функции

  4. Кэш словаря в памяти - Дополнительный быстрый кэш для декодированных URL

  5. Пакетные операции - decode_google_news_url обрабатывает списки URL параллельно

Формат сводки

Сводки статей извлекаются из HTML и возвращаются в виде обычного текста с декодированными ссылками:

Article Title 1 (https://original-source.com/article1)
Image caption link (https://image-source.com/photo)
Article Title 2 (https://original-source.com/article2)

HTML-теги, обертки CDATA и сущности удаляются для получения чистого, читаемого текста.


Примеры использования

1. Получение срочных новостей за последний час

get_search_feed(query="when:1h breaking", country="US")

2. Декодирование нескольких URL статей одновременно

decode_google_news_url(urls=[
  "https://news.google.com/articles/CBMi8wFAUU...",
  "https://news.google.com/articles/CBMixAFAUU..."
])

3. Технологические новости из конкретного источника

get_search_feed(query="site:techcrunch.com AI")

4. Местные новости для города

get_geo_feed(location="San Francisco")

5. Поиск с диапазоном дат

get_search_feed(query="SpaceX after:2026-03-01 before:2026-03-31")

6. Получение новостей о здоровье

get_category_feed(category="HEALTH")

7. Трендовые новости о криптовалютах

get_topic_feed(topic_id="CAAqJggKIiBDQkFTRWdvSUwyMHZNR3d5YldFeVpYVXVhVzV6U0FpQkFQAQ")

8. Получение и обобщение полной статьи

fetch_content(url="https://techcrunch.com/article-url", summarize=true)

Эффективность токенов и TOON

Этот сервер поддерживает Token-Oriented Object Notation (TOON), компактный формат данных, разработанный специально для LLM.

Зачем использовать TOON?

Стандартный JSON может быть громоздким для LLM из-за повторяющихся ключей и пунктуации. TOON сокращает использование токенов на 30-60% за счет:

  • Определения ключей один раз для массивов объектов (табличный формат).

  • Удаления лишних фигурных скобок, квадратных скобок и кавычек.

  • Использования отступов и простых разделителей.

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

Чтобы включить TOON глобально для всех ответов инструментов, установите следующее в вашем .env:

RESPONSE_FORMAT=toon

Сравнение

JSON (Громоздкий)

TOON (Компактный)

{"entries": [{"id": 1, "title": "A"}, {"id": 2, "title": "B"}]}

entries[2,]{id,title}:

  1,A

  2,B


Ограничения

  1. Лимит результатов: RSS Google News возвращает макс. ~100 статей на запрос

  2. Сортировка: По умолчанию — релевантность. Используйте фильтры when: для временной сортировки

  3. Точность даты: Фильтры работают на ежедневной основе, а не по часам/минутам

  4. Ограничение частоты запросов: Для RSS ключи API не нужны, но у Jina Reader и Groq есть свои лимиты/квоты

  5. Извлечение контента: fetch_content зависит от способности Jina Reader парсить целевой сайт

  6. ID тем: Должны быть найдены из URL Google News; API для поиска нет


Лицензия

MIT

Install Server
F
license - not found
A
quality
-
maintenance - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/moltrus/google-news-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server