The Problem
AI agents operating in risk-sensitive contexts require consolidated, cited intelligence across geopolitical, financial, and environmental domains—but stitching together 30+ data sources manually creates latency, blind spots, and unverified outputs. This repo addresses that by providing a unified MCP server with 120+ tools pulling from free public APIs.
What This Does
The repository delivers a modular MCP server implementation spanning financial markets, conflict monitoring, military posture, cyber threats, climate, and 25+ other domains (see src/world_intel_mcp/sources/ for the 40+ source modules). Intelligence flows through src/world_intel_mcp/analysis/ where 20+ processing functions operate: escalation.py computes escalation scoring, cascade.py analyzes signal convergence, classifier.py categorizes events, and clustering.py groups related intelligence. A Qdrant vector store (src/world_intel_mcp/vector_store.py) indexes accumulated data for semantic search, while src/world_intel_mcp/daily_digest.py assembles cited digests. The live dashboard at src/world_intel_mcp/dashboard/app.py serves real-time SSE updates, and src/world_intel_mcp/cli.py provides command-line access. Configuration lives in src/world_intel_mcp/config/ with 11 domain-specific maps (countries, geospatial, trade routes, etc.).
How It Is Wired
Execution begins at src/world_intel_mcp/server.py which starts the Flask-based MCP server, or src/world_intel_mcp/cli.py for CLI mode. The src/world_intel_mcp/fetcher.py orchestrates data collection from the 40+ source modules, each pulling from public APIs (SEC EDGAR, ACLED, NOAA, etc.). A circuit_breaker.py provides resilience around external calls. The src/world_intel_mcp/cache.py layer tempers fetch rates. The vector store persists to Qdrant for semantic queries. The dashboard at src/world_intel_mcp/dashboard/app.py connects via SSE to src/world_intel_mcp/server.py. The widest blast radius resides in src/world_intel_mcp/fetcher.py — it touches every source module and feeds all analysis pipelines; a failure there propagates across all 30+ domains. The src/world_intel_mcp/config/ module is the other hub: 11 config files are imported by multiple source and analysis modules, so changing geospatial boundaries or country mappings requires coordinated updates.
How To Use It
Setup: cd world-intel-mcp && python -m pip install -e . (pyproject.toml declares dependencies; no lockfile is present, so pin versions manually if reproducibility is required). Configuration: No API keys are required per the README — all 120+ tools pull from free public APIs. Environment variables, if needed, would be defined in .env (not present in the structure; check the README for any documented vars). Running it: Start the server with python src/world_intel_mcp/server.py or invoke the CLI via python src/world_intel_mcp/cli.py. The dashboard launches at http://localhost:5000 (per run-dashboard.sh). For daemon mode, scripts/collector-daemon.sh can be used.
Real-World Use
An analyst queries: "What is the current military posture and cyber threat level in the Taiwan Strait?" The agent routes this through src/world_intel_mcp/server.py → src/world_intel_mcp/analysis/posture.py and src/world_intel_mcp/analysis/cyber.py (sourced from src/world_intel_mcp/sources/military.py and src/world_intel_mcp/sources/cyber.py), with results grounded in the Qdrant vector store via src/world_intel_mcp/vector_store.py. The response includes source citations from ACLED events, OpenSky aircraft tracks, and URLhaus threat feeds, all timestamped and scoped to the defined geofence.
Code Health & Issues
- Low/Risk - Dependencies declared without a lockfile:
pyproject.tomllists runtime dependencies without arequirements.txtoruv.lock, meaningpip install -e .may resolve to different versions across environments. Verify pinned versions for reproducible builds. -pyproject.toml - The repo has 20 test files under
tests/covering fetcher, cache, analysis, and source modules, providing reasonable coverage for the core pipelines. - No
LICENSEfile was detected in the provided structure, though the README references MIT — verify the rootLICENSEexists before downstream consumption. - CI/CD is configured via
.github/workflows/ci.ymlbut has not been executed in this analysis.
The Bottom Line
This is a well-structured MCP server that successfully aggregates 120+ intelligence tools from free public APIs into a single, queryable surface with vector search and a live dashboard. The codebase is modular and the call graph is traceable through server.py → fetchers → analysis pipelines. The absence of a lockfile and the unverified license file are the main production concerns; otherwise, it's a functional foundation for AI agents needing real-time global awareness without paid subscriptions.