Skip to main content
Glama

mcp-open-meteo

Owned sample MCP server for Claude Desktop or Cursor. Two tools talk to Open-Meteo (public weather API). No API key.

This is a portfolio demo, not a client deliverable. It shows the SKU shape: tool definitions, client config, README.

Tools

Tool

What it does

geocode_city

City name → lat/lon

get_forecast

Geocode a city, then current conditions + 1–7 day forecast

Related MCP server: weather-mcp-server

Requirements

  • Node 18+

  • A client that speaks MCP over stdio: Cursor (any paid Cursor plan you already use) or Claude Desktop

You do not need ChatGPT Plus. Free ChatGPT cannot attach a local custom MCP.

Claude.ai free can add one remote custom connector (a public HTTPS MCP). A local stdio server like this one is wired in Claude Desktop (claude_desktop_config.json) or Cursor (~/.cursor/mcp.json). Test with no LLM at all via MCP Inspector:

npm install
npm run inspect

Install

git clone https://github.com/Jose24San/mcp-open-meteo.git
cd mcp-open-meteo
npm install

Cursor

Settings → MCP → add a server, or merge into ~/.cursor/mcp.json:

{
  "mcpServers": {
    "open-meteo": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/mcp-open-meteo/src/index.js"]
    }
  }
}

Restart MCP (toggle the server off/on). In chat: "What's the 3-day forecast for McKinney, Texas?" Cursor should call get_forecast.

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "open-meteo": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/mcp-open-meteo/src/index.js"]
    }
  }
}

Use an absolute node path if Desktop cannot see nvm (which node). Fully quit and reopen Claude Desktop. Enable the open-meteo connector on a new chat, then ask for a forecast.

Not this sample

  • Marketing automation, email, SMS, GHL

  • OAuth or a private CRM (that's a paid gig, Standard/Premium)

  • A whole product or a RAG chatbot

Available Tools

2 tools
geocode_cityGeocode cityA

Resolve a city name to lat/lon via Open-Meteo geocoding. No API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name, e.g. McKinney

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral context. It usefully discloses the provider (Open-Meteo) and that no API key is required, but omits other relevant traits such as return format, error behavior, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and followed by a useful constraint. There is no redundant or filler text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter lookup tool with no output schema, the description covers the essential action and provider. It could mention return shape or potential multiple matches, but is otherwise sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the single parameter is already documented in the schema. The description restates 'city name' but adds no syntax, formatting, or matching behavior beyond what the schema provides, making the baseline score appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Resolve') and resource ('a city name to lat/lon'), and identifies the geocoding provider. The purpose is immediately distinguishable from the sibling tool get_forecast, which serves a different function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives no guidance on when to use this tool versus alternatives, and does not mention how it relates to get_forecast, such as needing coordinates before fetching a forecast. Usage is only implied by the tool's obvious function.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_forecastGet forecastA

Geocode a city, then return current conditions and a short daily forecast from Open-Meteo. No API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityYesCity name, e.g. Austin
daysNoForecast days, 1-7. Default 3.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses that no API key is required and that geocoding is performed internally (a hidden side effect/precondition), but says nothing about failure modes for unknown or ambiguous cities, rate limits, or the units/timezone of the returned data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and followed by the auth reassurance. Every clause carries information; no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter read tool with no output schema and no annotations, the description covers purpose and auth but leaves the return shape only loosely sketched ('current conditions and a short daily forecast'). Units, timezone, and structure of the forecast days are unstated, which an agent would need before interpreting results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both city and days (1-7, default 3) fully documented in-schema. The description adds no parameter-level detail such as date semantics or how multi-day results are keyed, so it does not exceed the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: returns current conditions plus a short daily forecast from Open-Meteo. It also clarifies that geocoding happens internally, which implicitly distinguishes it from the sibling geocode_city, though it never names that tool explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Mentions the internal geocoding step, which hints that the agent need not call geocode_city first, but there is no explicit when-to-use or when-not-to-use guidance against the sibling. Usage context is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 2 tool updatesv1.0.0
    • First observedgeocode_city
    • First observedget_forecast

TDQS

A3.7/5.0

Scored across 2 tools

Disambiguation4/5

The two tools have distinct purposes: one resolves coordinates, the other returns weather. However, get_forecast internally geocodes a city, creating slight overlap that could confuse an agent about whether geocode_city is a required prerequisite.

Naming Consistency5/5

Both names follow a clear snake_case verb_noun pattern (geocode_city, get_forecast) with no deviations.

Tool Count3/5

Only two tools is thin for a weather API server. While the tools are focused, the surface feels underdeveloped for the apparent scope of Open-Meteo.

Completeness3/5

The server covers basic geocoding and a short forecast, but notable operations like hourly forecasts, historical weather, reverse geocoding, and access to additional weather variables are missing.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers