Skip to main content
Glama
moltrus

Google News MCP

by moltrus

Google News MCP

一个 模型上下文协议 (MCP) 服务器,将 Google News RSS 源 作为 MCP 工具公开,允许 AI 助手(Claude、GPT-4 等)通过自动 URL 解码、并发处理和智能缓存访问实时新闻数据。

主要功能

异步与并发 - 所有操作均异步运行,并进行并发 URL 解码,以实现最高性能 智能缓存 - 具有 LRU 缓存(1024 条目),可快速重复进行 URL 解码 批量 URL 解码 - 并行解码多个 Google News URL 简洁摘要 - 从 HTML 摘要中提取纯文本,并附带已解码的文章链接 面向标记的对象表示法 (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

解码 Google News URL

urls (列表)

list_categories

可用的新闻类别

(无)

fetch_content

获取并总结页面内容

url, summarize

总计:8 个工具


Related MCP server: OmniWire-MCP

快速入门

安装

选项 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.example 创建一个 .env 文件:

# 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 - 科技与 AI

    • 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(术语仅出现在标题中)

  • 布尔 OR: 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

使用 Jina Reader API 从 URL 获取干净的页面内容,并可通过 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

并行解码多个 Google News URL 到其实际文章目标地址。

参数:

  • urls (字符串列表,必需):要解码的 Google News 重定向 URL 数组

返回:

{
  "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 并发解码(无顺序延迟)

  • 结果缓存以供重复查找(缓存命中时即时返回)

  • 具有 1024 条目限制的 LRU 缓存

示例:

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 并检查 URL 中的主题参数来查找更多信息

示例:

get_topic_feed(topic_id="CAAqKAgKIiJDQkFTRXdvS0wyMHZNSFp3YWpSZlloSUZaVzR0UjBJb0FBUAE")

list_categories

获取可用新闻类别的列表。

参数: 无

返回:

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

架构

性能优化

  1. Async/Await - 所有 I/O 操作(HTTP、解码)均为非阻塞

  2. 并发处理 - 通过 asyncio.gather() 并行处理多个 URL 和条目

  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

此服务器支持 面向标记的对象表示法 (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. 结果限制: Google News RSS 每次请求最多返回约 100 篇文章

  2. 排序: 默认为相关性。使用 when: 过滤器进行时间排序

  3. 日期精度: 过滤器按 天 计算,而非小时/分钟

  4. 速率限制: RSS 不需要 API 密钥,但 Jina Reader 和 Groq 有其自身的限制/配额

  5. 内容提取: fetch_content 取决于 Jina Reader 解析目标站点的能力

  6. 主题 ID: 必须从 Google News URL 中发现;没有查找 API


许可证

MIT

Available Tools

7 tools
decode_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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYes
languageNo
countryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
locationYes
languageNo
countryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
languageNo
countryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNo
countryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
topic_idYes
languageNo
countryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

Tool Schema Changelog

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

  1. 7 tool updatesv0.1.0
    • First observeddecode_google_news_url
    • First observedget_category_feed
    • First observedget_geo_feed
    • First observedget_search_feed
    • First observedget_top_headlines
    • First observedget_topic_feed
    • First observedlist_categories

TDQS

A3.8/5.0

Scored across 7 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides 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.
    11
    MIT
  • A
    license
    C
    quality
    C
    maintenance
    Enables AI models to fetch and aggregate news from RSS, Atom, JSON, and HTML feeds with fault-tolerant circuit breaker protection.
    4
    10 npm
    6
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides access to the latest AI trends by querying Google News RSS and Hacker News API, enabling AI assistants to retrieve real-time trending topics.
    -