Every tool uses
POST under the hood even though News API also exposes a
GET variant of each endpoint — POST keeps API keys and queries out of access
logs, avoids URL-length limits, and lets multi-value filters be sent as native
JSON arrays.
The server is open source. Source code, changelog, and issue tracker:
Newscatcher/news-mcp.
Before you start
- News API key from platform.newscatcherapi.com/newsapi or you can use your existing API Key
- MCP-compatible client (Claude, Cursor, VS Code, Windsurf, Zed, Warp, Gemini CLI, Roo Code, or any client that supports remote MCP)
Authentication
The MCP server resolves your API key from multiple sources, in this order (first match wins):api_tokenparameter set on the tool call itself?apiToken=YOUR_KEYURL query parameter — used by some Agents which have no field for custom request headersx-api-tokenHTTP request header — recommended for every client that supports custom headersAuthorization: Bearer <key>HTTP request headerNEWS_API_KEYenvironment variable on the server host (self-hosted only)
x-api-token header). Claude.ai
and Claude Desktop use option 2 (the apiToken query parameter) through their
connector URL. check_health
is the only tool that does not require authentication — it’s a local liveness
ping and never calls News API.
To rotate your key, update your client configuration with the new key and
restart the client.
When you pass the key through a
--header flag (Claude Code, mcp-remote),
use the header-name:value format with no space after the colon — for
example x-api-token:YOUR_NEWS_API_KEY. A space or a missing colon is the
most common reason a connection silently fails to authenticate.Connect to Claude
- Claude.ai
- Claude Desktop
- Claude Code
1
Open connectors
Go to claude.ai/customize/connectors. Click + and select Add custom connector.
2
Configure connection
Fill in the Add custom connector dialog:
- Name:
News API - Remote MCP server URL:
3
Add and verify
Click Add. Verify that News API appears under Web in your connectors list.
4
Test connection
Open a new chat and ask Claude to run
check_health. This tool needs no API key, so a successful response confirms the connection itself works — isolating connection problems from key problems.Then ask for get_subscription. That is the first call that actually uses your key, and it returns your plan, remaining calls, concurrency limit, and how far back you can search.Finally, try a real query. Name a time window, a result count, and the fields you want, so the response stays a readable size: “Get the latest headlines about renewable energy from the last 2 days, 10 results, just title, link, date and source.”Connect to other clients
- Cursor
- VS Code
- Windsurf
- Zed
- Warp
- Gemini CLI
- Roo Code
- Other clients
Replace
YOUR_NEWS_API_KEY with your key. Do not share it or commit it to
version control.Available tools
Each tool maps to a News API endpoint. For request and response schemas, see the API reference.“Latest”/“most recent” needs
sort_by="date" explicitly — every tool that
takes sort_by defaults to "relevancy", not "date". There is a hard cap
of 10,000 articles per query regardless of pagination; call
get_aggregation_count on a broad or undated query first and time-chunk the
date range if the count is high.What you get by default
The MCP ships instructions that steer the assistant toward sensible parameters for whatever you asked, so in practice you rarely see the bare defaults. This table is the floor rather than the typical experience: it’s what you get when neither you nor the assistant sets the parameter, whether the value comes from the MCP or from News API itself. That’s what you need when a result comes back empty or in a shape you didn’t expect.
Two more limits worth knowing:
- There is a hard cap of 10,000 articles per query, regardless of
pagination. If
total_hitsreads exactly10000, the real count is likely higher — narrow the query or split the date range. See Retrieve more than 10k articles. - The upstream request timeout is 30 seconds. A
408means: narrow the query, shorten the date range, or reducepage_size.
Clustered results by default
search_articles and get_latest_headlines return grouped results unless you
ask for a flat list. Their defaults:
Clustering regroups results, it does not shrink them: every matched article
lands in a cluster and none are dropped, so one heavily syndicated story can
otherwise fill a whole page with near-identical coverage.
cluster_top_n_articles trims each cluster’s articles list while leaving
cluster_size intact, so you always see how wide a story’s coverage actually
is. Pass null for no cap.
Turn clustering off when you want the articles themselves rather than grouped
topic coverage — tracking a single outlet, checking whether a specific source
covered a story, or paginating through a flat list:
Other tools are unaffected.
get_breaking_news returns story clusters with
its own API-native top_n_articles parameter, and search_by_author,
search_by_link, and get_aggregation_count remain unclustered with a
default page_size of 100.Response fields
search_articles, get_latest_headlines, get_breaking_news,
search_by_author, and search_by_link accept a fields parameter that trims
each article to the keys you name. News API returns around 40 fields per
article and the content body alone can push a 30-article call past 300 KB, so
these tools default to a lean set instead:
fields explicitly as an empty list
([]) or as null. Leaving fields out of the call does not do this — an
omitted fields applies the lean default like any other call. Only an explicit
[] or null opts out.
Field names are validated against the real article schema before the request
goes out, so a typo returns a corrective error instead of silently disappearing
from the response. NLP subfields need a dotted path — nlp.theme,
nlp.sentiment, nlp.ner_ORG — or pass nlp alone for the whole block. There
is no top-level summary field: use description for the short lede or
nlp.summary for the AI-generated summary.
For the boolean toggles —
clustering_enabled, exclude_duplicates,
include_nlp_data, include_translation_fields — an explicit null means
the same as omitting the parameter: the tool’s own default applies. fields
and cluster_top_n_articles are the two exceptions, where null carries its
own meaning (all fields, and no per-cluster cap).Response size cap
Article-returning tools (search_articles, get_latest_headlines,
get_breaking_news, search_by_author) cap each response at 250,000 bytes.
A broad request — fields=[] with a large page_size and no filters — would
otherwise return a payload big enough to swamp the client’s context window.
The cap drops trailing articles until the response fits; it never touches the
content of the articles it keeps, and it does not fire on responses that
already fit, which is nearly all of them. When it does trim, the response
carries a response_capped block:
page_size, or page through the results.
Keeping responses small
The cap is a backstop, not a budget. Every tool result lands in your client’s context window, and a response that fits comfortably under 250,000 bytes can still crowd out the conversation around it. The MCP already trims each article to the lean field set above, so the fullcontent body and the large link
arrays never cross the wire. What it does not trim is how many articles come
back.
Three levers, in order of impact:
page_size— the big one. 10 to 25 is usually right for an answer you are going to read, against a default of 50.clustering_enabled=false— a flat list with no cluster wrapper, when you want the articles rather than the grouping.include_nlp_data=false— drops the per-articlenlpblock when you are not using summaries, themes, sentiment, or entities.
fields list to narrow the default set further, or
widen it when you need something it leaves out — description, content,
rank, or the sentiment and entity fields under nlp.
None of this has to be named explicitly. Say what you want in the prompt and
the client sets the parameters for you: “20 results, just title, link, date and
source, skip the NLP data.”
Language and country codes
lang and countries take two-letter codes, never full names. This is the
single most common cause of rejected requests. The MCP checks both before the
call reaches News API and tells you what went wrong:
lang— NewsCatcher two-letter language codes:en,es,de. Chinese iscn(China) ortw(Taiwan); the ISO codezhis not accepted.countries— ISO 3166-1 alpha-2:US,GB,DE. The United Kingdom isGB, notUK, and three-letter codes are not accepted.
Quota and rate limits
Every tool call exceptcheck_health is one billed News API call against your
plan quota. An assistant working through an open-ended question can easily fire
ten or twenty calls in a minute — one to gauge volume, several to page through
results, more to follow up — so the meter moves faster here than it does with
hand-written API calls.
Ask for get_subscription at any point to see where you stand:
remaining_calls— calls left in the current billing period.concurrent_calls— how many requests you can have in flight at once. Going over returns429; back off and retry rather than repeating the request immediately.historical_days— how far back your plan can search, which also tells the assistant which date ranges are worth trying at all.
Example prompts
Prompts work best when they name three things: a time window, a result count, and the fields you want back. These are written for Claude but work in any client. Track coverage of a company or brandWhat’s been published about Siemens Energy in the last 3 days? English only, 20 results, just title, link, date and source.See which stories got the widest pickup
Find coverage of the EU AI Act between 2026-08-20 and 2026-08-27, cluster it, and show me the five biggest clusters with their size and one representative headline each.Read the tone of recent coverage
Search for articles about Ryanair from the last 7 days with NLP data on, 50 results, then list the 10 with the most negative content sentiment and link each one.News API sorts by relevancy, date, or rank — not by sentiment — so the assistant fetches a page and ranks it itself. Keep the result count modest for this one, or filter server-side with
content_sentiment_max.
Follow a person or organization as an entity
Find articles from the last 14 days that name Christine Lagarde as a person entity, not just ones that mention the words. 25 results, title, link, date and source.See Search by entity for what entity matching does differently. Measure how a topic trends over time
Give me daily article counts for “electric vehicle tariffs” from 2026-06-01 to 2026-08-31, then tell me which week spiked and what was behind it.Catch what is breaking right now
What are the biggest breaking stories right now? Headlines and links only.Check whether a publisher is indexed
Do you index reuters.com, ft.com and nikkei.com? Show me what coverage you have for each.Pull details for an article you already have
Here’s a URL: https://example.com/some-article. Pull it and tell me the byline, publish date and word count.
Troubleshooting
Tools not appearing
Tools not appearing
Restart your MCP client after updating the configuration. Most clients load
MCP tools on startup and do not detect changes until restarted. A connector
added through the Claude.ai or Claude Desktop Connectors screen needs no
restart: open a new chat.
Connection refused or timeout
Connection refused or timeout
Verify your API key is valid by calling an authenticated endpoint:If this returns a
401 error, your key is invalid. Check or reissue it at
platform.newscatcherapi.com.Tool calls returning errors
Tool calls returning errors
Tools return a JSON string on success — compact for the article and source
tools, pretty-printed for
get_subscription and check_health. A validation
or upstream API error comes back as a string starting with Error: ...; an
unhandled exception comes back as Unexpected error: .... The string names
the specific reason.Both are returned as a successful tool result — the MCP isError flag
stays false — so your client shows an ordinary, completed tool call and the
assistant may describe the failure as though it were data. When an answer
looks wrong, open the raw tool output and read the returned string.401 even though the key is correct
401 even though the key is correct
Check whether the configured server URL still carries
?apiToken=.... The
query parameter takes priority over the x-api-token header, so an old
parameter silently wins over a newly added header. See
Authentication.No results, or only very recent results
No results, or only very recent results
Queries default to the last 7 days. If you asked about something older
and got nothing back, add an explicit range — “from 2026-03-01 to
2026-03-31” — and check
historical_days from get_subscription to confirm
your plan reaches that far. See
What you get by default.429 errors or stalled requests
429 errors or stalled requests
You are over your plan’s concurrency limit. Call
get_subscription and read
concurrent_calls for the ceiling, then back off and retry rather than
repeating the request immediately. See
Quota and rate limits.Fewer results than expected
Fewer results than expected
Three separate limits can shorten a response. Clustered results show at most
cluster_top_n_articles articles per cluster (default 3) — cluster_size
reports the true total. The response size
cap drops trailing articles from oversized payloads and
adds a response_capped block when it does. And News API returns a maximum
of 10,000 articles per query regardless of pagination.Response too large, or the client truncated the result
Response too large, or the client truncated the result
search_articles and get_latest_headlines default to 50 articles per call,
wrapped in clusters, with the NLP block populated. Ask for fewer — “10
results, just title, link, date and source” — or set page_size, fields,
clustering_enabled=false and include_nlp_data=false directly. See
Keeping responses small.Client does not support remote MCP
Client does not support remote MCP
Use
mcp-remote to proxy the connection. Install Node.js, then use the
npx configuration shown in the Other clients tab. Claude Desktop is
not one of these clients: its Connectors screen takes the remote URL
directly (see Connect to Claude).See also
API reference
Full endpoint documentation and schemas
Quickstart
Make your first News API call in under five minutes
Advanced querying
Boolean operators, proximity search, and query syntax
Build search queries
Get better results from News API searches
GitHub repository
Server source code, changelog, and issues

