Mcp Newsapi

io.github.nubiia-dev由 GitHub 帳號 nubiia-dev 發布v1.0.2更新於 Oct 30, 2026

NewsAPI.ai (Event Registry): 10 read-only MCP tools for news articles, events, autosuggest, trends

概覽

AI 產生的概覽

針對 NewsAPI.ai(Event Registry)的唯讀 MCP 伺服器,讓助理搜尋新聞文章與事件、把名稱解析成 URI,並查看熱門話題。

可以做什麼
  • 依關鍵字、概念、分類、來源或地點搜尋並閱讀新聞文章,支援分頁與較長的內文
  • 搜尋並閱讀新聞事件(同一事件的多篇報導聚合),含摘要、日期、地點與報導數量
  • 把人物、組織、地點、分類與媒體名稱解析成 URI,讓檢索更精準
  • 查看目前在新聞、社群、公關或部落格中熱度上升的人物、組織與地點
  • 查詢帳戶的 token 餘額與本次工作階段的預算
適用情境
適合需要掌握某公司、人物、地點或議題近期新聞動態的情況,也適合希望把新聞檢索控制在可預期預算內的研究或監測工作。所有工具皆為唯讀,適合調研而非發布內容。
執行需求
透過 npx 在本機以 stdio 程序執行,需要 Node.js 22.14 或以上版本。需要 NewsAPI.ai 帳戶與 API 金鑰,透過環境變數 NEWSAPI_AI_API_KEY 提供;選用變數 NEWSAPI_AI_MAX_TOKENS_PER_SESSION 可限制每個程序的花費(預設 200)。需要能連線至 NewsAPI.ai 介面的網路。
安裝前請注意
每次檢索都會消耗 NewsAPI.ai 方案中的付費 token:文章類呼叫 1 個、事件類 5 個、趨勢 10 個,查詢歷史檔案還需額外 token。工作階段預算以程序為單位並在重新啟動後重置,多個用戶端可各自消耗額度;已被介面接受但隨後失敗的呼叫仍會計費。NEWSAPI_AI_API_KEY 屬機密,切勿提交至程式碼倉庫。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Mcp Newsapi,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

MCP NewsAPI.ai

[CI] [npm version] [License: MIT] [by Nubiia]

A Model Context Protocol (MCP) server for NewsAPI.ai (the Event Registry news intelligence API). It lets AI assistants like Claude search news articles and events (clusters of articles about the same happening), resolve names to entity URIs, see what is trending, and keep an eye on the account's token budget.

Built and maintained by Nubiia — automatización e integraciones con IA para negocios (MCP, Holded, Pipedrive y más). ¿Quieres algo así para tu empresa? Escríbenos en nubiia.es.

⚠️ NewsAPI.ai is metered in tokens

Every search spends tokens from your plan, and a free plan has a small budget. This server is built to be frugal:

  • Result counts default to 10 (articles/events) and article bodies to 300 characters, so a call is cheap in tokens and in your assistant's context window.
  • Searches are limited to the last 31 days unless you pass allow_archive: true (historical data costs extra tokens per year touched). allow_archive requires date_start and the date_start → date_end (default: today) range may span at most 1 year. A date_start/date_end older than 31 days without allow_archive is rejected with an explanation instead of silently returning nothing.
  • A search with no filter at all is rejected locally, before it can spend anything.
  • A session token budget (default 200 tokens, see below) stops runaway loops before they reach the API.
  • The suggest_* tools and get_usage are free — use them to resolve entities to URIs before searching.
  • get_usage shows the remaining budget.

Costs measured against a live account (31-day window):

ToolTokens per call
search_articles, get_article1
search_events, get_event (info)5
get_event (include_articles)1
get_trending_concepts10
suggest_*, get_usage0

Plans and pricing change — see newsapi.ai/pricing and docs/api-notes.md.

Features

Ten read-only tools:

  • Articles (2): search_articles, get_article
  • Events (2): search_events, get_event
  • Autosuggest (4): suggest_concepts, suggest_categories, suggest_sources, suggest_locations
  • Trends (1): get_trending_concepts
  • Account (1): get_usage

Total: 10 tools, all marked readOnlyHint: true — nothing in this server writes to NewsAPI.ai or anywhere else.

What's deliberately out of scope for v1

Topic pages and saved searches, the analytics service (text categorization, sentiment of arbitrary text), story clustering, article mentions, aggregation result types (conceptAggr, timeAggr, …) and multi-tenant configuration.

Installation

Prerequisites

  • Node.js 22.14 or higher
  • A NewsAPI.ai account and API key, from newsapi.ai → Dashboard

Install from npm

bash
npm install -g @nubiia/mcp-newsapi

Install from source

bash
git clone https://github.com/nubiia-dev/mcp-newsapi.gitcd mcp-newsapinpm installnpm run build

Configuration

Environment Variables

