Skip to main content
Glama
avalanche-org-mcp-server

avalanche-org-mcp-server

by haydenwade

avalanche-org-mcp-server

npm version Publish npm package Publish container image

A minimal Model Context Protocol (MCP) server that wraps the Avalanche.org Public API map-layer endpoints. It lets LLMs look up avalanche danger ratings by location, retrieve raw forecast GeoJSON, and query historic conditions.

Features

  • Danger lookup by lat/lon — find the avalanche zone for any point and get its current danger rating

  • Historic danger lookup — same as above, but for a specific past date

  • Raw map-layer GeoJSON — full FeatureCollection for all avalanche centers, or scoped to one center

Data sourced from the Avalanche.org Public API. See the API docs for details.

Related MCP server: Weather MCP Server

Quick Start

Add this to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "avalanche-org": {
      "command": "npx",
      "args": ["-y", "avalanche-org-mcp-server"]
    }
  }
}

No install required. Claude will download and run it automatically.

Global npm install

npm install -g avalanche-org-mcp-server
{
  "mcpServers": {
    "avalanche-org": {
      "command": "avalanche-org-mcp-server"
    }
  }
}

Docker

docker pull ghcr.io/haydenwade/avalanche-org-mcp-server:latest
{
  "mcpServers": {
    "avalanche-org": {
      "command": "docker",
      "args": ["run", "--rm", "-i", "ghcr.io/haydenwade/avalanche-org-mcp-server:latest"]
    }
  }
}

From source

git clone https://github.com/haydenwade/avalanche-org-mcp-server.git
cd avalanche-org-mcp-server
npm install
npm run build
{
  "mcpServers": {
    "avalanche-org": {
      "command": "node",
      "args": ["/absolute/path/to/avalanche-org-mcp-server/dist/src/index.js"]
    }
  }
}

Tools

avalanche_danger_rating_by_point

Get the current avalanche danger rating for a lat/lon point. Returns the zone the point falls in, or the nearest zone if preferNearest is true.

Parameter

Type

Required

Description

lat

number

yes

Latitude in decimal degrees

lon

number

yes

Longitude in decimal degrees

preferNearest

boolean

no

Fall back to nearest zone if point is outside all polygons (default: true)

centerId

string

no

Scope search to a specific avalanche center (e.g. "UAC", "CBAC")

Example input:

{ "lat": 40.5763, "lon": -111.7522, "preferNearest": true, "centerId": "UAC" }
{
  "match": "inside_zone",
  "distance_km": 0,
  "distance_miles": 0,
  "zone": {
    "id": "zone-1",
    "name": "Salt Lake",
    "state": "UT"
  },
  "center": {
    "id": "UAC",
    "name": "Utah Avalanche Center",
    "timezone": "America/Denver",
    "link": "https://utahavalanchecenter.org"
  },
  "danger": {
    "level": 3,
    "label": "Considerable",
    "color": "#f1a302"
  },
  "travel_advice": "Dangerous avalanche conditions. Careful snowpack evaluation, cautious route-finding and conservative decision-making essential.",
  "forecast_url": "https://utahavalanchecenter.org/forecast/salt-lake",
  "validity": {
    "start_date": "2026-03-22",
    "end_date": "2026-03-23"
  },
  "warning": null
}

historic_avalanche_danger_rating_by_point

Same as above, but for a specific historic date. Returns all the same fields plus day.

Parameter

Type

Required

Description

lat

number

yes

Latitude in decimal degrees

lon

number

yes

Longitude in decimal degrees

day

string

yes

Date in YYYY-MM-DD format

preferNearest

boolean

no

Fall back to nearest zone (default: true)

centerId

string

no

Scope to an avalanche center

Example input:

{ "lat": 40.5763, "lon": -111.7522, "day": "2025-02-24", "preferNearest": true }
{
  "match": "inside_zone",
  "distance_km": 0,
  "distance_miles": 0,
  "zone": { "id": "zone-1", "name": "Salt Lake", "state": "UT" },
  "center": { "id": "UAC", "name": "Utah Avalanche Center", "..." : "..." },
  "danger": { "level": 3, "label": "Considerable", "color": "#f1a302" },
  "travel_advice": "Dangerous avalanche conditions. ...",
  "forecast_url": "https://utahavalanchecenter.org/forecast/salt-lake",
  "validity": { "start_date": "2025-02-24", "end_date": "2025-02-25" },
  "warning": null,
  "day": "2025-02-24"
}

