Server data from the Official MCP Registry
UN SDG country indicators across all 17 goals: poverty, health, education, climate. Free.
UN SDG country indicators across all 17 goals: poverty, health, education, climate. Free.
Remote endpoints: streamable-http: https://app.daedalmap.com/mcp/un_sdg
DaedalMap is a geographic query engine with reasonable security architecture. The codebase properly separates concerns between local and cloud modes, uses environment variables for credentials, and implements authentication where needed. Minor concerns include broad exception handling in some areas and the inclusion of a large minified vendor library, but these do not represent significant security vulnerabilities. Permissions align well with the server's purpose as a map/data query engine. Supply chain analysis found 5 known vulnerabilities in dependencies (0 critical, 1 high severity).
4 files analyzed · 9 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Available as Local & Remote
This plugin can run on your machine or connect to a hosted endpoint. during install.
From the project's GitHub README.
DaedalMap is a map-first geographic query engine. It lets people ask place-based questions in natural language and get usable map results across disasters, demographics, economics, climate, and related public data.
Public surfaces:
https://app.daedalmap.comhttps://daedalmap.comThis repository is the open app/runtime. It is intended to be understandable and usable on its own: you can run it locally, point it at local or hosted data, and extend it with compatible datasets and pack-style workflows.
If you are using the public GitHub repo as a self-host/local runtime, the practical setup contract right now is:
DATA_ROOT, unless you use the default app-data path)OPENAI_API_KEY or ANTHROPIC_API_KEY)Supabase and hosted account wiring are optional for self-host use.
DaedalMap is built around three ideas:
Typical use cases:
The hosted runtime ships with 40+ curated sources across disasters, demographics, economics, and climate. Coverage below reflects the current maintained pack inventory.
| Source | Scale | Time Range |
|---|---|---|
| USGS Earthquakes | 1M+ events | 2150 BC - present |
| IBTrACS Hurricanes/Cyclones | 13K storms | 1842 - present |
| NOAA Tsunamis | 2.6K events | 2000 BC - present |
| Smithsonian Volcanoes | 11K eruptions | Holocene |
| Global Wildfires | 940K events/year | 2002 - 2024 |
| USA/CAN Tornadoes | 81K events | 1950 - present |
| Global Floods | 4.8K events | 1985 - 2019 |
| Global Landslides | 45K events | 1760 - present |
Disaster events include 22M+ geographic location relationships and 566K cross-disaster links (aftershocks, triggered events).
| Source | Countries | Years | Category |
|---|---|---|---|
| Our World in Data CO2 | 217 | 1750 - 2024 | Environment |
| WHO Health Statistics | 198 | 2015 - 2024 | Health |
| IMF Balance of Payments | 195 | 2005 - 2022 | Economy |
| UN Sustainable Development Goals | 200+ | 2000 - 2023 | SDGs 1-17 |
| Eurostat Demographics | 37 European countries | 2000 - 2024 | Demographics |
| Country | Source Count | Examples |
|---|---|---|
| USA | 15+ | Census, FEMA National Risk Index, NOAA storms |
| Canada | 3 | Statistics Canada, NRCan earthquakes, drought |
| Australia | 2 | ABS population, BOM cyclones |
Disasters are displayed with animated, type-specific rendering:
DaedalMap now treats runtime behavior as a 2-axis matrix:
INSTALL_MODE
local = local app/runtime installcloud = hosted/server deploymentRUNTIME_MODE
local = query local datacloud = query managed cloud-backed data via local cache + DuckDB httpfsSupported combinations:
local install + local datalocal install + cloud datacloud install + cloud dataNot supported as a first-class runtime shape:
cloud install + local dataThe current hosted/runtime direction is:
Railway for the public app runtimeCloudflare R2 for canonical runtime data storageSupabase for auth and the future entitlement/control planeIn RUNTIME_MODE=cloud, the runtime:
httpfspublished/ namespace, not the mutable review laneAdmin/review surfaces may also read release markers from a separate control/
prefix so admin accounts can still see staging/review pack status even when the
runtime catalog in published/ is empty.
That means the same codebase can be used in:
Guest users can open the app and try the public workflow without logging in.
Logged-in users currently get:
daedalmap.comThe public app no longer owns the account/settings UI.
app.daedalmap.com stays focused on the runtime and map engine, while .com
owns login, account, billing, and admin/runtime control-plane views.
cd county-map
pip install -r requirements.txt
Create a .env file for local development. The minimum useful local setup is:
ANTHROPIC_API_KEY=your_key_here
DATA_ROOT=C:/path/to/your/local/data
You can use OPENAI_API_KEY instead of ANTHROPIC_API_KEY if that is your preferred provider.
If you leave DATA_ROOT blank, DaedalMap uses the default local app-data path and expects your data to live there.
If you want to test the hosted-style setup locally, also configure:
INSTALL_MODE=local
RUNTIME_MODE=cloud
S3_BUCKET=global-map-data
S3_PREFIX=published
S3_CONTROL_PREFIX=control
S3_ENDPOINT_URL=https://<account>.r2.cloudflarestorage.com
API_ANALYTICS_IP_SALT=<stable-random-secret>
ORDER_TAKER_SOURCE_MODE=live
HOSTED_PACK_REF_ALLOWED_HOSTS=<exact-download-hosts>
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_DEFAULT_REGION=auto
For local testing against the review lane before publish, use:
INSTALL_MODE=local
RUNTIME_MODE=cloud
S3_BUCKET=global-map-data
S3_PREFIX=staging
S3_CONTROL_PREFIX=control
S3_ENDPOINT_URL=https://<account>.r2.cloudflarestorage.com
API_ANALYTICS_IP_SALT=<stable-random-secret>
ORDER_TAKER_SOURCE_MODE=live
HOSTED_PACK_REF_ALLOWED_HOSTS=<exact-download-hosts>
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_DEFAULT_REGION=auto
Most local users should leave these blank unless they intentionally want overrides:
DATA_ROOT=
APP_URL=
SITE_URL=
CLOUD_CACHE_ROOT=
What they mean:
DATA_ROOT
only used in RUNTIME_MODE=local; leave blank to use the default local app-data folderAPP_URL
optional advertised app URL; leave blank for normal local runsSITE_URL
optional website/docs/account URL override; leave blank for normal local runsCLOUD_CACHE_ROOT
optional local cache folder for cloud metadata/support files; leave blank unless you want a custom cache locationIf you are configuring a hosted deployment, set:
INSTALL_MODE=cloud
RUNTIME_MODE=cloud
PORT=7000
If you want optional hosted-style auth locally:
SUPABASE_URL=...
SUPABASE_ANON_KEY=...
SUPABASE_SERVICE_KEY=...
python app.py
Open:
http://localhost:7000DaedalMap exposes a discovery and query API intended for agent and LLM use. The same endpoints are accessible via MCP for direct integration with Claude and other MCP-compatible clients.
Discovery endpoints are free. Data query endpoints use per-call micropayment via x402.
The MCP surface exposes:
For MCP setup details, see docs/LOCAL_AND_HOSTED.md.
If you are approaching this repo like a new developer, the current API entry path is:
GET /api/v1/guideGET /api/v1/catalogGET /api/v1/packs/{pack_id}POST /api/v1/query/datasetThe free exploration surface is:
GET /api/v1/guideGET /api/v1/catalogGET /api/v1/packs/{pack_id}The first paid execution surface is:
POST /api/v1/query/datasetImportant current behavior:
POST /api/v1/query/dataset is a paid lanecurrency and earthquakescommercial_access_unavailable for that paid lane unless a commercial verifier is explicitly enabledCurrent live pricing model for POST /api/v1/query/dataset:
$0.01100$0.0001$0.50How to think about it:
limitpayment-required challenge confirms the computed amount before you paylimit for the first paid test so you can confirm the flow cheaplyWorked examples:
limit = 30 -> $0.01limit = 100 -> $0.01limit = 365 -> $0.0365limit = 500 -> $0.05Quick live exploration examples:
Invoke-WebRequest -UseBasicParsing 'https://app.daedalmap.com/api/v1/guide'
Invoke-WebRequest -UseBasicParsing 'https://app.daedalmap.com/api/v1/catalog'
Invoke-WebRequest -UseBasicParsing 'https://app.daedalmap.com/api/v1/packs/currency'
Invoke-WebRequest -UseBasicParsing 'https://app.daedalmap.com/api/v1/packs/earthquakes'
Current live expectation:
GET /api/v1/catalog returns two packs: currency and earthquakesGET /api/v1/packs/currency returns 200GET /api/v1/packs/earthquakes returns 200Current live pair:
currency: normalized FX metrics with pack-level routing by time.granularityearthquakes: event-source pack with hierarchy-aware region_ids and backend-aggregated event_countThe runtime resolves behavior from two explicit modes:
INSTALL_MODE
controls deployment defaults like writable directories and default URLsRUNTIME_MODE
controls the data planeData mode behavior:
RUNTIME_MODE=local
uses DATA_ROOTRUNTIME_MODE=cloud
uses the hydrated local cloud cache as DATA_ROOTDefault local writable folders on Windows:
CONFIG_DIR=%LOCALAPPDATA%\DaedalMap\configSTATE_DIR=%LOCALAPPDATA%\DaedalMap\stateCACHE_DIR=%LOCALAPPDATA%\DaedalMap\cacheLOG_DIR=%LOCALAPPDATA%\DaedalMap\logsPACKS_ROOT=%LOCALAPPDATA%\DaedalMap\packsDATA_ROOT=%LOCALAPPDATA%\DaedalMap\dataIn hosted/cloud mode:
That makes local cloud-mode testing useful for reproducing hosted-runtime behavior before deploy.
Important note:
data/ demo treeDATA_ROOT in local mode, or RUNTIME_MODE=cloud with cloud storage configuredOPENAI_API_KEY or ANTHROPIC_API_KEYThe old “demo data folder plus converters” framing is no longer the whole story.
The current direction is:
Key concepts:
available packsinstalled packsentitled packsactive runtime catalogThese are intentionally distinct.
/settings now behaves differently depending on mode:
For self-host users, /settings is the in-app reminder page for:
Important files and folders:
app.py - FastAPI app entrypointmapmover/ - runtime logic, routes, path helpers, DuckDB helpersstatic/ - frontend app modules and stylestemplates/ - app HTML shellsupabase_client.py - auth/control-plane integrationdocs/ - local documentation for schemas, runtime notes, and reference materialCurrent docs in docs/:
loc_id conventionsSuggested reading order:
README.mddocs/LOCAL_AND_HOSTED.mddocs/APP_OVERVIEW.mddocs/DATA_SCHEMAS.mdUseful local modes:
DATA_ROOTQuestions, feedback, or self-host issues: support@daedalmap.com
MIT
Agent/API access: https://daedalmap.com/llms.txt
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.