VariableRequiredDescription
NEWSAPI_AI_API_KEYYesYour NewsAPI.ai API key (Dashboard). Secret — never commit it.
NEWSAPI_AI_MAX_TOKENS_PER_SESSIONNoMax NewsAPI.ai tokens this server may spend per session (until the server process restarts). Default 200.
bash
export NEWSAPI_AI_API_KEY=your_newsapi_ai_keyexport NEWSAPI_AI_MAX_TOKENS_PER_SESSION=200   # optional

Session token budget

The budget is per server process: each MCP client/server instance you start has its own counter, so two clients configured with 200 can together spend 400. It resets on restart.

Every call is charged its measured token cost (see the table above) before it is sent. When a call would exceed the remaining budget, the tool returns an error stating the remaining and total budget and how to raise it — and no request is sent to NewsAPI.ai. Free tools (suggest_*, get_usage) are never blocked. get_usage also reports the session budget (maxTokens, spentTokens, remainingTokens) next to your account balance. Calls the API rejects outright (4xx) are refunded; calls that fail after being accepted (including HTTP 200 {"error"} bodies) stay charged, because the API bills them. An invalid value (e.g. abc, -5) falls back to 200 with a warning on stderr; 0 disables all paid calls.

Claude Desktop Configuration

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

json
{  "mcpServers": {    "newsapi": {      "command": "npx",      "args": ["-y", "@nubiia/mcp-newsapi@latest"],      "env": {        "NEWSAPI_AI_API_KEY": "your_newsapi_ai_key",        "NEWSAPI_AI_MAX_TOKENS_PER_SESSION": "200"      }    }  }}

Or if installed from source:

json
{  "mcpServers": {    "newsapi": {      "command": "node",      "args": ["/path/to/mcp-newsapi/dist/index.js"],      "env": {        "NEWSAPI_AI_API_KEY": "your_newsapi_ai_key"      }    }  }}

Claude Code Configuration

bash
claude mcp add newsapi --env NEWSAPI_AI_API_KEY=your_newsapi_ai_key -- npx -y @nubiia/mcp-newsapi@latest

Troubleshooting

  • sh: mcp-newsapi: command not found when launching from inside this repo. If you start Claude Code (or another MCP client) from the cloned repository directory, npx @nubiia/mcp-newsapi resolves the local package.json instead of the published package, and the mcp-newsapi binary is not on the PATH. Pin the registry version with @latest (as in the examples above), or launch the client from another directory.

Tools

List parameters (lang, concept_uris, category_uris, source_uris, location_uris, ignore_source_uris, data_types, types, concept_types) accept either a single string or an array of strings: "lang": "spa" and "lang": ["spa"] are equivalent.

The recommended flow: suggest_* (free) → search_* → get_*.

suggest_concepts · read-only · free

Resolve a name ("Telefónica", "Pedro Sánchez") to a concept URI. Pass the uri as concept_uris to a search — far more precise than a keyword.

json
{ "prefix": "Telefónica", "types": ["org"], "count": 3 }

Searching for a company, person, place or organisation? Resolve it with suggest_concepts first and pass the returned uri as concept_uris. keyword is for free terms and topics and is noisy with common words: for example keyword: "Telefónica" in Spanish also matches the ordinary adjective "telefónica".

suggest_categories, suggest_sources, suggest_locations · read-only · free

Same idea for categories (news/Business), publications (bbc.co.uk) and places.

search_articles · read-only · 1 token

At least one of keyword, concept_uris, category_uris, source_uris, location_uris is required. Defaults: 10 results, newest first, duplicates skipped, last 31 days, 300-character bodies. Paginate with page; the response carries total and pages.

json
{  "concept_uris": ["http://en.wikipedia.org/wiki/Telefónica"],  "lang": ["spa"],  "date_start": "2026-10-01",  "count": 5}

Dates must be real YYYY-MM-DD dates, date_end must not precede date_start, and the archive rules above apply (allow_archive needs date_start, max 1 year).

Other options: keyword_loc, keyword_search_mode, ignore_keyword, ignore_source_uris, data_types (news/pr/blog), sort_by (date/rel/sourceImportance/cosSim), min_sentiment/max_sentiment, body_len, include_duplicates, allow_archive.

get_article · read-only · 1 token

One article by article_uri, with a longer body (body_len, default 3000).

search_events · read-only · 5 tokens

Events: clusters of articles about the same happening, with title, short summary, date, location, key concepts and article count. The right granularity for "what is happening with X". sort_by: "size" surfaces the biggest stories; min_articles_in_event filters noise.

get_event · read-only · 5 tokens (1 with include_articles)

One event by event_uri, or — with include_articles: true — the articles covering it.

get_trending_concepts · read-only · 10 tokens

People, organisations and places trending right now (last 2 days vs last 2 weeks) in news, social, pr or blog (blog trends may be unavailable on some plans, and the failed call is still billed). The priciest tool: call it sparingly.

get_usage · read-only · free

availableTokens, usedTokens, remainingTokens. Check it before a batch of searches.

Rate limiting

A local guard stops runaway agent loops before they drain the token budget:

