Skip to main content
Glama

mcp-trendpulse

MCP Python License

TrendPulse 是一个用于研究当前新闻和搜索兴趣趋势的 Python Model Context Protocol (MCP) 服务器。它将 Google News 发现与文章提取、Google Trends 分析相结合,使 MCP 客户端能够查看热门内容、比较关键词势头、探索相关需求,并为研究工作流添加上下文新闻背景。

该项目目前以 社区/自托管 MCP 服务器 形式发布,同时还包含一个独立的 TrendPulse by DigestSEO 托管层的实现,用于远程 MCP 客户端(如 ChatGPT 和 Codex)。托管层使用更小、面向目标的工具面,而社区服务器则保留完整、底层的研究工具包供开发人员使用。

项目状态: 本地/社区服务器目前即可使用。DigestSEO 托管的 MCP 和公开的 OpenAI 插件尚未发布,不应被视为可用端点。

工程背景:TrendPulse 是 DigestSEO MCP 生态系统的一部分。它补充了用于 Google Search Console 数据的 mcp-gsc、用于 AI 可见性的 mcp-geo,以及用于技术性网页验证的 mcp-web-validator。更广泛的架构记录在 DigestSEO MCP Suite 工程案例研究 中。

TrendPulse 能做什么

新闻研究

  • 按关键词、地点、主题或发布商域名搜索 Google News。

  • 获取热门新闻文章。

  • 解析 Google News 链接并提取文章内容。

  • 在难以处理的页面上,从普通 HTTP 检索回退到 Playwright/Chromium。

  • 可选地通过 MCP 客户端采样来总结文章文本,并使用本地 NLP 作为回退方案。

趋势研究

  • 获取某个地理市场的当前热门搜索词。

  • 提取一个或多个关键词的 Google Trends 随时间变化的兴趣数据。

  • 计算关键词在自定义时间窗口(如 3M 或 1Y)内的增长情况。

  • 按搜索量或增长对实时趋势进行排名。

  • 在支持的情况下,按国家、地区、城市或 DMA 查看兴趣数据。

  • 探索相关查询、相关主题、建议和类别 ID。

  • 在底层提供商支持的情况下,比较 Google Search、YouTube Search、News Search、Image Search 和 Google Shopping 的趋势属性。

Related MCP server: NewsIQ MCP

社区版与托管版架构

TrendPulse 正在开发两个精心设计的接口:

接口

用途

状态

Community MCP

用于本地使用、开发、自托管以及与兼容 MCP 的客户端集成的完整 Python MCP 服务器。

可在本仓库中获取

TrendPulse by DigestSEO

面向 ChatGPT/Codex 的托管远程 MCP,以及未来面向 OpenAI 的公开插件,提供更小、面向任务的工具面。

开发中

社区服务器本身仍然非常有用。托管版本将复用相同的核心趋势研究概念,同时增加托管服务所需的部署、可靠性、身份验证、可观测性和产品集成能力。

已实现的托管工具面刻意比社区 API 更上一层楼,并围绕以下目标展开:

  • discover_trends

  • analyze_keyword_trend

  • compare_keyword_trends

  • discover_related_demand

  • get_trend_context

  • find_seo_opportunities

这些名称描述的是托管的 ChatGPT Apps/MCP 接口;它们与当前 Community MCP 工具名称相互独立。

安装

使用 uvx 直接从 GitHub 运行(推荐)

该软件包尚未发布到 PyPI,因此最直接的安装方式是:

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

在 PyPI 发布之后,更简短的形式将是:

uvx mcp-trendpulse

使用 pip 从检出目录安装

git clone https://github.com/AKzar1el/mcp-trendpulse.git
cd mcp-trendpulse
python -m pip install .
python -m mcp_trendpulse

浏览器回退

当普通检索无法提取到可用文章时,新闻/文章工具可以回退到 Playwright。安装 Python playwright 包并不会自动安装 Chromium。

用于本地使用:

playwright install chromium

对于还需要浏览器系统依赖项的 Linux 环境:

playwright install --with-deps chromium

仅趋势操作本质上不需要 Chromium。

客户端配置

Claude Desktop

使用 uvx 直接从 GitHub 运行:

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

VS Code

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

Cursor

