open-signals

Public hazard, water, weather and EPA data with source, age and licence on every reading.

Should I use this

Quality & Safety

A
Description quality
98%
Schema completeness
67%
Naming quality
100%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,601Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.25% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "open-signals": {
      "url": "https://open-signals.civops.io/mcp"
    }
  }
}

Remote endpoints

https://open-signals.civops.io/mcpstreamable-http

What it can do

Tool inventory

Tools (9)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_sources(query, topic, license, fetchable)

Search the catalogue of public data sources (weather, water, hazards, flights, ships, energy, filings, trade, ...). Each entry gives the API, coverage, cadence, auth needed and licence. Use it to find where a kind of data comes from before writing a fetcher.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Words matched against name, id, coverage, topics and licence note."
    },
    "topic": {
      "type": "string",
      "description": "One topic, e.g. weather, water, fires, flights, energy."
    },
    "license": {
      "type": "string",
      "enum": [
        "public_domain",
        "open",
        "non_commercial",
        "restricted",
        "unknown"
      ]
    },
    "fetchable": {
      "type": "boolean",
      "description": "true: only sources this server can fetch now; false: only catalogued ones."
    }
  }
}
🟢get_source(id)

One catalogue entry in full.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟢list_hubs

Projects and catalogues that collect sources (God's Eye View, World Monitor, the MCP Registry, Source Cooperative, ...), with how each relates to this one.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢list_places(tag)

Named places the fetchers read for, with their upstream ids (CO-OPS station, USGS gauge, eBird region) and tags.

Input Schema

{
  "type": "object",
  "properties": {
    "tag": {
      "type": "string"
    }
  }
}
🟢get_readings(source, place, tag, lat, lng, ...)

Fetch current readings from one source, each with value, unit, a one-line summary, place and provenance (source, URL, fetch time, licence). Sources this server will not republish (non-commercial, restricted or unreviewed licence) answer with an error naming the licence.

Input Schema

{
  "type": "object",
  "properties": {
    "source": {
      "type": "string",
      "description": "A source id with a fetcher (search_sources with fetchable=true)."
    },
    "place": {
      "type": "string",
      "description": "Comma-separated catalogue place ids (see list_places)."
    },
    "tag": {
      "type": "string",
      "description": "Catalogue places with this tag, e.g. waterfowl, ice-fishing."
    },
    "lat": {
      "type": "number",
      "description": "Ad-hoc point latitude (with lng). For weather and WSI."
    },
    "lng": {
      "type": "number",
      "description": "Ad-hoc point longitude (with lat)."
    },
    "coops": {
      "type": "string",
      "description": "NOAA CO-OPS station id(s), comma-separated, e.g. 9063085."
    },
    "usgs": {
      "type": "string",
      "description": "USGS monitoring location id(s), e.g. USGS-04193500."
    },
    "ebird": {
      "type": "string",
      "description": "eBird region code(s), e.g. US-OH-095."
    },
    "metric": {
      "type": "string",
      "description": "Only readings of this metric."
    },
    "since": {
      "type": "string",
      "description": "ISO date or datetime; only readings at or after it."
    },
    "forecast": {
      "type": "boolean",
      "description": "false drops modelled future values."
    },
    "window": {
      "type": "string",
      "description": "usgs-earthquakes only: hour | day | week."
    },
    "state": {
      "type": "string",
      "description": "epa-echo only: two-letter US state, default OH."
    },
    "bbox": {
      "type": "string",
      "description": "noaa-nwps only: xmin,ymin,xmax,ymax in degrees (≤400 sq deg); default the Great Lakes basin."
    },
    "elevated": {
      "type": "boolean",
      "description": "usgs-volcanoes only: true keeps volcanoes above normal."
    },
    "min": {
      "type": "string",
      "description": "usgs-earthquakes only: all | 1.0 | 2.5 | 4.5 | significant."
    },
    "limit": {
      "type": "number",
      "description": "1-1000, default 100."
    }
  },
  "required": [
    "source"
  ]
}
🟢list_datasets

Static public datasets this server holds as GeoJSON (wildfire burn perimeters, public-land share by county, federal campgrounds, fire-weather stations), with source, licence, feature count and parts (one per state, or "all").

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_dataset_part(id, part)

The URL of one part of a dataset as GeoJSON, plus its description. Fetch the URL for the features; parts can be several megabytes.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "part": {
      "type": "string",
      "description": "Two-letter state, or \"all\" for single-part datasets."
    }
  },
  "required": [
    "id",
    "part"
  ]
}
🟢list_layers

Map layers this server can draw as GeoJSON, with unit, source, licence, whether it is available here, and how to read it.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_layer(id, date, place, tag, lat, ...)

One map layer as a GeoJSON FeatureCollection: one point per place with the reading on the date (else the latest observed before it, never a guess), or one point per event for event layers.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "enum": [
        "temperature",
        "wind",
        "pressure_change",
        "snow_depth",
        "wsi",
        "water_level",
        "river_flow",
        "ice",
        "sightings",
        "volcanoes",
        "flood_gauges",
        "epa_facilities",
        "recalls",
        "contract_awards",
        "wildlife",
        "natural_events",
        "world_bank",
        "earthquakes_emsc",
        "tropical_cyclones",
        "power_plants",
        "eu_industrial_production",
        "fema_declarations",
        "earthquakes",
        "lock_traffic",
        "border_crossings",
        "toxic_releases",
        "power_emissions",
        "river_discharge",
        "air_quality",
        "volcanoes_world"
      ]
    },
    "date": {
      "type": "string",
      "description": "YYYY-MM-DD; default today (US Eastern)."
    },
    "place": {
      "type": "string",
      "description": "Comma-separated catalogue place ids (see list_places)."
    },
    "tag": {
      "type": "string",
      "description": "Catalogue places with this tag, e.g. waterfowl, ice-fishing."
    },
    "lat": {
      "type": "number",
      "description": "Ad-hoc point latitude (with lng). For weather and WSI."
    },
    "lng": {
      "type": "number",
      "description": "Ad-hoc point longitude (with lat)."
    },
    "coops": {
      "type": "string",
      "description": "NOAA CO-OPS station id(s), comma-separated, e.g. 9063085."
    },
    "usgs": {
      "type": "string",
      "description": "USGS monitoring location id(s), e.g. USGS-04193500."
    },
    "ebird": {
      "type": "string",
      "description": "eBird region code(s), e.g. US-OH-095."
    },
    "window": {
      "type": "string"
    },
    "min": {
      "type": "string"
    },
    "state": {
      "type": "string"
    },
    "bbox": {
      "type": "string"
    },
    "elevated": {
      "type": "boolean"
    },
    "indicator": {
      "type": "string"
    },
    "country": {
      "type": "string",
      "description": "power_plants: ISO alpha-3, e.g. DEU"
    },
    "fuel": {
      "type": "string",
      "description": "power_plants: coal, oil/gas, nuclear, hydropower, wind, utility-scale solar, geothermal or bioenergy"
    },
    "min_mw": {
      "type": "number"
    },
    "status": {
      "type": "string",
      "description": "power_plants: operating | construction"
    },
    "erupted_since": {
      "type": "number",
      "description": "volcanoes_world: year, default 1900"
    },
    "continuing": {
      "type": "boolean",
      "description": "volcanoes_world: only eruptions in progress"
    }
  },
  "required": [
    "id"
  ]
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded9 tools