EM Snow
Ski resort conditions, forecasts, avalanche danger, sun, routes and snow history for 5,000+ resorts.
Should I use this
Quality & Safety
Findings (2)
- LOWin where_is_it_snowing
- LOWin get_webcams
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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": {
"em-snow": {
"url": "https://snow.extreme-media.co.uk/mcp"
}
}
}Remote endpoints
https://snow.extreme-media.co.uk/mcpstreamable-httpWhat it can do
Tool inventory
Tools (21)
🟢search_resorts(query, country, near, limit)
Find ski resorts worldwide by name, country or distance. Returns at most 20 matches and does not expose the bulk resort index.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"maxLength": 80
},
"country": {
"type": "string",
"maxLength": 40
},
"near": {
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
}
},
"required": [
"lat",
"lon"
],
"additionalProperties": false
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_conditions(resort)
Get current snow, reported lift and run counts, weather and season state. Lift and run counts are reported status, not guaranteed live.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_forecast(resort, days)
Get the available daily snow, temperature, freezing level and wind-hold risk forecast, up to 10 requested days.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"default": 7
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢plan_my_day(resort, date, level)
Build modelled suggested runs in time order from forecast weather, sun, snow and mapped terrain. Only plans days inside the reported winter season; summer lift or bike-park operation does not count as open for skiing. Easy, intermediate and advanced exclude expert, freeride and extreme terrain; only expert permits it. Suggestions are not a connected route or live piste status.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"date": {
"type": "string"
},
"level": {
"type": "string",
"enum": [
"easy",
"intermediate",
"advanced",
"expert"
]
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢sun_on_the_mountain(resort, date)
Show modelled sun and shade windows for eight slope aspects, with local terrain-horizon shading where DEM coverage exists.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"date": {
"type": "string"
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢route_on_mountain(resort, from, to, level, avoid_closed)
Route between named pistes, lifts, the resort base or latitude,longitude coordinates using mapped OSM pistes and lifts. Names match accent-insensitively and partially (exact, then prefix, then contained words); a piste or lift split into several connected OSM pieces counts as one. A lift used as from resolves to its top station, where you ski away; a lift used as to resolves to its bottom station, unless coordinates say otherwise. Ambiguous names return candidates. Coordinates more than 5 km from the resort are rejected. Easy, intermediate and advanced avoid terrain above that level; only expert permits expert, freeride and extreme terrain.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"from": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"to": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"level": {
"type": "string",
"enum": [
"easy",
"intermediate",
"advanced",
"expert"
]
},
"avoid_closed": {
"type": "boolean",
"default": true
}
},
"required": [
"resort",
"from",
"to"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢avalanche_danger(resort)
Summarise the regional avalanche bulletin covering a resort: EAWS in Europe, avalanche.org centres in the US and Avalanche Canada, with zone, issuing centre, issue and expiry times and a link to the official forecast. Expired products are never shown as current. Never substitutes for the official bulletin or local advice.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢mountain_facts(resort)
Read mapped OSM terrain inventory, lift fleet, vertical, longest run, carefully matched Wikidata facts, season dates and modelled snow reliability.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢where_is_it_snowing(hemisphere, limit)
Rank the freshest recently reported snow from the cached EM Snow home-page ranking.
Input Schema
{
"type": "object",
"properties": {
"hemisphere": {
"type": "string",
"enum": [
"nh",
"sh"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 10
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢best_time_to_go(resort)
Get historical snow odds from the local ERA5 archive and quiet-week guidance where the crowd scorer covers the resort.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢season_recap(resort)
Summarise the most recent completed ski season from the local ERA5 archive first.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢snow_reliability(resort)
Get an explainable snow-reliability score from long-run ERA5 snow depth.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢nearby_resorts(resort, limit)
Find nearby resorts from the local EM Snow resort index.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 10,
"default": 8
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_webcams(resort)
Get nearby webcam images and their source links, with the required provider credit.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_snow_reports(resort, limit)
Get recent visible community reports, including whether each came from the website or was relayed by an AI assistant.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 20
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢watch_resort(resort)
Return a one-tap EM Snow URL where the person can watch a resort and optionally add dates. This tool does not collect email.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟡add_snow_report(resort, text, tags, rating, observed_today)
Only relay a report from a person who is at, or was just at, the resort. Never invent a report. The report goes live immediately and is labelled as relayed via an AI assistant.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"text": {
"type": "string",
"maxLength": 280
},
"tags": {
"type": "array",
"items": {
"type": "string",
"enum": [
"powder",
"packed",
"icy",
"spring",
"slush",
"wind-hold",
"bluebird",
"groomed",
"heavy",
"crowded",
"quiet",
"closed"
]
},
"maxItems": 6
},
"rating": {
"type": "integer",
"minimum": 1,
"maximum": 5
},
"observed_today": {
"type": "boolean"
}
},
"required": [
"resort",
"text"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}⚪suggest_resort(name, country, lat, lon, website, ...)
Suggest a missing resort for human review. This never adds it directly to the resort index.
Input Schema
{
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 2,
"maxLength": 100
},
"country": {
"type": "string",
"minLength": 2,
"maxLength": 80
},
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"website": {
"type": "string",
"format": "uri",
"maxLength": 300
},
"notes": {
"type": "string",
"maxLength": 500
}
},
"required": [
"name",
"country",
"lat",
"lon"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_extended_outlook(resort, days)
Get a 16-day daily outlook (snowfall, temperatures, freezing level, maximum gusts and, for the first days, precipitation probability) from EM Snow's self-hosted GFS and ECMWF IFS models. Days 1 to 7 overlap get_forecast; days 8 to 16 are low-confidence trend guidance only.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"days": {
"type": "integer",
"minimum": 1,
"maximum": 16,
"default": 16
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢get_resort_media(resort)
Get images for a resort that vision-capable assistants can show: nearby webcams with provider credit, a Wikimedia Commons photo with its per-file licence, author and source page, the EM Snow sun and shade teaser where one exists, and the resort page link. No trail-map image is available.
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}🟢fly_this_mountain(resort, runs, level, pick)
Get a link that plays a simulated 3D tour of a resort in the EM Snow flyby (lifts up, named runs down, on the mapped piste network), or a tour of runs you name. Pick names match like route_on_mountain; ambiguous names return candidates with picker ids. Status is ready, limited (small mapped network, the tour may be short) or unavailable (too few named runs or no linking lifts; the resort page is returned instead).
Input Schema
{
"type": "object",
"properties": {
"resort": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"runs": {
"type": "integer",
"minimum": 1,
"maximum": 12
},
"level": {
"type": "string",
"enum": [
"all",
"easy",
"intermediate"
]
},
"pick": {
"type": "array",
"items": {
"type": "string",
"minLength": 1,
"maxLength": 100
},
"minItems": 1,
"maxItems": 12
}
},
"required": [
"resort"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}Community
Evidence