Cursor 支持全局和项目级 MCP 配置。将服务器添加到相应的 mcp.json 配置中:

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

ChatGPT 及其他云 MCP 客户端

该仓库现在包含一个专用的无状态 Streamable HTTP ASGI 入口点:mcp_trendpulse.asgi:app。它与此前保持不变并继续使用的 Community stdio 入口点是分开的。

为了进行受控的本地/私有测试,你可以使用 Uvicorn 运行 ASGI 应用,或使用提供的容器。有关加固容器、Host/Origin 允许列表、Chromium 沙箱要求、健康/就绪端点和反向代理注意事项,请参阅 deploy/README.md

DigestSEO 托管的端点和公开的 ChatGPT 应用仍未 发布。托管部署现在支持默认拒绝的 Clerk OAuth 身份验证;除非已为该部署配置 Clerk issuer/JWKS/audience 设置、公共基础 URL 以及 Host/Origin 允许列表,否则不要公开暴露远程传输。

配置

TrendPulse 从进程环境以及本地 .env 文件(如果存在)加载环境变量。

有用的变量包括:

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

GOOGLE_TRENDS_DELAY 控制当前趋势提供商使用的请求延迟。当上游服务对特定网络进行速率限制或封锁时,代理变量可能很有用。

远程部署还支持 TRENDPULSE_HTTP_PATHTRENDPULSE_HTTP_ALLOWED_HOSTSTRENDPULSE_HTTP_ALLOWED_ORIGINSTRENDPULSE_BROWSER_SANDBOX。容器会显式启用 Chromium 沙箱;本地 Community 运行保留与 Playwright 兼容的默认设置,除非你选择启用。

不要提交密钥、私有代理凭据或特定于机器的 .env 文件。

MCP 工具

社区 MCP 服务器目前提供 16 个工具

新闻工具

Tool

Purpose

get_news_by_keyword

查找与关键词匹配的最近新闻文章。

get_news_by_location

查找与某个地点相关的最近新闻。

get_news_by_topic

查找某个受支持的 Google News 主题的最近新闻。

get_top_news

获取 Google News 热门新闻。

get_news_by_site

查找来自特定发布商域名的最近新闻。

get_article_content

下载、验证、提取,并可选择总结一篇新闻文章 URL。

趋势工具

Tool

Purpose

get_trending_terms

获取某个地理目标当前的流行搜索词。

get_trends

获取一个或多个关键词的随时间兴趣变化数据点。

get_growth

计算请求时间窗口内的搜索兴趣增长。

get_ranked_trends

按增长或搜索量对当前趋势进行排名。

get_top_trends

在无需提供关键词的情况下获取热门趋势信息流。

get_interest_by_region

比较关键词在各地理区域的兴趣度。

get_related_queries

获取热门和相关上升的搜索查询。

get_related_topics

获取热门和相关上升的 Google Trends 主题。

get_suggestions

为查询解析自动补全/主题建议。

get_categories

获取 Google Trends 类别 ID 和名称。

示例:显式趋势时间窗口

get_trends 接受显式 timeframe。当你需要可重复的比较时,提供该参数更佳。

{
  "keyword": ["technical SEO audit", "AI SEO audit"],
  "geo": "US",
  "source": "google search",
  "timeframe": "today 12-m",
  "cat": 0
}

提供商支持的范围包括标准窗口,如 today 12-mtoday 5-y;相对窗口,如 today 90-dall;以及精确日期范围,如 2021-01-01 2026-01-01

Google Trends 值是以 0-100 表示的归一化兴趣分数。请勿将 0-100 的兴趣序列理解为绝对搜索量。

CLI

独立的 Click CLI 提供了比 MCP 服务器更小、面向新闻的命令集:

uv run mcp-trendpulse-cli --help

当前 CLI 命令:

keyword
location
top
topic
trending

CLI 和 MCP 接口被有意分开记录,因为它们并不公开相同的命令集。

开发

使用你偏好的 Python 环境安装项目及其开发依赖项,然后运行单元测试套件:

python -m pytest

默认的 pytest 配置会排除实时集成测试。

使用以下命令显式运行实时提供商测试:

python -m pytest tests/integration -m integration

标记为浏览器集成的测试需要安装 Playwright Chromium。

使用以下命令运行 Ruff 检查:

