Avalanche.org

Servidor MCP para consultar índices de peligro de avalanchas, pronósticos históricos de avalanchas y GeoJSON de pronósticos desde la API pública de Avalanche.org. No afiliado con Avalanche.org

Documentación

avalanche-org-mcp-server

npm version Publish npm package Publish container image

Un servidor mínimo de Model Context Protocol (MCP) que envuelve los endpoints de capas de mapa de la API pública de Avalanche.org. Permite que los LLM consulten los niveles de peligro de avalanchas por ubicación, recuperen GeoJSON de pronósticos sin procesar y consulten condiciones históricas.

Características

  • Búsqueda de peligro por lat/lon — encuentra la zona de avalancha para cualquier punto y obtén su nivel de peligro actual
  • Búsqueda de peligro histórico — igual que la anterior, pero para una fecha pasada específica
  • GeoJSON de capas de mapa sin procesar — FeatureCollection completa para todos los centros de avalancha, o limitada a un centro

Datos obtenidos de la API pública de Avalanche.org. Consulta la documentación de la API para más detalles.

Inicio rápido

Claude Desktop (npx — recomendado)

Añade esto a tu configuración de Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json en macOS):

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

No se requiere instalación. Claude lo descargará y ejecutará automáticamente.

Instalación global con npm

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

Desde el código fuente

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

Herramientas

avalanche_danger_rating_by_point

Obtén el nivel de peligro de avalancha actual para un punto lat/lon. Devuelve la zona en la que cae el punto, o la zona más cercana si preferNearest es verdadero.

ParámetroTipoObligatorioDescripción
latnumbersíLatitud en grados decimales
lonnumbersíLongitud en grados decimales
preferNearestbooleannoRecurrir a la zona más cercana si el punto está fuera de todos los polígonos (predeterminado: true)
centerIdstringnoLimitar la búsqueda a un centro de avalancha específico (p. ej. "UAC", "CBAC")

Ejemplo de entrada:

{ "lat": 40.5763, "lon": -111.7522, "preferNearest": true, "centerId": "UAC" }
Ejemplo de salida
{
  "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

Igual que la anterior, pero para una fecha histórica específica. Devuelve todos los mismos campos más day.

ParámetroTipoObligatorioDescripción
latnumbersíLatitud en grados decimales
lonnumbersíLongitud en grados decimales
daystringsíFecha en formato YYYY-MM-DD
preferNearestbooleannoRecurrir a la zona más cercana (predeterminado: true)
centerIdstringnoLimitar a un centro de avalancha

Ejemplo de entrada:

{ "lat": 40.5763, "lon": -111.7522, "day": "2025-02-24", "preferNearest": true }
Ejemplo de salida
{
  "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

Devuelve la FeatureCollection GeoJSON sin procesar de la capa de mapa de Avalanche.org para todos los centros de avalancha.

ParámetroTipoObligatorioDescripción
daystringnoFecha histórica en formato YYYY-MM-DD
Ejemplo de salida
{
  "geojson": {
    "type": "FeatureCollection",
    "features": [ "... full GeoJSON features ..." ]
  }
}

raw_map_layer_by_avalanche_center

Devuelve la FeatureCollection GeoJSON sin procesar de la capa de mapa para un único centro de avalancha.

ParámetroTipoObligatorioDescripción
centerIdstringsíID del centro de avalancha (p. ej. "CBAC", "NWAC", "UAC")
daystringnoFecha histórica en formato YYYY-MM-DD
Ejemplo de salida
{
  "geojson": {
    "type": "FeatureCollection",
    "features": [ "... full GeoJSON features ..." ]
  }
}

Desarrollo

Requiere Node.js >= 18.

npm install
npm run build
npm test

Para probar interactivamente las herramientas con el MCP Inspector:

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

Estructura del proyecto

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)

Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características (git checkout -b my-feature)
  3. Realiza tus cambios y añade pruebas
  4. Ejecuta npm test para asegurarte de que todo pasa
  5. Abre una pull request

Licencia

MIT