MCP News Feeds
An MCP server that collects articles from over 1100 RSS feeds distributed across 150+ countries, sourced from the community registry news-feed-list-of-countries.
Quick Start (uvx)
No installation needed — just configure your MCP client:
{
"mcpServers": {
"news-feeds": {
"command": "uvx",
"args": ["mcp-news"]
}
}
}
uvx will automatically download and run the server.
Installation from source
git clone https://github.com/benjaminmarchand/mcp-news.git
cd mcp-news
pip install -e .
Then configure your MCP client:
{
"mcpServers": {
"news-feeds": {
"command": "mcp-news"
}
}
}
Usage
The server runs on stdio and exposes 6 tools:
| Tool | Description |
|---|---|
news_feed |
Retrieves recent articles, filterable by country, time window, and limit |
news_fetch_article |
Returns the full, untruncated description of a specific article |
news_feed_countries |
Lists all available countries with the number of feeds per country |
news_feed_health |
Shows feed reliability stats: healthy, unhealthy, and dead feeds |
news_feed_invalidate_cache |
Clears the registry cache to force a reload |
Example Calls
Retrieve French news from the last 12 hours:
{
"name": "news_feed",
"arguments": {
"countries": ["France"],
"hours": 12,
"limit": 50
}
}
Get the full description of an article:
{
"name": "news_fetch_article",
"arguments": {
"url": "https://example.com/article/123"
}
}
Check feed health for a country:
{
"name": "news_feed_health",
"arguments": {
"country": "France"
}
}
List available countries:
{
"name": "news_feed_countries"
}
Response Truncation
Responses are automatically truncated to fit MCP client limits (~40,000 characters). When the payload is too large, descriptions are progressively shortened, then articles are dropped from the tail. Use news_fetch_article to retrieve the full description of a specific article.
Feed Health Tracking
The server tracks the success/failure history of each feed in ~/.mcp-news/feed_health.json. Feeds with 10 or more consecutive errors are automatically skipped during collection. Use the news_feed_health tool to inspect feed reliability.
Cache
The RSS feed registry is cached in ~/.mcp-news/cache/. The cache is valid for 24 hours and refreshes automatically when the remote registry changes (SHA-1 comparison).
To force a refresh:
export NEWS_FEED_BYPASS_CACHE=true
Command-Line Options
| Option | Description |
|---|---|
--verbose |
Enable verbose logging and write fetched articles to ~/.mcp-news/logs/ as timestamped JSON files |
Example with verbose mode:
{
"mcpServers": {
"news-feeds": {
"command": "uvx",
"args": ["mcp-news", "--verbose"]
}
}
}
Testing
pip install -e ".[dev]"
pytest tests/
Environment Variables
| Variable | Description |
|---|---|
NEWS_FEEDS_JSON_URL |
Override the feeds registry URL (default: raw GitHub URL from cyberbobjr/news-feed-list-of-countries) |
NEWS_FEED_BYPASS_CACHE |
Set to true to ignore cache and always re-download the registry |
MCP_NEWS_DATA_DIR |
Override the data directory (default: ~/.mcp-news) |
Metadata
Release files for mcp-news 1.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_news-1.1.2.tar.gz | 17.5 kB | Without provenance | Details for mcp_news-1.1.2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_news-1.1.2-py3-none-any.whl | Python 3 | none | any | Details for mcp_news-1.1.2-py3-none-any.whl |
Total release size: 31.0 kB
Release files / mcp_news-1.1.2.tar.gz
| Download URL | mcp_news-1.1.2.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2073a7af48843e441f8d24926ca0a971111eca21ca8efc282f3dbef2891f4cd3
|
|
BLAKE2b-256 checksum How to use checksums |
43d51fd9f910449f21c9a8ded7a3dc1715a332a435164162de6407716fedc10a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|
Release files / mcp_news-1.1.2-py3-none-any.whl
| Download URL | mcp_news-1.1.2-py3-none-any.whl |
|---|---|
| Size | 13.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7469d51e582850bd0b7c51d55658f4b03993691cc1b7481f0de6a1e9a676587c
|
|
BLAKE2b-256 checksum How to use checksums |
fdf9bcddb5d1b33db84e5234f6f74da7bf13f9da10fcd7de51d3d0ba6672a2a7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.0
|
Security for mcp-news 1.1.2
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.