ruff check .

MCP Inspector

通过 MCP Inspector 运行从 GitHub 发布的服务器:

npx @modelcontextprotocol/inspector uvx --from git+https://github.com/AKzar1el/mcp-trendpulse.git mcp-trendpulse

对于本地检出:

npx @modelcontextprotocol/inspector uv run mcp-trendpulse

打包

仓库中已经包含一个 GitHub Actions 工作流,用于在 GitHub 发布版本时通过 PyPI Trusted Publishing 构建并发布 Python 发行包。在第一个软件包版本发布之前,请使用上面显示的 GitHub uvx --from ... 命令。

安全说明

文章检索是一项出站网络功能,并被视为不可信输入。该实现会验证 HTTP(S) 目标,拒绝私有的、不可路由的目标,检查重定向目标,强制执行响应大小限制,并在使用 Playwright 时应用浏览器路由验证。

如果你远程部署 TrendPulse,请保留这些控制措施,并增加部署级别的速率限制、请求超时、可观测性和资源限制,而不是仅依赖应用程序默认设置。

路线图

当前的生产就绪工作集中在:

  1. 保持文档、打包元数据和生成的 MCP 清单与实际工具面一致。

  2. 为单元测试和静态检查添加持续集成。

  3. 将提供商访问与 TrendPulse 的领域逻辑分离,以便在不重写 MCP 层的情况下更换提供商。

  4. 在保留本地 stdio 操作的同时,添加生产级远程 HTTP 传输。

  5. 为 ChatGPT/Codex 设计更小、更高级的托管工具面。

  6. 将托管服务与 DigestSEO 应用和运维技术栈集成。

  7. 仅在服务达到生产就绪后,再将托管 MCP 作为 OpenAI 插件进行打包和测试。

许可证

MIT。参见 LICENSE

Available Tools

16 tools
get_article_contentA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the news article to download and parse.
full_dataNoReturn full data for the article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful context about downloading/parsing and summarizing, but does not disclose behavior around invalid URLs, paywalls, or fallback outcomes. This is acceptable given the annotations, but not especially rich.

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?

Two concise sentences front-load the core action and condition, then immediately give the routing exclusion. Every sentence earns its place and there is no fluff.

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?

For a single-URL read tool with full schema coverage and an output schema, the description covers use case, scope, and alternatives. It does not discuss edge cases like malformed URLs or unavailable articles, but these are minor gaps for this simple safe-read tool.

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 100%, so the schema already documents all three parameters well. The description adds a high-level hint about retrieving text/metadata or summarizing, but does not materially improve on the schema's own descriptions. Baseline 3 is appropriate.

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 tool's specific verb ('Download and parse') and resource ('one specific news article... when you already have an article URL'). It also explicitly scopes this away from discovery, distinguishing it from sibling search/trend tools even without opening their schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use condition ('when you already have an article URL') and a clear exclusion with the alternative ('do not use it for discovery - use the news search tools instead'). This is direct and actionable for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_categoriesA
Read-only

Return Google Trends category IDs and names for use in the cat parameter of trend tools. Call this when a category filter is needed; do not guess category IDs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so this is clearly a safe read-only operation. The description adds context that the tool provides authoritative category identifiers for use in other trend tools, but it does not disclose additional behavioral traits such as output volume, ordering, or whether categories are pre-defined or dynamic. Given the annotations cover the safety profile, a 3 is appropriate.

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 two sentences with no filler. The purpose is stated first, and the usage instruction is compressed into a direct, actionable second sentence.

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?

