MCP server for global news monitoring via WorldNewsAPI โ search, sentiment analysis, top headlines, and media monitoring for Swiss public institutions
Project description
๐จ๐ญ Part of the Swiss Public Data MCP Portfolio
๐ฐ news-monitor-mcp
MCP server for global news monitoring, media analysis and sentiment tracking via WorldNewsAPI โ full-text search across 150+ countries, German/English sentiment analysis, top headlines, GL briefings, newspaper front pages and geo-search. API key required.
Overview
news-monitor-mcp transforms any AI assistant into a proactive media intelligence agent. The server connects LLMs like Claude with global news data: from Swiss institutional reputation monitoring to weekly leadership briefings and trend detection across categories.
Source: WorldNewsAPI (worldnewsapi.com) โ the only freely available news API with German-language sentiment analysis.
API key required. Get a free key at worldnewsapi.com/console (1,000 calls/month free tier).
Anchor demo query: "How has the Schulamt Zรผrich been portrayed in the media over the last 30 days, and what is the overall sentiment?"
Features
- ๐ Full-text search โ 150+ countries, 50+ languages, Boolean queries and exact phrase matching
- ๐ Sentiment analysis โ German and English only (WorldNewsAPI unique feature); scores from โ1 (negative) to +1 (positive)
- ๐ฐ Top headlines โ clustered by country and language, ranked by number of sources reporting
- ๐ Media briefing โ multi-topic weekly report with sentiment overview for GL / leadership updates
- ๐๏ธ Newspaper front pages โ digital covers from 6,000+ publications in 125 countries
- ๐ก Trend radar โ category-based trend detection (politics, technology, education, โฆ) per country
- ๐ Geo-search โ location-specific news (Zรผrich, Bern, Basel, Kanton Zรผrich, โฆ)
- โ๏ธ Dual transport โ stdio for Claude Desktop, Streamable HTTP for cloud deployment
| # | Tool | Description |
|---|---|---|
| 1 | news_search |
Full-text news search in 150+ countries |
| 2 | news_top_headlines |
Top headlines by country and language |
| 3 | news_sentiment_monitor |
Sentiment analysis for entity or topic |
| 4 | news_media_briefing |
Multi-topic weekly briefing report |
| 5 | news_retrieve_article |
Fetch full article by ID |
| 6 | news_search_sources |
Find available news sources by name/country |
| 7 | news_front_pages |
Digital newspaper front pages |
| 8 | news_trend_radar |
Category-based trend detection per country |
| 9 | news_geo_search |
Location-specific news search |
Data Sources
| Source | API Type | Content |
|---|---|---|
| WorldNewsAPI | REST JSON | 150+ countries, 50+ languages, full text, sentiment |
Prerequisites
- Python 3.11+
uvorpip- API key from worldnewsapi.com/console (free tier available)
Installation
# Recommended: uvx (no install step needed)
uvx news-monitor-mcp
# Alternative: pip
pip install news-monitor-mcp
Quickstart
# Start the server (stdio mode for Claude Desktop)
WORLD_NEWS_API_KEY=your-key uvx news-monitor-mcp
Try it immediately in Claude Desktop:
"Show me the top news from Switzerland today" "How is the Schulamt Zรผrich covered in German-language media this month?" "Create a media briefing on: Volksschule Zรผrich, AI in education, school digitalisation"
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
WORLD_NEWS_API_KEY |
โ | Required. API key from worldnewsapi.com |
MCP_TRANSPORT |
stdio |
Transport: stdio or streamable_http |
MCP_PORT |
8000 |
Port for HTTP transport |
Claude Desktop Configuration
{
"mcpServers": {
"news-monitor": {
"command": "uvx",
"args": ["news-monitor-mcp"],
"env": {
"WORLD_NEWS_API_KEY": "your-api-key-here"
}
}
}
}
Config file locations:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
After restarting Claude Desktop, all tools are available. Example queries:
- "Show me the top Swiss news today"
- "What is the media sentiment on AI in education this month?"
- "Create a weekly briefing for: Schulamt Zรผrich, Volksschule, KI Bildung"
- "Find all German-language articles about school digitalisation in the last 14 days"
- "Show me the front pages of Swiss newspapers today"
Cloud Deployment (Streamable HTTP)
For use via claude.ai in the browser (e.g. on managed workstations without local software):
Render.com (recommended):
- Push/fork the repository to GitHub
- On render.com: New Web Service โ connect GitHub repo
- Set
WORLD_NEWS_API_KEYin the Render dashboard environment variables - In claude.ai under Settings โ MCP Servers, add:
https://your-app.onrender.com/mcp
# Docker / local HTTP mode
WORLD_NEWS_API_KEY=your-key MCP_TRANSPORT=streamable_http MCP_PORT=8000 python -m news_monitor_mcp.server
Architecture
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Claude / AI โโโโโโถโ News Monitor MCP โโโโโโถโ WorldNewsAPI โ
โ (MCP Host) โโโโโโโ (MCP Server) โโโโโโโ REST JSON API โ
โโโโโโโโโโโโโโโโโโโ โ โ โ 150+ countries โ
โ 9 Tools โ โ 50+ languages โ
โ Stdio | Streamable HTTP โ โ Sentiment DE/EN โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Project Structure
news-monitor-mcp/
โโโ src/
โ โโโ news_monitor_mcp/
โ โโโ __init__.py
โ โโโ server.py # All 9 tools
โโโ tests/
โ โโโ __init__.py
โ โโโ test_server.py # 20 tests (unit + live)
โโโ pyproject.toml
โโโ CHANGELOG.md
โโโ CONTRIBUTING.md
โโโ LICENSE
โโโ README.md # This file (English)
โโโ README.de.md # German version
Testing
# Unit tests (no API key required)
PYTHONPATH=src pytest tests/ -m "not live"
# Integration tests (live API calls, API key required)
PYTHONPATH=src pytest tests/ -m "live"
Example Use Cases
Schulamt / Institutional Communication
"How has the Schulamt Zรผrich been portrayed in media over the last 30 days?"
โ news_sentiment_monitor(entity="Schulamt Zรผrich", language="de", days_back=30)
"Create a weekly media briefing for leadership"
โ news_media_briefing(topics=["Volksschule Zรผrich", "KI Bildung", "Schuldigitalisierung"])
"What are Swiss media reporting on school digitalisation?"
โ news_search(query="Schuldigitalisierung", language="de", source_country="ch")
KI-Fachgruppe / AI Working Group
"What are the current tech trends in Swiss press this week?"
โ news_trend_radar(category="technology", source_country="ch", language="de")
"How are AI developments in education covered internationally?"
โ news_search(query="AI education classroom", language="en", number=20)
"Compare Swiss and German media coverage of AI regulation"
โ news_search(query="KI Regulierung", source_country="ch", language="de")
โ news_search(query="KI Regulierung", source_country="de", language="de")
City Administration / Location Research
"What is being reported about Zรผrich school infrastructure?"
โ news_geo_search(location="Zรผrich", query="Schule")
"Show today's front pages of Swiss newspapers"
โ news_front_pages(source_country="ch")
Sentiment Analysis
WorldNewsAPI offers German-language sentiment analysis โ rare among news APIs:
| Score | Label | Meaning |
|---|---|---|
| > 0.3 | positiv ๐ | Positive coverage |
| โ0.3 to 0.3 | neutral ๐ | Neutral / factual coverage |
| < โ0.3 | negativ ๐ | Critical / negative coverage |
โ ๏ธ Sentiment is only available for German (de) and English (en).
Known Limitations
- Sentiment analysis: Only German (
de) and English (en) โ no French or Italian - Free tier: 1,000 API calls/month, max 10 articles per call (paid plans: up to 100)
- Historical data: Free tier limited to 30 days; paid plans offer extended history
- Source coverage: Swiss regional media may be less well-indexed than national outlets
Synergies with Other MCP Servers
news-monitor-mcp can be combined with other servers in the portfolio:
| Combination | Use Case |
|---|---|
+ fedlex-mcp |
Law meets discourse: legal framework + media coverage |
+ global-education-mcp |
OECD stats + current media context |
+ srgssr-mcp |
Swiss public media + international news comparison |
+ swiss-environment-mcp |
Environmental data + media reporting |
+ swiss-statistics-mcp |
BFS statistics + current media narrative |
+ zurich-opendata-mcp |
City data + local media coverage |
Changelog
See CHANGELOG.md
License
MIT License โ see LICENSE
Author
Hayal Oezkan ยท malkreide
Credits & Related Projects
- Data: WorldNewsAPI โ global news data with sentiment analysis
- Protocol: Model Context Protocol โ Anthropic / Linux Foundation
- Related: swiss-culture-mcp โ MCP server for Swiss cultural heritage data
- Related: srgssr-mcp โ MCP server for SRG SSR Swiss public media
- Portfolio: Swiss Public Data MCP Portfolio
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file news_monitor_mcp-0.2.0.tar.gz.
File metadata
- Download URL: news_monitor_mcp-0.2.0.tar.gz
- Upload date:
- Size: 28.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4fa81443ff327b0e7977ad5cded87e9942ff0f53f6b265cc90e7ad058f776813
|
|
| MD5 |
6415c11a4773ac07c0a1b605afd1791b
|
|
| BLAKE2b-256 |
e673beba4d9cdeffd53d03d6b3588e4f028c25c7a5d0441c8678083d7bb40f3d
|
Provenance
The following attestation bundles were made for news_monitor_mcp-0.2.0.tar.gz:
Publisher:
publish.yml on malkreide/news-monitor-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
news_monitor_mcp-0.2.0.tar.gz -
Subject digest:
4fa81443ff327b0e7977ad5cded87e9942ff0f53f6b265cc90e7ad058f776813 - Sigstore transparency entry: 1155216801
- Sigstore integration time:
-
Permalink:
malkreide/news-monitor-mcp@43da14cb76a79fa4ee1cfddacc5d31787524224d -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/malkreide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@43da14cb76a79fa4ee1cfddacc5d31787524224d -
Trigger Event:
push
-
Statement type:
File details
Details for the file news_monitor_mcp-0.2.0-py3-none-any.whl.
File metadata
- Download URL: news_monitor_mcp-0.2.0-py3-none-any.whl
- Upload date:
- Size: 19.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3322cfd80538ac25f35a50873a1ef7873bc88e706e236fce0b7a256ebebb1918
|
|
| MD5 |
7a3335abffa5ea29386ac2c94c8192bc
|
|
| BLAKE2b-256 |
94a85b654e6b0311add667e3fab8992a1a61b4b29937aafba2ea230cebe325b2
|
Provenance
The following attestation bundles were made for news_monitor_mcp-0.2.0-py3-none-any.whl:
Publisher:
publish.yml on malkreide/news-monitor-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
news_monitor_mcp-0.2.0-py3-none-any.whl -
Subject digest:
3322cfd80538ac25f35a50873a1ef7873bc88e706e236fce0b7a256ebebb1918 - Sigstore transparency entry: 1155216802
- Sigstore integration time:
-
Permalink:
malkreide/news-monitor-mcp@43da14cb76a79fa4ee1cfddacc5d31787524224d -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/malkreide
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@43da14cb76a79fa4ee1cfddacc5d31787524224d -
Trigger Event:
push
-
Statement type: