Skip to content

pranciskus/newsmcp

Repository files navigation

NewsMCP — World news for AI agents

newsmcp.io  •  integrations  •  REST API

npm @newsmcp/server npm @newsmcp/openclaw MIT


Real-time news events, clustered by AI from hundreds of sources, classified by topic and geography, ranked by importance.

Free. No API key. One command to install.

Coverage

12 topicspolitics economy technology science health environment sports culture crime military education society

30 regions — 6 continents and 24 countries. Filter by europe, asia, united-states, germany, japan, ukraine, and more.

Hundreds of sources — Articles clustered into events in real-time, ranked by source count and impact score.

Integrations

Platform Package Install
Claude Desktop @newsmcp/server MCP config
Claude Code plugin newsmcp /plugin install
Claude Code MCP @newsmcp/server claude mcp add
Cursor @newsmcp/server MCP config
Windsurf @newsmcp/server MCP config
OpenAI Codex @newsmcp/server codex mcp add
Gemini CLI @newsmcp/server settings.json
OpenCode @newsmcp/server opencode mcp add
Smithery @newsmcp/server npx @smithery/cli
OpenClaw plugin @newsmcp/openclaw openclaw plugins install
OpenClaw skill newsmcp-skill clawhub install
REST API curl https://newsmcp.io/v1/news/

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "newsmcp": {
      "command": "npx",
      "args": ["-y", "@newsmcp/server"]
    }
  }
}

Claude Code Plugin

/plugin marketplace add pranciskus/newsmcp
/plugin install newsmcp

Claude Code MCP

claude mcp add newsmcp -- npx -y @newsmcp/server

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "newsmcp": {
      "command": "npx",
      "args": ["-y", "@newsmcp/server"]
    }
  }
}

Windsurf

Add to MCP config:

{
  "mcpServers": {
    "newsmcp": {
      "command": "npx",
      "args": ["-y", "@newsmcp/server"]
    }
  }
}

OpenAI Codex

codex mcp add newsmcp -- npx -y @newsmcp/server

Or add to ~/.codex/config.toml:

[mcp_servers.newsmcp]
command = "npx"
args = ["-y", "@newsmcp/server"]

Gemini CLI

Add to ~/.gemini/settings.json (or project-local .gemini/settings.json):

{
  "mcpServers": {
    "newsmcp": {
      "command": "npx",
      "args": ["-y", "@newsmcp/server"]
    }
  }
}

OpenCode

opencode mcp add

Or add to ~/.config/opencode/opencode.json (or project-local .opencode/opencode.json):

{
  "mcp": {
    "newsmcp": {
      "type": "local",
      "enabled": true,
      "command": ["npx", "-y", "@newsmcp/server"]
    }
  }
}

Smithery

npx -y @smithery/cli install @newsmcp/server --client claude

OpenClaw Plugin

openclaw plugins install @newsmcp/openclaw

No configuration needed — works out of the box. See @newsmcp/openclaw for options.

OpenClaw Skill

clawhub install newsmcp-skill

Lightweight alternative — a single SKILL.md that teaches the agent to call the REST API via curl. No dependencies. See newsmcp-skill on ClawHub.

MCP Tools

Four tools. That's the interface.

get_news

Top events happening right now. Filter by topic, region, time window.

Parameter Type Default Description
topics string Comma-separated topic slugs: politics,technology
geo string Comma-separated region slugs: europe,lithuania
hours number 24 Time window in hours (1–168)
page number 1 Page number
per_page number 20 Results per page (max 50)
order_by string -sources_count Sort field (see below)

Sort options: -sources_count, -impact_score, -last_seen_at, -entries_count (prefix - for descending)

get_news_detail

Full details on a single event — all source articles, AI-generated context, impact analysis, entity tags.

Parameter Type Description
event_id string Event UUID from get_news results

get_topics

Lists every topic category available for filtering. No parameters.

crime culture economy education environment health military politics science society sports technology

get_regions

Lists every geographic region — 6 continents and 24 countries — available for filtering. No parameters.

How agents use it

Prompt What happens
"What's happening in the world?" get_news with defaults — top 20 events by source coverage
"Any tech news from Europe today?" get_news with topics=technology, geo=europe, hours=24
"Tell me more about that earthquake" get_news_detail with the event UUID
"What topics can I filter by?" get_topics — returns the full list
"Show me news from Asia this week" get_news with geo=asia, hours=168

REST API

Don't need MCP? Hit the endpoints directly. Same data, same filters.

Base URL: https://newsmcp.io/v1

Method Endpoint Description
GET /news/ List news events with optional filtering
GET /news/{id}/ Single event with full article list
GET /news/topics/ All topic categories
GET /news/regions/ All geographic regions

Query parameters

All parameters are optional. Combine freely.

# Latest events
curl -s https://newsmcp.io/v1/news/ | jq

# Filter by topic
curl -s "https://newsmcp.io/v1/news/?topics=technology" | jq

# Filter by region
curl -s "https://newsmcp.io/v1/news/?geo=europe" | jq

# Last 12 hours, sorted by impact
curl -s "https://newsmcp.io/v1/news/?hours=12&order_by=-impact_score" | jq

# Combine everything
curl -s "https://newsmcp.io/v1/news/?topics=politics&geo=united+states&hours=48&per_page=5" | jq

Response format

{
  "events": [
    {
      "id": "cc3428ab-2ada-41bb-86ab-833fd39ffd8d",
      "summary": "Event description with AI-generated context...",
      "topics": ["technology", "politics"],
      "geo": ["united states"],
      "entries_count": 86,
      "sources_count": 45,
      "first_seen_at": "2026-02-15T04:06:41.728Z",
      "last_seen_at": "2026-03-03T05:00:30Z",
      "impact_score": 8,
      "entries": [
        {
          "title": "Article headline",
          "url": "https://source.com/article",
          "domain": "source.com",
          "published_at": "2026-03-03T05:00:30Z"
        }
      ]
    }
  ],
  "total": 142,
  "page": 1,
  "per_page": 20
}

How it works

  1. Collect — Hundreds of news sources are scraped continuously
  2. Cluster — Articles about the same event are grouped using vector embeddings
  3. Classify — Each event is tagged with topics and geographic entities
  4. Rank — Events are scored by source count, impact, and recency
  5. Serve — Clean JSON via REST API and MCP server

Events update in real-time as new articles appear. The clustering AI merges duplicate coverage automatically.

Configuration

Point to a different API backend:

{
  "mcpServers": {
    "newsmcp": {
      "command": "npx",
      "args": ["-y", "@newsmcp/server"],
      "env": {
        "NEWS_API_BASE_URL": "https://your-api.example.com/v1"
      }
    }
  }
}

Releases (GitHub Actions + OIDC)

Publishing is tag-driven via .github/workflows/release.yml:

  • Trigger: push tag v*.*.*
  • Publishes @newsmcp/server and @newsmcp/openclaw to npm via Trusted Publishing (OIDC)
  • Publishes MCP metadata with mcp-publisher login github-oidc
  • Creates a GitHub release with generated notes

One-time setup

  1. npm package settings: For @newsmcp/server and @newsmcp/openclaw, add a Trusted Publisher pointing to:
    • Owner: pranciskus
    • Repository: newsmcp
    • Workflow file: .github/workflows/release.yml
    • Environment: leave empty (unless you intentionally use one)
  2. MCP Registry: Ensure the repo/package is authorized for GitHub OIDC publishing in MCP Registry.

Release flow

  1. Bump versions in:
    • packages/mcp-server/package.json
    • packages/openclaw-plugin/package.json
    • packages/mcp-server/server.json
    • package-lock.json
  2. Commit and push to main
  3. Create and push tag:
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.Z

The workflow does the publish and GitHub release automatically.

Repository structure

newsmcp/
├── .github/workflows/       # CI/CD workflows (release automation)
├── .claude-plugin/          # Marketplace manifest
├── packages/
│   ├── mcp-server/          # @newsmcp/server — MCP server (npm)
│   ├── claude-code-plugin/  # newsmcp — Claude Code plugin
│   ├── openclaw-plugin/     # @newsmcp/openclaw — OpenClaw plugin (npm)
│   └── skill/               # newsmcp-skill — OpenClaw skill (ClawHub)
├── publish.sh                # Build, test, publish workflow
├── README.md
└── LICENSE

License

MIT