For a zero-parameter read-only lookup tool with an output schema and clear annotations, the description provides enough information for an agent to call it correctly. It states what is returned, why it is needed, and when to invoke it. Nothing essential is missing.

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, so there are no parameter semantics to clarify. The baseline for no-parameter tools is 4, and the description does usefully explain that the returned IDs are intended for the cat parameter of other trend tools, which helps an agent understand how to use the results.

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 names a specific verb ('Return'), a concrete resource (Google Trends category IDs and names), and its intended use (the cat parameter of trend tools). This clearly distinguishes it from sibling tools that retrieve news or trend data, so an agent can tell this is a lookup/reference tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to call it: 'when a category filter is needed.' It also warns against guessing category IDs, which is actionable guidance that steers the agent toward this tool rather than improvising a category value.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_growthA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
geoNoGeographic region code (e.g. 'US').US
sourceNoSearch source: 'google search', 'youtube search', etc.google search
keywordYesSearch keyword(s) to analyze.
percent_growthNoTimeframes to calculate growth (e.g. ['3M', '1Y']).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description adds limited behavioral context beyond that. The word 'estimate' hints at approximate computation, but the description does not detail rate limits, data freshness, or edge cases. With annotations shouldering the main safety burden, a 3 reflects adequate but not rich 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with zero redundancy. The primary purpose is front-loaded, and the alternative tool mention is placed second as a helpful routing cue. Every sentence earns its place.

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 presence of a complete input schema (100% coverage), an output schema, and read-only annotations, the description sufficiently covers the tool's purpose, usage boundary, and relationship to a sibling. Nothing essential for an agent to select and call the tool correctly appears missing.

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 100%, so the baseline is 3. The description's phrase 'growth windows' loosely aligns with the percent_growth parameter, but it does not add syntax, defaults, or formatting details beyond what the schema already provides. No additional parameter meaning is contributed.

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 uses a specific verb ('Estimate momentum') plus a clear resource ('one or more known keywords') and scope ('across requested growth windows'). It explicitly distinguishes itself from get_trends by contrasting percentage growth with underlying historical time series, making its purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a direct selection rule: 'Use this when percentage growth is the goal; use get_trends when the user needs the underlying historical time series.' This explicitly identifies when to choose this tool over a named sibling, leaving no inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_interest_by_regionA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
catNoCategory ID (default: 0 for all).
geoNoGeographic region code (e.g. 'US' or empty '' for worldwide).US
gpropNoGoogle property filter (e.g., '', 'youtube', 'news', 'images', 'froogle').
keywordsYesSearch keyword(s) to analyze.
timeframeNoTimeframe for search volume analysis (e.g., 'today 12-m').today 12-m
resolutionNoGeographic resolution: 'COUNTRY', 'REGION', 'CITY', or 'DMA'.REGION
inc_low_volNoInclude regions with low search volume.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is well covered. The description adds useful scope context ('known keywords', geographic resolution) but does not disclose deeper behavioral traits such as normalized scoring, empty results behavior, or API limitations beyond what the output schema and annotations already imply.

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 two sentences with no fluff. The first sentence states the core function and scope; the second provides usage guidance and a direct alternative. The most important routing information is front-loaded.

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?

With a 100% schema-covered parameter list, an output schema, and helpful annotations, the description only needs to clarify selection logic. It does that by identifying the geographic comparison use case and naming get_trends as the time-series alternative. No critical information for invoking the tool correctly is missing.

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 100%, so the baseline is 3 even without parameter details in the description. The description adds the 'known keywords' nuance and repeats resolution values already present in the schema, but it does not substantially enrich parameter semantics beyond structured documentation.

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 opens with a specific verb and resource: 'Return geographic Google Trends interest' for one or more known keywords at defined resolutions. It clearly differentiates from the sibling get_trends by framing this tool as geographic/comparison-oriented rather than time-oriented.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit when-to-use signal ('compare where demand is strongest') and an explicit alternative ('use get_trends for interest over time instead'). This gives an agent enough routing information without needing to inspect sibling schemas.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_news_by_keywordA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoNumber of days to look back for articles.
keywordYesSearch term to find articles.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful context about querying Google News and accepting free-form phrases, matching openWorldHint. However, it does not disclose pagination, result ordering, or how 'recent' relates to the period parameter, so behavioral richness beyond annotations is moderate.

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 two sentences with no filler: the first states what the tool does, and the second provides sibling routing. Every sentence earns its place, and the most important purpose information is front-loaded.

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?

For a read-only search tool with an output schema, full parameter documentation in the schema, and clear sibling differentiation, the description covers what an agent needs to select and invoke it. Missing details like result format are handled by the output schema, and safety is covered by annotations.

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 100%, so all five parameters are already documented. The phrase 'free-form keyword or phrase' reinforces the keyword parameter's intent but adds little beyond the schema's 'Search term to find articles.' With full schema coverage, the baseline of 3 is appropriate.

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 opens with a specific verb and resource: 'Find recent Google News articles' for a free-form keyword or phrase. It also distinguishes itself from siblings by naming get_news_by_topic and get_news_by_site as the tools for predefined categories and single publishers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use this tool ('ad-hoc subject searches') and points to concrete alternatives: get_news_by_topic for predefined topic categories and get_news_by_site for a single publisher. This gives an agent clear routing guidance without needing to inspect sibling schemas.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_news_by_locationA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoNumber of days to look back for articles.
locationYesName of city/state/country.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey read-only, non-destructive, and open-world behavior. The description adds useful contextual behavior: it targets place-based Google News searches and emphasizes geography as the filter. It does not add details about return formatting, but the output schema covers that.

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?

Two sentences carry the essential purpose and usage routing with no filler. The core scoping statement is front-loaded, and the alternative-tool note is concise.

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?

The tool is simple, has full schema coverage, has annotations for safety, and has an output schema. The description sufficiently explains when to use it and how it differs from its sibling, so nothing critical is missing for correct invocation.

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 100%, so every parameter is adequately documented in the schema itself. The description reinforces the location-centric purpose but does not need to repeat parameter semantics; baseline 3 is appropriate.

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 states a specific verb ('Find'), a specific resource ('recent Google News articles'), and a clear scope ('place-focused location such as a city, state, or country'). It also explicitly distinguishes this tool from get_news_by_keyword, so an agent can differentiate them immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear when-to-use guidance: geography is the primary filter. It names the alternative tool, get_news_by_keyword, for general subject searches, making the routing decision explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_news_by_siteA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
siteYesDomain of the news site, e.g. 'cnn.com'.
periodNoNumber of days to look back for articles.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations cover the key safety profile (readOnlyHint=true, destructiveHint=false), so the description does not need to restate that. It adds useful context about scoping to a publisher domain and recency, but it does not mention pagination, rate limits, or how results are structured beyond what the output schema likely provides. This is adequate but not especially rich.

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?

Two sentences with no filler: the first states the core function and scope, the second gives sibling routing. Every sentence earns its place and the key information is front-loaded.

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?

For a read-only news retrieval tool with a detailed input schema and output schema, the description provides sufficient context. It specifies the domain-scoping behavior, the recency framing, and the main alternative, so an agent can decide when to call this tool and what to expect at a high level.

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 100%, so the schema already documents all five parameters clearly. The description adds a 'publisher domain' and 'recent' framing that loosely map to the site and period parameters, but it does not provide substantive parameter-level meaning beyond the 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 identifies the tool as retrieving recent Google News articles from a single publisher domain, with a specific verb ('Find') and resource ('Google News articles'). It also distinguishes itself from get_news_by_keyword, making the tool's scope immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('when the user wants source-specific coverage') and directly names the alternative for cross-publisher subject search ('use get_news_by_keyword'). This gives an agent clear routing guidance with no inference required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_news_by_topicA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesTopic to search for articles.
periodNoNumber of days to look back for articles.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds useful context about the tool's scope ('predefined topic') and recency ('recent'), but it doesn't discuss result volume, limits, or behavior beyond what annotations and schema imply. This is adequate but not rich.

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?

Two sentences with no filler. The core purpose is stated first, followed immediately by usage guidance and the sibling distinction. Every word earns its place.

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?

The definition is largely complete because the output schema exists, annotations cover safety, and the description provides clear purpose and routing. However, it doesn't point the agent to get_categories for discovering valid topic values, which would be helpful since the topic field has no enum or list.

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 100%, so baseline is 3. The description adds minor value by giving examples of valid topic values ('BUSINESS, TECHNOLOGY, or SPORTS') and clarifying that the topic must be a predefined category, but it does not elaborate on the other parameters.

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 states a specific verb ('Find'), a resource ('recent Google News articles'), and a clear scope ('predefined Google News topic category'). It also distinguishes itself from the most similar sibling by naming get_news_by_keyword for free-form queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells the agent when to use this tool ('for topic category browsing') and when to use the alternative ('use get_news_by_keyword for a free-form query'). This is a direct when-to-use vs. when-not-to-use statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_suggestionsA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYesQuery string to autocomplete.
languageNoLanguage code, e.g. 'en'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, covering the safety profile. The description adds behavioral context by framing the tool as lightweight and suggesting it exposes autocomplete-style entity candidates, which helps an agent set expectations for scope and response character beyond the structured annotations.

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?

