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
- 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):?apiToken=YOUR_KEYURL query parameter — used by Claude.ai because its connector UI does not support 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
x-api-token header). Claude.ai
uses option 1 (the apiToken query parameter) automatically. 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 try a real query, for example: “Get the latest headlines about renewable energy, limit 10”.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.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.
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.
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 it at
newscatcherapi.com/news-api.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: .... Check the
returned string for the specific reason.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.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.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