raw_map_layer

Returns the raw Avalanche.org map-layer GeoJSON FeatureCollection for all avalanche centers.

Parameter

Type

Required

Description

day

string

no

Historic date in YYYY-MM-DD format

{
  "geojson": {
    "type": "FeatureCollection",
    "features": [ "... full GeoJSON features ..." ]
  }
}

raw_map_layer_by_avalanche_center

Returns the raw map-layer GeoJSON FeatureCollection for a single avalanche center.

Parameter

Type

Required

Description

centerId

string

yes

Avalanche center ID (e.g. "CBAC", "NWAC", "UAC")

day

string

no

Historic date in YYYY-MM-DD format

{
  "geojson": {
    "type": "FeatureCollection",
    "features": [ "... full GeoJSON features ..." ]
  }
}

Development

Requires Node.js >= 18.

npm install
npm run build
npm test

To interactively test tools with the MCP Inspector:

npx @modelcontextprotocol/inspector node dist/src/index.js

Project structure

src/
  index.ts          # Entry point — server setup + stdio transport
  tools.ts          # Tool registration
  constants.ts      # API URLs and timeouts
  types.ts          # GeoJSON type definitions
  api/
    mapLayer.ts     # Map-layer fetch + GeoJSON normalization
  lib/
    geometry.ts     # Point-in-polygon, haversine distance, bounds
    dangerLookup.ts # Danger rating lookup logic
    validation.ts   # Date and coordinate validation
test/
  *.test.ts         # Tests (node:test)

Contributing

  1. Fork the repo

  2. Create a feature branch (git checkout -b my-feature)

  3. Make your changes and add tests

  4. Run npm test to make sure everything passes

  5. Open a pull request

License

MIT

Available Tools

4 tools
avalanche_danger_rating_by_pointA

Get the current avalanche danger rating and forecast metadata for the avalanche zone containing a latitude/longitude point. Can fall back to the nearest zone.

Inputs: lat (required), lon (required), centerId, preferNearest.

historic_avalanche_danger_rating_by_pointA

Get the avalanche danger rating and forecast metadata for the avalanche zone containing a latitude/longitude point on a specific historic day (YYYY-MM-DD). Can fall back to the nearest zone.

Inputs: day (required), lat (required), lon (required), centerId, +1 more.

raw_map_layerA

Return the raw Avalanche.org map-layer GeoJSON FeatureCollection for all avalanche centers. Supports an optional historic day (YYYY-MM-DD).

Inputs: day.

raw_map_layer_by_avalanche_centerA

Return the raw Avalanche.org map-layer GeoJSON FeatureCollection for a specific avalanche center ID. Supports an optional historic day (YYYY-MM-DD).

Inputs: centerId (required), day.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 4 tools

    Disambiguation4/5

    The four tools split cleanly along two axes: current vs historic ratings (tools 1 vs 2) and all-centers vs single-center raw layers (tools 3 vs 4). The main potential confusion is between the point-based rating tools and the map-layer tools, since raw_map_layer also accepts a historic day, but their output intent (formatted rating vs raw GeoJSON) differs enough to keep them distinct.

    Naming Consistency4/5

    All names use consistent snake_case with descriptive suffixes (_by_point, _by_avalanche_center) and clear domain prefixes (avalanche_danger_rating, historic_, raw_map_layer). It is not a strict verb_noun convention, but the modifiers are applied predictably across the set, so an agent can infer related tools.

    Tool Count4/5

    Four tools is a tight, well-scoped surface for a narrow domain (avalanche danger lookups). Each tool covers a distinct query dimension, though the set sits at the low end and one could argue a couple more (e.g. by-center rating) would round it out.

    Completeness3/5

    The surface covers current/historic point ratings and raw map layers for all or a single center, but there is no direct way to query a formatted danger rating by avalanche center ID, nor to list available centers/zones. Raw GeoJSON partially compensates, but some lookup paths dead-end.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Enables AI assistants to access real-time US weather forecasts and alerts through the National Weather Service API.
      2
      8 npm
      MIT
    • F
      license
      B
      quality
      D
      maintenance
      Provides real-time US weather alerts and forecasts by integrating with the National Weather Service API. It enables AI assistants to fetch state-specific alerts and detailed local forecasts using geographic coordinates.
      2
      1
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides avalanche forecasts, danger ratings, and field observations for US avalanche centers, Canadian regions, and Quebec's Chic-Chocs via natural language queries.
      1
      MIT