met-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@met-mcp What's the weather in Bergen tomorrow?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 stdioRemote:
https://met-mcp.met-mcp-worker.workers.dev/mcp— Streamable HTTP on Cloudflare Workers, add it as a claude.ai connectorMCP 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 testThe 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.jsThen 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_AGENTenv 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.tsis 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
contentblocks. 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 toolsfind_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
Scored across 8 tools
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.
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.
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.
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
MET Norway (api.met.no) MCP — global weather, Nordics specials.
OpenWeather MCP — wraps the OpenWeatherMap API (openweathermap.org)
Weather MCP — wraps Open-Meteo API (free, no auth)
Current weather and 7-day forecast for any place (MET Norway). $0.006/call via x402.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides LLM-friendly weather tools and Norwegian place name resolution via MCP, enabling weather forecasts, air quality, marine conditions, and activity planning.1MIT
- AlicenseNot gradedqualityDmaintenanceIntegrates OpenWeatherMap API with MCP to provide weather data, forecasts, air quality, maps, alerts, and geocoding via natural language.14 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides 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 PyPIMIT
- AlicenseNot gradedqualityCmaintenanceEnables access to MET Norway weather data including global forecasts, Nordic nowcast, sunrise/sunset times, air quality, and ocean forecasts via natural language queries.301 npmMIT