Two sentences with no filler. The core action and resource are front-loaded, and the alternative is mentioned in a single clear sentence. Every word earns its place.

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?

The tool has a simple two-parameter schema with full schema coverage, read-only annotations, and an output schema. The description fully covers the tool's purpose and the key sibling alternative, so there are no material gaps for an agent to call it correctly.

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 100%, so the schema already documents 'keyword' and 'language' sufficiently. The description reinforces 'seed keyword' but adds no additional parameter semantics, so a baseline score of 3 is appropriate.

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 states a specific verb and resource: 'Return Google Trends autocomplete suggestions for a seed keyword.' It also distinguishes itself from the sibling get_related_queries by naming the exact difference in use case, making the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use this tool ('lightweight autocomplete or entity candidates') and when to use get_related_queries instead ('top or rising demand signals'). This gives an agent clear decision criteria without needing to inspect other tool schemas.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_top_newsA
Read-only

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

ParametersJSON Schema
NameRequiredDescriptionDefault
periodNoNumber of days to look back for top articles.
full_dataNoReturn full data for each article. If False a summary should be created by setting the summarize flag
summarizeNoGenerate a summary of the article, will first try LLM Sampling but if unavailable will use nlp
max_resultsNoMaximum number of results to return.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry the safety profile (readOnlyHint=true, destructiveHint=false), so the description's additional behavioral burden is low. It does add the scoping fact that no seed is required, but it does not mention pagination, default result caps, or potential data freshness limitations. This is adequate but not rich; a 3 is appropriate.

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 two sentences with zero filler. It front-loads the purpose and then immediately provides usage routing. Every sentence earns its place.

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?

For a simple read-only tool with no required parameters, full schema descriptions, a provided output schema, and safety annotations, the description is complete. An agent can confidently select and invoke this tool based on the description alone; the schema covers invocation details.

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 100%, so all four parameters (period, full_data, summarize, max_results) are fully documented in the schema. The description adds no parameter-level detail, which is acceptable under the baseline given the schema already handles this.

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 states a specific verb and resource: 'Return general headline and top-news stories from Google News.' It also explicitly distinguishes this tool from siblings by noting it operates 'without a keyword or topic seed,' making its scope clear relative to the keyword, location, topic, and site tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'Use this for a broad news snapshot,' and explicitly routes users to alternatives when a filter exists: 'use the keyword, location, topic, or site tools when the user gives a filter.' This is clear routing with named alternative categories.

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. Dates show when Glama detected each change.

  1. 16 tool updates
    • First observedget_article_content
    • First observedget_categories
    • First observedget_growth
    • First observedget_interest_by_region
    • First observedget_news_by_keyword
    • First observedget_news_by_location
    • First observedget_news_by_site
    • First observedget_news_by_topic
    • First observedget_ranked_trends
    • First observedget_related_queries
    • First observedget_related_topics
    • First observedget_suggestions
    • First observedget_top_news
    • First observedget_top_trends
    • First observedget_trending_terms
    • First observedget_trends

TDQS

A4.4/5.0
Disambiguation4/5

Most tools have clearly distinct inputs and outputs, but a few current-trend tools (get_trending_terms, get_top_trends, get_ranked_trends) and keyword-expansion tools (get_suggestions, get_related_queries, get_related_topics) have overlapping discovery purposes. The cross-references in descriptions help, but agents could still select the wrong trend summary tool.

Naming Consistency5/5

Every tool follows a consistent get_<object> snake_case pattern, with predictable variants like get_news_by_* and get_related_*. There are no mixed casing conventions or vague verb prefixes.

Tool Count4/5

16 tools is slightly over the ideal 3-15 range, but each tool corresponds to a distinct news/trend query mode or data source. The count is justified by the broad news-plus-trends scope rather than redundant functionality.

Completeness5/5

The surface covers news discovery by keyword, location, topic, site, and headline; article text retrieval; current and historical trends; regional interest; growth; related-term expansion; and category metadata. No obvious dead-end or missing operation remains for the stated trend/news analysis purpose.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

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

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/AKzar1el/mcp-trendpulse'

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