Tool(s)Limit
search_articles, search_events, get_article, get_event30 req/min
get_trending_concepts20 req/min
suggest_*, get_usage120 req/min
Everything else (default)60 req/min

The API itself allows at most 5 simultaneous requests. 429/502/503/504 responses and connection-refused/DNS errors are retried with backoff; ambiguous failures (timeouts, connection resets) are not, because a metered request may already have been billed. Each attempt times out after 30 seconds.

Error messages

A 401/403 response includes an explanation, not just "Unauthorized": the key may be wrong/revoked, or the account may be out of tokens (get_usage tells you which). The API key is sent in the request body, never in a URL, and is redacted from every error message (HTTP, network and JSON-parse errors alike).

Development

bash
npm installnpm run buildnpm test              # runs entirely against mocks — no network, no API keynpm run test:coveragenpm run lint

See CONTRIBUTING.md for the full workflow and docs/api-notes.md for API behaviour verified against a live account.

License

MIT

Related

來源:README.md,提交 f505b8a

工具

10

search_articles

Search news articles (NewsAPI.ai / Event Registry). Cost: 1 token per call (measured live) when limited to the last 31 days (the default); querying the historical archive (allow_archive=true) costs extra tokens per year touched. At least one of keyword / concept_uris / category_uris / source_uris / location_uris is required. Prefer concept_uris (from suggest_concepts, which is free) over free-text keyword for any company, person, place or organisation: keyword is for free terms/topics and is noisy with common words (e.g. "Telefónica" also matches the Spanish adjective "telefónica"), so resolve entities with suggest_concepts first and pass concept_uris. Results are compact: title, truncated body (body_len, default 300 chars), url, source, date, sentiment. Defaults to 10 results, newest first, duplicates skipped. Paginate with `page`; check `total` and `pages` in the response.

輸入參數langpagecountkeywordsort_bybody_lendate_endsort_ascdata_typesdate_startkeyword_locsource_uris另有 10 個

get_article

Get one article by its URI (the `uri` returned by search_articles), with a longer body (body_len, default 3000 chars). Cost: 1 token per call. Use after search_articles when you need to read the article rather than just its headline.

輸入參數body_lenarticle_uri必填

search_events

Search news EVENTS: clusters of articles about the same real-world happening, with a title, summary, date, location, key concepts and article count. Best for "what is happening with X" — one event replaces dozens of near-duplicate articles. Cost: 5 tokens (measured live) per call within the last 31 days (default); allow_archive=true costs extra per year touched. At least one of keyword / concept_uris / category_uris / source_uris / location_uris is required. Defaults to 10 events, newest first; use sort_by="size" for the biggest stories. Use get_event for details on one. For companies, people, places or organisations, resolve them with suggest_concepts first and pass concept_uris; keyword is for free terms/topics and is noisy with common words (e.g. "Telefónica" also matches the Spanish adjective "telefónica").

輸入參數langpagecountkeywordsort_bydate_endsort_ascdate_startsource_urissummary_lenconcept_urisallow_archive另有 3 個

get_event

Get one event by URI (the `uri` from search_events, e.g. "eng-1234567"). Returns its summary info by default; set include_articles=true to instead list the articles covering it (paginated, default 5 per page, body truncated to body_len). Cost: 5 tokens (info view) or 1 (articles view), measured live.

輸入參數body_lenevent_uri必填articles_pagearticles_countinclude_articles

suggest_concepts

Resolve a name to concept URIs (people, organisations, places, Wikipedia topics). Pass the returned `uri` as concept_uris to search_articles / search_events — much more precise than a keyword. Does not consume search tokens. Sorted by prominence in the news; check `type` and `label` to pick the right homonym.

輸入參數langpagecounttypesprefix必填

suggest_categories

Resolve a topic name to category URIs (e.g. "news/Business", "dmoz/Sports/Soccer"). Pass the `uri` as category_uris to search_articles / search_events. Does not consume search tokens.

輸入參數pagecountprefix必填

suggest_sources

Resolve a publication name or domain to news source URIs (e.g. "bbc.co.uk"). Pass the `uri` as source_uris to search_articles / search_events. Does not consume search tokens.

輸入參數pagecountprefix必填data_types

suggest_locations

Resolve a city or country name to a location URI. Pass the `uri` as location_uris to search_articles / search_events to find news that happened there. Does not consume search tokens.

輸入參數langpagecountprefix必填

get_usage

Get the token budget of this NewsAPI.ai account: tokens available, used and remaining for the current period. Call it before a batch of searches (measured costs: search_articles and get_article 1 token, search_events and get_event info 5, get_trending_concepts 10). Free: does not consume tokens itself. Suggest tools are free too. Also reports this server’s session budget (NEWSAPI_AI_MAX_TOKENS_PER_SESSION, default 200): calls that would exceed it fail locally without reaching the API.

無需輸入參數。

版本歷史

2
  1. v1.0.2最新Oct 22, 2026
  2. v1.0.1Oct 19, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分