met-mcp

Weather forecasts from MET Norway (Yr): geocoding plus hourly forecasts worldwide.

Should I use this

Quality & Safety

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

Findings (1)

  • LOWTool 'get_ocean_forecast' description lacks action verbin get_ocean_forecast

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,221Tokens (tool definitions)
~1.3 KBTypical response size
Moderate attention impact (0.95% 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": {
    "met-mcp": {
      "command": "npx",
      "args": [
        "met-mcp"
      ]
    }
  }
}

Runnable packages

npmmet-mcp0.2.0stdio

Remote endpoints

https://met-mcp.met-mcp-worker.workers.dev/mcpstreamable-http

What it can do

Tool inventory

Tools (8)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢geocode_location(name, count)

Find latitude and longitude for a place name. Use the coordinates with the other tools.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "description": "Place name, e.g. 'Bergen' or 'Oslo, Norway'"
    },
    "count": {
      "default": 5,
      "description": "Maximum number of matches to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    }
  },
  "required": [
    "name"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_forecast(latitude, longitude, hours)

Get an hourly weather forecast from MET Norway (Yr) for a coordinate. Works worldwide, best coverage in the Nordics.

Input Schema

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees"
    },
    "hours": {
      "default": 24,
      "description": "How many hours ahead to include",
      "type": "integer",
      "minimum": 1,
      "maximum": 48
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_nowcast(latitude, longitude)

Minute-by-minute precipitation for the next 2 hours, radar-based. Nordic region only. Answers 'do I need an umbrella right now?'

Input Schema

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees"
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_weather_alerts(latitude, longitude)

Official danger warnings (wind, flood, ice, forest fire...) from MET Norway. Covers Norway and its waters. Omit coordinates to get all current alerts. Alert text is in Norwegian.

Input Schema

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_sun_events(latitude, longitude, date, utc_offset)

Sunrise, sunset, and solar noon for a coordinate and date. Works worldwide.

Input Schema

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees"
    },
    "date": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Date as YYYY-MM-DD"
    },
    "utc_offset": {
      "default": "+00:00",
      "description": "UTC offset for the returned times, e.g. '+02:00' for Norwegian summer time",
      "type": "string",
      "pattern": "^[+-]\\d{2}:\\d{2}$"
    }
  },
  "required": [
    "latitude",
    "longitude",
    "date"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_ocean_forecast(latitude, longitude, hours)

Wave height, wave direction, and sea temperature. Covers the Norwegian coast and nearby seas.

Input Schema

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees"
    },
    "hours": {
      "default": 24,
      "description": "How many hours ahead to include",
      "type": "integer",
      "minimum": 1,
      "maximum": 48
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢find_weather_stations(latitude, longitude, count)

Find the nearest official weather stations (Frost). Use the station id (e.g. SN50540) with get_historical_weather.

Input Schema

{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees"
    },
    "longitude": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees"
    },
    "count": {
      "default": 5,
      "description": "Maximum number of stations to return",
      "type": "integer",
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "latitude",
    "longitude"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_historical_weather(station_id, from, to, elements)

Daily historical observations from a weather station (Frost archive, some stations go back over 100 years). Find station ids with find_weather_stations.

Input Schema

{
  "type": "object",
  "properties": {
    "station_id": {
      "type": "string",
      "pattern": "^SN\\d+$",
      "description": "Station id from find_weather_stations, e.g. SN50540"
    },
    "from": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "Start date, YYYY-MM-DD"
    },
    "to": {
      "type": "string",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "description": "End date (exclusive), YYYY-MM-DD"
    },
    "elements": {
      "default": [
        "mean(air_temperature P1D)",
        "sum(precipitation_amount P1D)",
        "max(wind_speed P1D)"
      ],
      "description": "Frost element ids. Defaults: daily mean temperature, precipitation sum, max wind.",
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "required": [
    "station_id",
    "from",
    "to"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools