Skip to main content
Glama

Open-Meteo MCP

An Agent Plugin that gives Cursor (and other Agent Plugin clients) Open-Meteo forecast tools. No API key. The MCP server is a Node.js stdio process with no npm dependencies.

Weather data comes from the public Open-Meteo forecast API. Place names resolve through the geocoding API.

Install in Cursor

You need Node.js 18.18 or newer (node -v).

Local plugin folder

Cursor loads Agent Plugins from ~/.cursor/plugins/local after a window reload. The folder must live inside that directory. Cursor skips a symlink that points at a repo elsewhere on disk.

  1. Clone this repository.

  2. Copy it into the local plugins directory:

mkdir -p ~/.cursor/plugins/local
cp -R /path/to/open-meteo-mcp ~/.cursor/plugins/local/open-meteo
  1. Reload Cursor (Developer: Reload Window).

  2. Open Customize and confirm the Open-Meteo MCP server and the check-weather / compare-forecast skills.

Project MCP config (MCP only)

If you only want the tools in this repo, add an absolute path to .cursor/mcp.json:

{
  "mcpServers": {
    "open-meteo": {
      "command": "node",
      "args": ["/absolute/path/to/open-meteo-mcp/src/server.js"]
    }
  }
}

This plugin is not listed on the Cursor Marketplace or cursor.directory.

Related MCP server: MCP Weather Server

Run and test locally

From the repo root:

npm test
node src/cli.js current --latitude 52.52 --longitude 13.41
node src/cli.js forecast --latitude 52.52 --longitude 13.41 --forecast-days 3
node src/cli.js geocode Berlin
npm run proof

npm test covers query parsing, Open-Meteo JSON mapping, WMO labels, and the MCP initialize / tools/list handshake. npm run proof calls live Open-Meteo for Berlin (52.52, 13.41) through the client and through MCP tools/call, then writes docs/proof.md.

npm start (or node src/server.js) speaks MCP on stdio. Do not type into that process. If stdin is a terminal, the server prints a hint on stderr and exits. Drive it with a client or the proof script.

Tools

Tool

Use for

geocode_location

Place name to lat/lon

get_current_weather

Current conditions only

get_forecast

Current plus hourly and daily series

Coordinates are WGS84. timezone defaults to auto. forecast_days is 1 to 16. Units are Open-Meteo's: temperature_unit (celsius / fahrenheit), wind_speed_unit (kmh / ms / mph / kn), precipitation_unit (mm / inch).

If you omit variable lists, v1 sends:

  • current: temperature_2m,relative_humidity_2m,apparent_temperature,precipitation,weather_code,wind_speed_10m,wind_direction_10m

  • hourly: temperature_2m,precipitation_probability,precipitation,weather_code,wind_speed_10m

  • daily: weather_code,temperature_2m_max,temperature_2m_min,precipitation_sum,precipitation_probability_max

Pass [] or "" for current, hourly, or daily to drop that block from the request.

Every weather_code is labeled with the Open-Meteo WMO WW table. Codes outside that table come back as Unknown WMO weather code N.

Open-Meteo errors ({ "error": true, "reason": "..." }, HTTP 400) return as { "ok": false, "status": 400, "reason": "..." } with MCP isError: true.

Example calls

Current conditions in Berlin:

{
  "name": "get_current_weather",
  "arguments": { "latitude": 52.52, "longitude": 13.41 }
}

Three-day daily outlook after geocoding:

{
  "name": "geocode_location",
  "arguments": { "name": "Berlin", "count": 1 }
}
{
  "name": "get_forecast",
  "arguments": {
    "latitude": 52.52,
    "longitude": 13.41,
    "forecast_days": 3,
    "hourly": []
  }
}

Layout

plugin.json          Agent Plugin manifest
mcp.json             stdio MCP server
skills/              agent skills
src/open-meteo.js    forecast + geocode client
src/weather-codes.js WMO labels
src/tools.js         tool schemas
src/server.js        JSON-RPC stdio
src/cli.js           same client, for humans and proof

v1 is forecast only. No archive, air-quality, or marine endpoints.

mcp.json passes ${CURSOR_PLUGIN_ROOT}/src/server.js to node because Cursor does not expand the Agent Plugins ${PLUGIN_ROOT} placeholder. A project .cursor/mcp.json should use an absolute path instead, as in the install section.

Attribution

Weather data by Open-Meteo. Cite Open-Meteo when you publish products that use this plugin. The public forecast endpoint is for non-commercial use under Open-Meteo's terms.

License

MIT. See LICENSE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time weather updates and city geocoding by integrating the Nominatim and Open-Meteo APIs. It enables users to retrieve current weather conditions for any location through natural language queries in MCP-compatible clients.
    8 npm
    -
  • A
    license
    B
    quality
    D
    maintenance
    Provides tools to retrieve current weather conditions and daily forecasts for cities worldwide using the Open-Meteo API. This Python-based server enables MCP-compatible clients to access real-time meteorological data through a standardized interface.
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Wraps the OpenWeatherMap API to provide weather data through MCP, enabling AI agents to query current conditions, forecasts, and other weather information via natural language.
    5 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    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.
    MIT