Google News MCP
This server provides an MCP interface to Google News RSS feeds, enabling AI assistants to fetch, search, and process real-time news with advanced features.
Get top headlines: Fetch the latest headlines for a specific country and language.
Get category news: Retrieve news by category (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH).
Search news: Query Google News with advanced operators — exact phrases,
site:,intitle:,when:,after:,before:, exclusions (-term), and boolean OR.Get location-based news: Fetch news for a specific city, region, or country.
Get topic feed: Access trending topics using Google News topic hash IDs (e.g., cryptocurrencies, AI).
Decode Google News URLs: Convert multiple redirect URLs to original article destinations concurrently, with LRU caching.
Fetch and summarize article content: Extract clean article content via Jina Reader and optionally generate a summary using Groq, with token-efficient responses via TOON format.
List categories: View all supported news categories.
Provides access to Google News RSS feeds, enabling retrieval of top headlines, category-specific news (World, Business, Technology, etc.), location-based feeds, and trending topics. Supports advanced search operators including site-specific queries, time range filters, exact phrase matching, and Boolean logic. Includes batch URL decoding capabilities to resolve Google News redirect links to their original article sources with concurrent processing and intelligent caching.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google News MCPwhat are the latest technology headlines?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google News MCP
A Model Context Protocol (MCP) server that exposes Google News RSS feeds as MCP tools, allowing AI assistants (Claude, GPT-4, etc.) to access real-time news data with automatic URL decoding, concurrent processing, and intelligent caching.
Key Features
Async & Concurrent - All operations run asynchronously with concurrent URL decoding for maximum performance
Smart Caching - LRU cache (1024 entries) for fast repeated URL decodings
Batch URL Decoding - Decode multiple Google News URLs in parallel
Clean Summaries - Extracts plain text from HTML summaries with decoded article links
Token-Oriented Object Notation (TOON) - Support for a compact, token-efficient response format (30-60% reduction)
Multi-language Support - Configure for any language/country combination
Advanced Search - Full support for Google News search operators (site:, when:, intitle:, etc.)
Page Extraction - Fetch and summarize full article content using Jina Reader and Groq
Tool Overview
Tool | Purpose | Parameters |
| Latest headlines by country |
|
| News by category (TECH, BUSINESS, etc.) |
|
| Search news with advanced operators |
|
| Location-specific news |
|
| Trending topic by ID |
|
| Decode Google News URLs |
|
| Available news categories | (none) |
| Fetch and summarize page content |
|
Total: 8 tools
Related MCP server: OmniWire-MCP
Quick Start
Installation
Option 1: Using uv (recommended)
# Clone the repository
git clone https://github.com/moltrus/google-news-mcp.git
cd google-news-mcp
# Install with uv
uv syncOption 2: Using pip with virtual environment
# 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 .For Global Usage (Any Method)
To use the google-news-mcp command globally from anywhere:
pip install -e .This installs the command-line entry point system-wide, allowing you to run google-news-mcp from any directory.
Configuration
Create a .env file based on .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-32bRunning the Server
google-news-mcpOr directly:
python -m google_news_mcp.serverTool Documentation
get_top_headlines
Fetch the latest top headlines for a country.
Parameters:
language(string, optional): Language code (e.g.,'en','fr','es'). Defaults toGOOGLE_NEWS_LANGUAGEenv var.country(string, optional): Country code (e.g.,'US','GB','JP'). Defaults toGOOGLE_NEWS_COUNTRYenv var.
Returns:
{
"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"
}
]
}Notes:
Articles are sorted by relevance (Google News default)
URLs are automatically decoded from Google News redirects
Summaries contain extracted links in plain text format
get_category_feed
Get news headlines for a specific category.
Parameters:
category(string, required): News category. Valid values:WORLD- International newsNATION- National/local headlinesBUSINESS- Business & financeTECHNOLOGY- Tech & AIENTERTAINMENT- Entertainment & pop cultureSPORTS- SportsSCIENCE- Science & researchHEALTH- Health & medicine
language(string, optional): Language code. Defaults to config.country(string, optional): Country code. Defaults to config.
Returns: Same as get_top_headlines
Examples:
get_category_feed(category="TECHNOLOGY")
get_category_feed(category="BUSINESS", country="UK")get_search_feed
Search Google News with keyword queries and advanced operators.
Parameters:
query(string, required): Search query with optional operatorslanguage(string, optional): Language code. Defaults to config.country(string, optional): Country code. Defaults to config.
Supported Search Operators:
Exact phrase:
"Artificial Intelligence"(must match exactly)Exclude term:
-apple(exclude articles with "apple")Site-specific:
site:techcrunch.com(only from domain)Time range (relative):
when:1h,when:24h,when:7d,when:30d,when:1y,when:1mTime range (absolute):
after:2026-01-01,before:2026-03-31Title search:
intitle:merger(term appears in headline only)Boolean OR:
Tesla OR SpaceX(either term)Combinations:
"GPT-4" site:openai.com when:7d(all together)
Returns: Same as get_top_headlines (max ~100 articles)
Query Examples:
"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 otherImportant: Date filters work on a daily basis (not hourly/minute precision).
get_geo_feed
Get news for a specific geographic location.
Parameters:
location(string, required): City, state, region, or country (e.g.,'San Francisco','California','Japan')language(string, optional): Language code. Defaults to config.country(string, optional): Country code. Defaults to config.
Returns: Same as get_top_headlines
Examples:
get_geo_feed(location="New York")
get_geo_feed(location="London", language="en")
get_geo_feed(location="Tokyo", country="JP")fetch_content
Fetch clean page content from a URL using Jina Reader API, with optional summarization via Groq.
Parameters:
url(string, required): Absolute URL to fetch (must start with http:// or https://)summarize(boolean, optional): Iftrue, returns a concise summary via Groq and omits the full raw content to save tokens. Defaults tofalse.
Returns:
{
"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"
}Notes:
Token Efficiency: When
summarizeistrue, thecontentfield is automatically removed from the response to prevent context window bloat.Environment Variables:
JINA_API_KEY: Required for content extraction.GROQ_API_KEY: Required for summarization.GROQ_MODEL: Optional. Specific model to use (defaults toqwen/qwen3-32b).
decode_google_news_url
Decode multiple Google News URLs to their actual article destinations in parallel.
Parameters:
urls(list of strings, required): Array of Google News redirect URLs to decode
Returns:
{
"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"
}
]
}Performance:
All URLs decoded concurrently (no sequential delays)
Results cached for repeat lookups (instant on cache hit)
LRU cache with 1024 entry limit
Examples:
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
Get news for a specific trending topic by its topic ID.
Google News tracks trending topics as hashes (e.g., companies, events, recurring themes).
Parameters:
topic_id(string, required): Google News topic hash identifierlanguage(string, optional): Language code. Defaults to config.country(string, optional): Country code. Defaults to config.
Returns: Same as get_top_headlines
Common Topic IDs:
CAAqKAgKIiJDQkFTRXdvS0wyMHZNSFp3YWpSZlloSUZaVzR0UjBJb0FBUAE- CryptocurrenciesFind more by exploring Google News and checking the topic parameter in URLs
Examples:
get_topic_feed(topic_id="CAAqKAgKIiJDQkFTRXdvS0wyMHZNSFp3YWpSZlloSUZaVzR0UjBJb0FBUAE")list_categories
Get the list of available news categories.
Parameters: None
Returns:
{
"categories": [
"WORLD",
"NATION",
"BUSINESS",
"TECHNOLOGY",
"ENTERTAINMENT",
"SPORTS",
"SCIENCE",
"HEALTH"
]
}Architecture
Performance Optimizations
Async/Await - All I/O operations (HTTP, decoding) are non-blocking
Concurrent Processing - Multiple URLs and entries processed in parallel via
asyncio.gather()LRU Cache (1024 entries) - Decoded URLs cached at function level
In-Memory Dictionary Cache - Additional fast lookup cache for decoded URLs
Batch Operations -
decode_google_news_urlprocesses lists of URLs concurrently
Summary Format
Article summaries are extracted from HTML and returned as plain text with decoded links:
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 tags, CDATA wrappers, and entities are stripped for clean, readable text.
Usage Examples
1. Get breaking news in the last hour
get_search_feed(query="when:1h breaking", country="US")2. Decode multiple article URLs at once
decode_google_news_url(urls=[
"https://news.google.com/articles/CBMi8wFAUU...",
"https://news.google.com/articles/CBMixAFAUU..."
])3. Tech news from specific source
get_search_feed(query="site:techcrunch.com AI")4. Local news for a city
get_geo_feed(location="San Francisco")5. Search with date range
get_search_feed(query="SpaceX after:2026-03-01 before:2026-03-31")6. Get health news
get_category_feed(category="HEALTH")7. Trending cryptocurrency news
get_topic_feed(topic_id="CAAqJggKIiBDQkFTRWdvSUwyMHZNR3d5YldFeVpYVXVhVzV6U0FpQkFQAQ")8. Fetch and summarize a full article
fetch_content(url="https://techcrunch.com/article-url", summarize=true)Token Efficiency & TOON
This server supports Token-Oriented Object Notation (TOON), a compact data format designed specifically for LLMs.
Why use TOON?
Standard JSON can be verbose for LLMs due to repeated keys and punctuation. TOON reduces token usage by 30-60% by:
Defining keys once for arrays of objects (tabular format).
Removing unnecessary braces, brackets, and quotes.
Using indentation and simple delimiters.
Configuration
To enable TOON globally for all tool responses, set the following in your .env:
RESPONSE_FORMAT=toonComparison
JSON (Verbose) | TOON (Compact) |
|
|
Limitations
Result limit: Google News RSS returns max ~100 articles per request
Sorting: Default is relevance. Use
when:filters for temporal orderingDate precision: Filters work on daily basis, not by hour/minute
Rate limiting: No API keys needed for RSS, but Jina Reader and Groq have their own limits/quotas
Content Extraction:
fetch_contentdepends on Jina Reader's ability to parse the target siteTopic IDs: Must be discovered from Google News URLs; no lookup API
License
MIT
Available Tools
7 toolsdecode_google_news_urlA
Convert multiple Google News URLs to their actual article URLs.
Decodes Google News wrapped URLs (news.google.com/articles/...) to their original article URLs concurrently. If a URL is not a Google News URL or decoding fails, returns the original URL.
Args: urls: A list of Google News URLs to decode (e.g., ["https://news.google.com/articles/CAIiE...", ...])
Returns: Dict with "decoded_urls" list containing dicts with "original_url" and "decoded_url" fields
| Name | Required | Description | Default |
|---|---|---|---|
| urls | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: concurrent processing, fallback behavior for non-Google News URLs or failed decoding, and the specific return format. It doesn't mention rate limits, authentication needs, or error handling details, but covers the essential operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured with a clear purpose statement, behavioral details, and separate Args/Returns sections. Every sentence earns its place by providing essential information without redundancy, and it's front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, no annotations, 0% schema coverage, but with an output schema, the description is complete enough. It explains what the tool does, how to use it, parameter details, and behavioral characteristics. The output schema handles return value documentation, so the description appropriately focuses on usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing detailed parameter semantics. It explains the 'urls' parameter as 'A list of Google News URLs to decode' with a concrete example format, adding crucial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific verb 'convert' and resource 'Google News URLs to their actual article URLs', with explicit scope 'multiple' and 'concurrently'. It distinguishes from sibling tools by focusing on URL decoding rather than news feed retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool ('Convert multiple Google News URLs to their actual article URLs') and includes a fallback behavior ('If a URL is not a Google News URL or decoding fails, returns the original URL'). However, it doesn't explicitly mention when NOT to use it or compare it to specific alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_category_feedB
Get headlines for a specific category.
Args: category: Category name (WORLD, NATION, BUSINESS, TECHNOLOGY, ENTERTAINMENT, SPORTS, SCIENCE, HEALTH) language: Language code [default: from config] country: Country code [default: from config]
Returns: Dict with feed title, description, and list of article entries
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | ||
| language | No | ||
| country | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states it 'Get headlines' which implies a read-only operation, but doesn't mention any behavioral traits like rate limits, authentication requirements, pagination, or what happens if invalid parameters are provided. For a tool with 3 parameters and no annotation coverage, this leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise. It starts with the core purpose, then provides a clear Args section with parameter details, and ends with Returns information. Every sentence earns its place by adding specific value, with no wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (though not shown here), the description doesn't need to explain return values in detail. It provides adequate parameter semantics and a clear purpose. However, as a read operation with no annotations and multiple sibling alternatives, it should include more behavioral context and usage guidance to be fully complete for an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds substantial value beyond the input schema, which has 0% description coverage. It provides the complete enum list for the 'category' parameter (WORLD, NATION, BUSINESS, etc.), explains that 'language' and 'country' default to config values, and clarifies that only 'category' is required. This effectively compensates for the schema's lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Get') and resource ('headlines for a specific category'). It distinguishes itself from siblings like 'get_top_headlines' or 'get_geo_feed' by focusing on category-based filtering rather than geographic or search-based feeds. However, it doesn't explicitly contrast with 'get_topic_feed' or 'list_categories', leaving some sibling differentiation incomplete.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'get_top_headlines' or 'get_search_feed'. It mentions the 'category' parameter but doesn't explain when category-based filtering is preferred over other filtering methods available in sibling tools. There are no explicit when/when-not statements or named alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_geo_feedC
Get news specific to a geographic location.
Args: location: City, state, or region name (e.g., 'San Francisco', 'London') language: Language code [default: from config] country: Country code [default: from config]
Returns: Dict with feed title, description, and list of article entries
| Name | Required | Description | Default |
|---|---|---|---|
| location | Yes | ||
| language | No | ||
| country | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the tool 'gets news' but doesn't disclose behavioral traits like rate limits, authentication requirements, pagination behavior, error conditions, or whether this is a read-only operation. The description is minimal beyond the basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with clear sections (purpose, args, returns). The first sentence states the core purpose, followed by parameter documentation and return format. No wasted sentences, though the structure could be more front-loaded with usage context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters with 0% schema coverage and no annotations, the description provides basic parameter semantics and return format. However, with an output schema available, the return value documentation is redundant. For a news retrieval tool with geographic filtering, more context about data freshness, source limitations, or result formatting would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides basic semantics for all 3 parameters (location, language, country) with examples for location and default values for language/country. However, it doesn't specify format requirements, valid country/language codes, or constraints beyond the basic definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get news specific to a geographic location' which is a specific verb+resource combination. It distinguishes from siblings like get_category_feed, get_search_feed, and get_topic_feed by specifying geographic focus. However, it doesn't explicitly contrast with get_top_headlines which might also have geographic filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like get_category_feed, get_search_feed, and get_top_headlines available, there's no indication of when geographic filtering is preferred over category-based, search-based, or top headlines approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_search_feedA
Search Google News and get RSS feed for results.
Supports advanced search operators:
Exact match: "phrase in quotes"
Exclude: -word
Site specific: site:domain.com
Time range: when:24h (options: 1h, 24h, 7d, 30d, 1y) or when:1m
After date: after:YYYY-MM-DD
Before date: before:YYYY-MM-DD
Title search: intitle:keyword
Multiple terms: term1 OR term2
Args: query: Search query with optional advanced operators language: Language code [default: from config] country: Country code [default: from config]
Returns: Dict with feed title, description, and list of article entries (up to 100)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| language | No | ||
| country | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it performs a search operation (implying read-only, non-destructive behavior), supports advanced operators with examples, specifies a result limit ('up to 100 articles'), and outlines the return structure. It does not mention rate limits, authentication needs, or error handling, but covers core functionality well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by a bulleted list of advanced operators for quick reference, and then structured sections for Args and Returns. Every sentence earns its place by providing essential information without redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (3 parameters, advanced operators) and the presence of an output schema (which handles return value details), the description is complete enough. It covers purpose, usage with operators, parameter semantics, and behavioral traits like result limits, leaving the output schema to specify the exact return structure. No critical gaps are evident for effective tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully. It adds significant meaning beyond the bare schema: it explains that 'query' supports advanced operators with detailed examples, clarifies that 'language' and 'country' are optional with defaults from config, and provides context on valid values (e.g., time range options like '1h', '24h'). This goes well beyond the schema's basic type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Search Google News and get RSS feed for results'), distinguishing it from sibling tools like get_top_headlines (which likely returns headlines without search) or get_category_feed (which filters by category rather than search query). It precisely identifies both the verb (search and get) and resource (Google News RSS feed).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the mention of 'advanced search operators' and the specific return format, suggesting this tool is for customized news searches. However, it does not explicitly state when to use this tool versus alternatives like get_top_headlines or get_category_feed, nor does it provide exclusion criteria or prerequisites for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_headlinesB
Get top headlines for a country.
Args: language: Language code (e.g., 'en', 'fr') [default: from config] country: Country code (e.g., 'US', 'GB') [default: from config]
Returns: Dict with feed title, description, and list of article entries
| Name | Required | Description | Default |
|---|---|---|---|
| language | No | ||
| country | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that parameters default to config values, which is useful context, but fails to disclose critical behavioral traits such as rate limits, authentication needs, error handling, or pagination. For a tool fetching external data, this omission is significant.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with a clear purpose statement followed by Args and Returns sections. Every sentence adds value without redundancy, making it easy to parse and front-loaded with essential information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no annotations, but an output schema exists), the description is partially complete. It covers parameters well and the output schema handles return values, but it lacks behavioral context (e.g., rate limits) and usage guidelines, leaving gaps for effective agent operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining both parameters: 'language' and 'country' with examples (e.g., 'en', 'US') and noting defaults ('from config'). This adds meaningful semantics beyond the bare schema, though it doesn't cover all possible nuances like format constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get top headlines for a country.' It specifies the verb ('Get') and resource ('top headlines'), and distinguishes it from siblings like get_category_feed or get_search_feed by focusing on headlines rather than categories or search results. However, it doesn't explicitly differentiate from get_geo_feed, which might be similar.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It mentions 'for a country' but doesn't explain when to choose this over siblings like get_category_feed or get_topic_feed, nor does it specify prerequisites or exclusions. This lack of context leaves the agent without clear usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_topic_feedA
Get news for a specific Google News topic ID.
Topic IDs are hashes for trending topics (e.g., cryptocurrency, AI, etc.)
Args: topic_id: Google News topic hash identifier language: Language code [default: from config] country: Country code [default: from config]
Returns: Dict with feed title, description, and list of article entries
| Name | Required | Description | Default |
|---|---|---|---|
| topic_id | Yes | ||
| language | No | ||
| country | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It describes what the tool returns (feed title, description, article entries) which is helpful, but doesn't disclose important behavioral traits like rate limits, authentication needs, error conditions, or whether this is a read-only operation. The description adds some context but leaves significant gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and front-loaded with the core purpose first, followed by topic ID explanation, parameter details, and return format. Every sentence adds value with zero wasted words, making it highly efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (which covers return values) and the description explains parameters and purpose well, it's mostly complete. However, for a tool with no annotations, it should ideally mention that this is a read-only operation and any rate limits or authentication requirements to be fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and 3 parameters, the description compensates well by explaining topic_id as 'Google News topic hash identifier' and providing examples (cryptocurrency, AI). It also clarifies that language and country have defaults from config. However, it doesn't specify format requirements or valid values for language/country codes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'news for a specific Google News topic ID', making the purpose explicit. It distinguishes from siblings like get_category_feed, get_geo_feed, and get_search_feed by specifying it's for topic-based feeds rather than category, geography, or search-based feeds.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by explaining what topic IDs are (hashes for trending topics) and listing other feed types as siblings, but doesn't explicitly state when to use this tool versus alternatives like get_category_feed or get_search_feed. It implies usage for topic-based news but lacks explicit comparison guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesB
List available news categories for get_category_feed.
Returns: Dict with list of category names
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool lists categories and returns a dict with a list of names, which covers basic behavior. However, it lacks details on permissions, rate limits, error handling, or whether this is a read-only operation (implied but not stated). For a tool with zero annotation coverage, this is a significant gap in behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, and the second sentence specifies the return value. There's no wasted text, but it could be slightly more structured (e.g., bullet points) for optimal clarity, so it's not a perfect 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, simple list operation), an output schema exists (implied by context signals), and no annotations, the description is fairly complete. It explains what the tool does and the return format. However, it could benefit from more behavioral context (e.g., read-only nature, any dependencies), so it's not a full 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for tools with no parameters, as per the rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List available news categories for get_category_feed.' This specifies the verb ('List') and resource ('available news categories'), and mentions the sibling tool get_category_feed. However, it doesn't explicitly differentiate from other sibling tools like get_geo_feed or get_topic_feed, which might also involve categories, so it's not a perfect 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by referencing get_category_feed, suggesting this tool should be used to retrieve categories for that specific sibling. However, it doesn't provide explicit guidance on when to use this tool versus alternatives (e.g., if other tools also list categories or if this is a prerequisite), and there are no exclusions or clear context beyond the implied link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap: decode_google_news_url handles URL conversion, list_categories provides metadata, and the five feed tools (get_category_feed, get_geo_feed, get_search_feed, get_top_headlines, get_topic_feed) target different news retrieval methods. The descriptions reinforce these boundaries, making tool selection unambiguous.
All tools follow a consistent verb_noun pattern with snake_case: decode_google_news_url, get_category_feed, get_geo_feed, get_search_feed, get_top_headlines, get_topic_feed, and list_categories. The naming is predictable and readable throughout the set, with 'get_' for retrieval actions and 'list_'/'decode_' for other operations.
With 7 tools, the count is well-scoped for a news server. It covers core functionalities like URL decoding, category listing, and multiple feed types (category, geo, search, headlines, topic), each earning its place without being excessive or sparse. This aligns with typical MCP server tool counts of 3-15.
The tool set provides comprehensive coverage for news retrieval and processing, including decoding, listing categories, and fetching feeds by various criteria. A minor gap exists in lacking update/delete operations for saved feeds or preferences, but this is reasonable for a read-only news domain, and agents can work around it with external state management.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
Scrape AI answer engines and Google Search/News with country and state-level geo-targeting.
Your curated sources (RSS, YouTube, podcasts, Google News) as context for any AI agent. 26 tools.
Real-time financial news for AI agents: search by ticker and source, with sentiment and entities.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides tools to search and retrieve news across various categories including business, technology, science, and sports via the Google News API. It supports keyword searches, autocomplete suggestions, and region-specific news across multiple languages.11MIT
- AlicenseCqualityCmaintenanceEnables AI models to fetch and aggregate news from RSS, Atom, JSON, and HTML feeds with fault-tolerant circuit breaker protection.4146MIT
- FlicenseNot gradedqualityCmaintenanceProvides access to the latest AI trends by querying Google News RSS and Hacker News API, enabling AI assistants to retrieve real-time trending topics.
- AlicenseAqualityDmaintenanceEnables AI agents to fetch and search news from multiple sources including RSS/Atom feeds, HackerNews, and GDELT global news intelligence without requiring an API key.114MIT
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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