Skip to main content
The MCP server exposes News API tools to any MCP-compatible client. It handles authentication, request formatting, and response formatting so the client can search articles, pull latest headlines and breaking news, look up an author’s work, resolve articles by URL or ID, browse sources, get aggregation counts, and check subscription/quota status. 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):
  1. ?apiToken=YOUR_KEY URL query parameter — used by Claude.ai because its connector UI does not support custom request headers
  2. x-api-token HTTP request header — recommended for every client that supports custom headers
  3. Authorization: Bearer <key> HTTP request header
  4. NEWS_API_KEY environment variable on the server host
Most client configurations use option 2 (the 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.
Configure only one authentication method per client. If a request carries ?apiToken=, it wins over an x-api-token or Authorization header sent alongside it — and the key seen on the session’s first request is reused for the rest of that session. A stale key in the URL keeps returning 401 even when the header holds a valid one.
Your configuration file contains your API key in plain text. Treat it as a secret and do not share it or commit it to version control.

Connect to Claude

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

Install in CursorOr add to ~/.cursor/mcp.json manually:
Restart Cursor after saving.
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:
With clustering on, the exact article or source you are after may fall outside the top three of its cluster and never reach the response.
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:
To get the full article object, pass 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:
If you see it, narrow the query, name the fields you actually need instead of requesting the full object, lower page_size, or page through the results.

Troubleshooting

Restart your MCP client after updating the configuration. Most clients load MCP tools on startup and do not detect changes until restarted.
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.
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.
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.
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