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
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools
verifiedversion not recorded8 tools