avalanche-org-mcp-server

avalanche-org-mcp-server

Enables LLMs to query current and historic avalanche danger ratings by location and retrieve raw forecast GeoJSON from the Avalanche.org public API.

Category
Visit Server

README

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.

Quick Start

Claude Desktop (npx — recommended)

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" }

<details> <summary><strong>Example output</strong></summary>

{
  "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
}

</details>


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 }

<details> <summary><strong>Example output</strong></summary>

{
  "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"
}

</details>


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

<details> <summary><strong>Example output</strong></summary>

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

</details>


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

<details> <summary><strong>Example output</strong></summary>

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

</details>

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured