Skip to main content

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

Version License: MIT Python 3.11+ MCP Data Source

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.

๐Ÿ‡ฉ๐Ÿ‡ช Deutsche Version


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


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):

  1. Push/fork the repository to GitHub
  2. On render.com: New Web Service โ†’ connect GitHub repo
  3. Set WORLD_NEWS_API_KEY in the Render dashboard environment variables
  4. 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

news_monitor_mcp-0.2.0.tar.gz (28.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

news_monitor_mcp-0.2.0-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

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

Hashes for news_monitor_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 4fa81443ff327b0e7977ad5cded87e9942ff0f53f6b265cc90e7ad058f776813
MD5 6415c11a4773ac07c0a1b605afd1791b
BLAKE2b-256 e673beba4d9cdeffd53d03d6b3588e4f028c25c7a5d0441c8678083d7bb40f3d

See more details on using hashes here.

Provenance

The following attestation bundles were made for news_monitor_mcp-0.2.0.tar.gz:

Publisher: publish.yml on malkreide/news-monitor-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file news_monitor_mcp-0.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for news_monitor_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 3322cfd80538ac25f35a50873a1ef7873bc88e706e236fce0b7a256ebebb1918
MD5 7a3335abffa5ea29386ac2c94c8192bc
BLAKE2b-256 94a85b654e6b0311add667e3fab8992a1a61b4b29937aafba2ea230cebe325b2

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page