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

Open-source OSINT dashboard by @koala73: 60+ Vercel Edge Functions, Ollama/Groq AI layer, MCP at /mcp, 56 map layers,

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

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

Screenshot of https://www.explainx.ai/blog/worldmonitor-open-source-global-intelligence-dashboard-2026

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

Screenshot of https://darkwebinformer.com/world-monitor-a-free-open-source-global-intelligence-dashboard-with-25-data-layers-and-ai-powered-threat-classification/

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.

ModeRequirementsRefresh / Payoff
A — App-only devgit clone + npm install + npm run dev; zero env vars; no upstream registrationsAll 56 layers visible ; 5–15 min refresh
B — Production sidecarNode.js 22+, Docker/Podman, Redis, Railway-style relay; RELAY_SHARED_SECRET, REDIS_PASSWORD, REDIS_TOKENNear-real-time refresh, circuit-breaker and stale-on-error delivery
C — Tauri 2 desktopRust + local Node.js sidecar; Go 1.21+ for contributors; Windows/macOS/Linux + Android TVNative 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

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

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

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 .

Enjoyed this article? Subscribe to get new stories by email whenever they're published.

Subscribe

AI developer tools and ecosystem news for developers and technical founders

Sign up for insights and ideas

Subscribe for the latest news, stories, tips, and updates.

Subscribe