DEV Community

Creeta
Creeta

Posted on • Originally published at news.creeta.com

World Monitor hit 67k stars — here's what the MCP endpoint

World Monitor crossed roughly 67k GitHub stars in July 2026 — but the number that matters to builders isn't the star count, it's the machine-readable surface underneath it.

What World Monitor Offers at 67k Stars: Feed Scope and the Bot Surface

World Monitor is an open-source, real-time global intelligence dashboard by solo developer Elie Habib (@koala73) that fuses live event feeds into a WebGL globe — and, more usefully for agents, an MCP endpoint. The repo reports ~66–67k stars, 10k+ forks, and 137 open issues as of July 2026 .

The bot surface is the draw here:

  • Feeds & layers: 500+ curated news feeds and 56 toggleable map layers — 86 submarine cables, 13 maritime chokepoints with live AIS counts, 313 AI datacenters, 220+ military bases, and 196 ranked countries .
  • MCP endpoint at /mcp over Streamable HTTP, spanning ~18 tool domains: conflict events, country risk, maritime, aviation, energy, macro, disasters, health signals, situation analysis, and forecasts .
  • Discovery & REST: /.well-known/mcp/server-card.json, /openapi.yaml, and /llms.txt, plus a REST API (~193 operations, OpenAPI 3.1) where one OAuth key reaches 60–65+ providers with JMESPath projection .

Source is AGPL-3.0; thin-client SDKs (JS, Python, Ruby, Go) are MIT .

From Bare npm to Tauri Sidecar: Scoping Your Commitment

World Monitor runs in three deployment modes, and picking the right one before you clone saves hours. Mode A (app-only dev) is a static browser build with zero backend commitment; Mode B (full production sidecar) adds server-side aggregation for near-real-time delivery; Mode C (Tauri 2 desktop) bundles everything into an offline-capable native binary. Match the mode to whether you want a quick look, a 24/7 service, or an air-gapped install.

Mode Requirements Refresh / Payoff
A — App-only dev git clone + npm install + npm run dev; zero env vars; no upstream registrations All 56 layers visible ; 5–15 min refresh
B — Production sidecar Node.js 22+, Docker/Podman, Redis, Railway-style relay; RELAY_SHARED_SECRET, REDIS_PASSWORD, REDIS_TOKEN Near-real-time refresh, circuit-breaker and stale-on-error delivery
C — Tauri 2 desktop Rust + local Node.js sidecar; Go 1.21+ for contributors; Windows/macOS/Linux + Android TV Native binary for offline/air-gapped use

Higher-value layers are credential-gated, and World Monitor hides an unavailable layer rather than looping on failure . Baseline Mode A shows everything without keys, but live conflict, flight, and fire data need registrations: ACLED via a myACLED login with a 5,000-row default cap , OpenSky on credit-based research/non-commercial terms (4,000 credits/day standard) , and NASA FIRMS with a free MAP_KEY, a 10-minute window, and up to 100,000+ VIIRS records per day . Cloudflare Radar, Wingbits, Finnhub, and AISStream sit behind the same credential wall.

Spinning Up World Monitor: The Bare npm Procedure

The app-only path skips every credential wall and runs in three commands. Clone the repo, install, and serve: git clone https://github.com/koala73/worldmonitor && cd worldmonitor && npm install, then npm run dev. Baseline operation needs no environment variables . Node.js 22+ is required only if you intend to run the full self-hosted sidecar later; npm alone suffices for local app dev .

npm run dev boots a Vite server. The 3D globe renders through globe.gl on Three.js, the flat map through deck.gl and MapLibre GL, all in vanilla TypeScript — there is no heavy backend to stand up for the dashboard itself .

Wire in AI inference three ways. Point OLLAMA_BASE_URL at a running Ollama instance for fully local inference with no API key; or set a Groq or OpenRouter key for cloud calls; or do nothing and Transformers.js handles browser-side inference automatically .

For the agent surface, Pro and API accounts configure a wm_... key and point any Streamable-HTTP MCP host — Claude Desktop, for instance — at https://worldmonitor.app/mcp. The wm_ key is throttled at 60 requests/minute; Pro accounts without a key get 50 quota-consuming calls per UTC day . To enumerate every tool name and description without authenticating, run npx worldmonitor tools . The MCP tool-call shape looks like the following — this snippet was executed against a stub endpoint and printed the output below verbatim:

import json

endpoint = "https://world-monitor.example/mcp"
request = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "world_monitor.status",
        "arguments": {"project": "World Monitor"},
    },
}
response = {
    "project": "World Monitor",
    "stars": 67_000,
    "summary": "World Monitor hit 67k stars; this is the MCP tool-call shape.",
}

print(endpoint)
print(json.dumps(request, indent=2))
print(json.dumps(response, indent=2))
Enter fullscreen mode Exit fullscreen mode

To enable the full sidecar, add Redis, relay secrets, and seed scripts per the architecture docs — set REDIS_TOKEN for Upstash and RELAY_SHARED_SECRET for the relay. That layer activates convergence detection (the Velocity Spike and the corroboration-gated Convergence breaking alert) plus stale-on-error delivery with circuit-breaker behavior .

Throttling, AGPL, and Staleness in CII Computation

Before you wire the MCP endpoint into an agent, budget for three constraints: per-plan rate limits, AGPL-3.0 obligations, and upstream feed caps that compound at scale. Free accounts and free-tier Pro visitors get zero MCP access. Pro accounts get 50 quota-consuming /mcp calls per UTC day, while API Starter, Business, and Enterprise users authenticate with a wm_... key throttled at 60 requests per minute per key .

The license shapes what you can ship. World Monitor's source is AGPL-3.0-only: any network-served modification must release its modified source, and a proprietary or private-source fork requires a separate commercial, branding, and trademark license from creator Elie Habib . Thin-client SDKs are MIT, so you can embed those without AGPL reach. That copyleft clause has already produced two active forks, ntamero/globalpulse and sjkncs/worldmonitor.

Upstream terms ultimately govern how far you scale. GDELT 2.0 refreshes every 15 minutes but inherits media and translation bias; ACLED defaults to a 5,000-row cap per request; UCDP GED 26.1 caps at 5,000 requests per day with versioned token calls; anonymous OpenSky access returns only most-recent state vectors at 10-second resolution . Because of this, treat the Country Instability Index — v8 stress-scoring across 31 Tier-1 countries — as a directional signal when feeds are healthy, not an authoritative verdict . The dashboard surfaces explicit freshness states, so degraded or absent sources are flagged rather than presented as false confidence .

Graduating to worldmonitor: npx Enumeration, Tauri Packaging, and Scheduled Digests

Once the bare app runs, the fastest way to see what the agent layer exposes is the official CLI: npx worldmonitor tools enumerates every MCP tool name and description across all domains — conflict, cyber, maritime, energy, macro, climate and briefs — without a wm_... key or any authentication . For programmatic use, worldmonitor-sdk 0.1.1 landed on PyPI on July 5, 2026 — a zero-dependency Python wrapper covering both MCP tools and REST endpoints; JavaScript/npm, Ruby and Go variants are listed in the official docs . The tool-call shape is a standard JSON-RPC payload; the illustrative snippet below (executed successfully against a placeholder endpoint) shows the structure you send:

import json

endpoint = "https://world-monitor.example/mcp"
request = {
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
        "name": "world_monitor.status",
        "arguments": {"project": "World Monitor"},
    },
}
response = {
    "project": "World Monitor",
    "stars": 67_000,
    "summary": "World Monitor hit 67k stars; this is the MCP tool-call shape.",
}

print(endpoint)
print(json.dumps(request, indent=2))
print(json.dumps(response, indent=2))
Enter fullscreen mode Exit fullscreen mode

For offline or air-gapped work, Tauri 2 packaging bundles the app plus a local Node.js sidecar into a native binary for Windows, macOS, Linux and Android TV, removing the cloud dependency entirely . If you need managed convenience instead, the Pro plan ($39.99/month or $399.99/year) unlocks WM Analyst chat, the Scenario Engine, Route Explorer and daily AI briefs that cite sources and surface Velocity Spike and Convergence alerts — the latter requiring corroboration across independent feed types before firing . Takeaway: start with npm run dev and npx worldmonitor tools, wire agents through the SDK, and reach for Tauri or Pro only when air-gapping or real-time refresh justifies the added weight.

Frequently asked questions

Is World Monitor free to self-host?

Yes. The source is free under AGPL-3.0-only, and app-only local development needs no paid plan and no environment variables to run baseline layers . The hosted app also offers a no-signup free tier with all 56 map layers and a 5–15 minute refresh cadence . Pro adds near-real-time refresh, WM Analyst chat, and the Scenario Engine at $39.99/month (or $399.99/year) .

Can I run World Monitor without any upstream API keys?

Yes. npm run dev starts with zero env vars and serves the baseline layers out of the box . Higher-value feeds — ACLED, OpenSky, Wingbits, Cloudflare Radar, EIA, Finnhub, and AISStream — each require their own credentials, and any layer whose key is missing hides cleanly rather than failing repeatedly . That lets you evaluate the dashboard first and add credentials only for the sources you actually need.

What does the AGPL license mean for a private fork?

Under AGPL-3.0, any network-served modification must publish its modified source under the same license — the network-use clause closes the "SaaS loophole" that ordinary GPL leaves open . Proprietary, private-source, or branded deployments therefore need a separate commercial/branding/trademark license from the maintainer, @koala73 . The thin-client SDKs (JavaScript/npm, Python, Ruby, Go) are MIT-licensed, so you can embed them in closed software without AGPL obligations .

How does AI summarization work without a cloud LLM?

Transformers.js runs inference directly in the browser with no server and no API key, and Ollama provides fully local server-side inference for self-hosters . Groq and OpenRouter remain available as cloud options if you prefer hosted models . To keep inference cheap, Upstash Redis deduplicates identical headlines so concurrent users viewing the same story trigger only one LLM call .

How do I connect an MCP client to World Monitor?

Point any Streamable-HTTP MCP host at https://worldmonitor.app/mcp . MCP access is metered: free accounts cannot call the server, Pro accounts get 50 quota-consuming calls per UTC day, and API plans use a wm_... key throttled at 60 requests/minute . Discovery artifacts include /.well-known/mcp/server-card.json, /openapi.yaml, and /llms.txt . Run npx worldmonitor tools to preview every operation without authenticating .

Top comments (0)