Skip to main content
Glama

met-mcp

An MCP server for weather forecasts from MET Norway (Yr). Built as a learning project.

Available three ways:

  • npm: met-mcp — run locally over stdio

  • Remote: https://met-mcp.met-mcp-worker.workers.dev/mcp — Streamable HTTP on Cloudflare Workers, add it as a claude.ai connector

  • MCP registry: io.github.trondbjoroy/met-mcp

Tools

  • geocode_location(name, count) — find coordinates for a place name. Uses the free Open-Meteo geocoder, because MET has no geocoding API.

  • get_forecast(latitude, longitude, hours) — hourly forecast from MET Locationforecast 2.0. Works worldwide, best in the Nordics.

  • get_nowcast(latitude, longitude) — radar-based precipitation for the next 2 hours. Nordics only.

  • get_weather_alerts(latitude?, longitude?) — official Norwegian danger warnings (MetAlerts). Omit coordinates for all of Norway.

  • get_sun_events(latitude, longitude, date, utc_offset) — sunrise, sunset, and solar noon. Worldwide.

  • get_ocean_forecast(latitude, longitude, hours) — wave height and sea temperature along the Norwegian coast.

  • find_weather_stations(latitude, longitude, count) — nearest official weather stations (Frost).

  • get_historical_weather(station_id, from, to, elements) — daily historical observations from the Frost archive; some stations go back over 100 years.

The two Frost tools need a free client ID from https://frost.met.no/auth/requestCredentials.html, set as the FROST_CLIENT_ID env var (or a Cloudflare secret for the worker). The other tools need nothing.

Tool definitions live in src/tools.ts, shared between the stdio server and the worker.

Related MCP server: OpenWeatherMap MCP Server

Build and test

npm install
npm run build
npm test

The test spawns the server over stdio and calls both tools against the live APIs.

Use with Claude Code

claude mcp add met-weather -- node C:\Users\trond\met-mcp\dist\index.js

Then ask Claude: "What is the weather in Bergen tomorrow?"

MET terms of service

  • Send an identifying User-Agent with contact info. Set the MET_USER_AGENT env var, e.g. met-mcp/0.1.0 you@example.com.

  • Send at most 4 decimals in coordinates. The server rounds for you.

  • Data license: NLOD / CC BY 4.0. Credit MET Norway when you show the data.

Remote version

worker/ holds the Cloudflare Workers deployment: the same two tools served over MCP Streamable HTTP with createMcpHandler (MCP SDK v2). Develop with npm run dev, ship with npm run deploy (both from worker/).

How it works

  • src/index.ts is the whole server. It speaks MCP over stdio: JSON-RPC on stdin/stdout.

  • Each tool declares an input schema with Zod. The MCP client (Claude) reads the schema and validates arguments.

  • Tool results are content blocks. This server returns JSON as text, trimmed to what an LLM needs — the raw MET response has ~90 timesteps with far more fields.

  • Never write to stdout with console.log. It corrupts the protocol stream. Log to stderr.

Available Tools

8 tools
find_weather_stationsFind weather stationsAInspect

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

Inputs: latitude (required), longitude (required), count.

geocode_locationGeocode a place nameCInspect

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

Inputs: name (required), count.

get_forecastGet weather forecastAInspect

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

Inputs: latitude (required), longitude (required), hours.

get_historical_weatherGet historical weatherAInspect

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

Inputs: to (required), from (required), station_id (required), elements.

get_nowcastGet precipitation nowcastAInspect

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

Inputs: latitude (required), longitude (required).

get_ocean_forecastGet ocean forecastCInspect

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

Inputs: latitude (required), longitude (required), hours.

get_sun_eventsGet sunrise and sunsetBInspect

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

Inputs: date (required), latitude (required), longitude (required), utc_offset.

get_weather_alertsGet weather alertsAInspect

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.

Inputs: latitude, longitude.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.8/5.0

    Scored across 8 tools

    Disambiguation5/5

    Each tool targets a distinct weather data need: geocoding, hourly forecasts, nowcasting, alerts, solar events, ocean conditions, station lookup, and historical observations. The only potentially overlapping pair (get_forecast vs get_nowcast) is clearly separated by forecast horizon and description.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun snake_case pattern, with get_ as the dominant prefix and find_/geocode_ as clear exceptions that still follow the same grammatical structure. This makes the tool surface highly predictable.

    Tool Count5/5

    Eight tools is well-scoped for a weather data server: each tool handles a specific data type or lookup step without redundancy. The count is large enough to cover the domain but small enough to avoid overwhelming an agent.

    Completeness5/5

    The tool set covers the full observation-to-forecast lifecycle: geocoding to obtain coordinates, station discovery for historical data, current conditions, short-term nowcast, forecast, alerts, ocean conditions, and solar events. No critical gaps are apparent for the stated weather domain.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides LLM-friendly weather tools and Norwegian place name resolution via MCP, enabling weather forecasts, air quality, marine conditions, and activity planning.
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Provides weather data including current conditions, forecasts, and summaries via Open-Meteo with no API key required, enabling natural language queries through an MCP interface.
      11 PyPI
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables access to MET Norway weather data including global forecasts, Nordic nowcast, sunrise/sunset times, air quality, and ocean forecasts via natural language queries.
      301 npm
      MIT