weather-mcp
Click on "Install 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., "@weather-mcpWhat's the weather in London next week?"
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.
weather-mcp
An MCP server for weather, over Open-Meteo. Forecasts anywhere in the world, hour by hour when the day matters, and observed history for the trips that are still too far out to forecast.
No API key. Open-Meteo's free tier needs no credential at all for non-commercial use, so there is nothing to store and nothing to leak. It runs over stdio locally, or over authenticated HTTP for a remote client such as a Claude connector.
Built for one question in particular: I have a trip — what should I expect?
Tools
Tool | What it does |
| A name → the places it could mean, with coordinates, region and timezone. The disambiguator. |
| Daily outlook for a place and date range: highs, lows, rain chance, wind. Up to 16 days. |
| One day, hour by hour, with contiguous rain windows called out. |
| What the weather actually did on these dates in past years. History, for trips past the horizon. |
| Ranks the days ahead by how pleasant it will be outside. For picking a day to hike. |
GET /health is served unauthenticated alongside them, for monitoring.
Related MCP server: Weather Prediction MCP Server
The three things worth knowing
Places are ambiguous and forecasts are not self-checking
"Springfield" is five real US cities. "Portland" is two large ones. A forecast for the wrong one looks exactly like a forecast for the right one — there is no signal in the numbers that anything went wrong.
So every tool takes a place as ordinary text, resolves it, and names the place it resolved to in every reply, along with the other candidates it matched:
Forecast for Boston, Massachusetts, United States (also matched: Boston,
New York, United States; Boston, Georgia, United States)search_locations exists for the cases where that is not enough and the model
should ask. It is not a required first step.
The horizon is 16 days, and that is the data, not a setting
api.open-meteo.com refuses anything further out:
{"reason":"Parameter 'start_date' is out of allowed range from
2026-06-06 to 2026-09-22","error":true}Which is a problem, because trips get planned months ahead and the weather
question arrives with the flights. get_typical_weather answers that case from
the Historical Weather API — the same calendar window in each of the last ten
complete years, as observed:
Typical weather for 10-14 to 10-18 in Boston, Massachusetts, United States
This is what actually happened in 2016–2025 (10 years), not a forecast.
- Average high 64.2°F, average low 48.1°F
- Warmest 79.3°F, coldest 36.9°F
- Rain during this window in 7 of 10 yearsThis is history and the tools say so in the first line, in the docstrings, and
in the structured payload ("kind": "history"). It answers what to pack, not
what will happen.
The Climate API would answer far-future dates directly, and is deliberately not used: it returns downscaled CMIP6 climate projections, numbers that read exactly like a forecast and are not one.
Timezones belong to the destination, not the server
A forecast for "the day of" is meaningless without a local day boundary, and the relevant boundary is the destination's. This matters most for the case the server was built for: asking about a destination from a laptop that is somewhere else entirely, which is the normal state of affairs when the question is about a trip.
Every request goes out with timezone=auto, so the API anchors the days to the
place being asked about. When no dates are given, the range is expressed as a
day count rather than computed dates, so "the next week" starts on today at
the destination. The server's own clock is never consulted for this.
Picking a day is not the same as reading a forecast
"What's a good day for a hike in the next two weeks" is arithmetic over three
hundred hourly readings, and doing it by eye off a daily forecast goes wrong in
two specific ways. find_best_days exists for it, and makes two decisions:
It scores the hours you would actually be outside — 8am to 6pm by default, adjustable — rather than the whole day. A daily high is one afternoon moment, and a daily rain chance includes the hours you were asleep.
It scores feels-like, not temperature. Open-Meteo's apparent_temperature
already folds in humidity, wind chill and sun, which is exactly the difference
between 85°F in Austin and 85°F in Denver. Reconstructing that from dry-bulb
temperature plus a humidity correction would be rebuilding, worse, something the
API already did.
The penalty for heat is quadratic, which is not decoration. With a linear one, a
real Austin day running 87°F to 104°F feels-like scored 79 and came back "good
for a hike" — ten pleasant morning degrees had averaged out a dangerous
afternoon. Squaring the deviation before averaging drops it to 16, which is the
right answer. Both calibration points are pinned in tests/test_comfort.py.
The ranking is a stated preference, not a measurement, so every day comes back with the numbers behind it and days scored poor are named as days to avoid rather than padding out a top five:
Best days to be outside in Austin
Scored over 08:00–18:00 America/Chicago, comfortable between 50°F and 78°F feels-like.
1. 2026-09-18 — excellent (89/100)
feels like 72°F–86°F, overcast, 11% chance of rain, wind to 8 mph, 35% humidity
2. 2026-09-17 — good (82/100)
feels like 79°F–89°F, overcast, 10% chance of rain (0.03 inch), wind to 13 mph, 64% humidity
Worth avoiding: 2026-09-07 (feels like 104°F), 2026-09-08 (feels like 105°F)Setup
Requires Python 3.12+ and uv.
uv sync
cp .env.example .env # then set your home locationuv run weather-mcp # stdio
WEATHER_MCP_TRANSPORT=http uv run weather-mcp # http on 127.0.0.1:18791To use it from Claude Code over stdio:
claude mcp add weather -- uv --directory /path/to/weather-mcp run weather-mcpConfiguration
Everything is environment variables; nothing is read from .env by the server
itself, which only documents them.
Variable | Default | Meaning |
| — | Home location as |
|
| What to call it in replies. |
| resolved | IANA zone for the home label. Optional; forecasts resolve it from the coordinates regardless. |
|
|
|
|
|
|
|
|
|
|
|
|
|
| HTTP bind address. |
|
| HTTP bind port. |
|
|
|
|
|
|
| — | Shared password. Required when |
| — | Public URL; becomes the OAuth issuer. Required when |
|
| Where OAuth state is persisted. |
WEATHER_MCP_HOME is coordinates, not a name. A name would be re-geocoded
on every call, and re-resolved — so a shift in how Open-Meteo ranks "Austin"
could quietly move home from Texas to Minnesota. Run search_locations once and
paste the numbers.
Authentication
A remote MCP client has one input field: a URL. There is nowhere to put an API
key. So WEATHER_MCP_AUTH=password starts a self-contained OAuth 2.1
authorization server whose only credential is one shared password — the client
discovers it, registers itself, and gets redirected to a password form.
Dynamic client registration, PKCE, discovery metadata and the 401 challenge
come from FastMCP and the MCP SDK. This project adds the login screen and the
credential check. Registered clients and tokens persist across restarts;
authorization codes and in-flight logins are deliberately memory-only.
The data served is public weather, so an open port leaks nothing about the operator. What it does hand out is the call budget this server runs on — 10,000 requests a day, shared with every real tool call, on a tier with no uptime guarantee. That is the reason to authenticate.
Bind to localhost and put a tunnel or reverse proxy in front of it. See docs/deployment-macos.md.
Notes on Open-Meteo
Findings that shaped the implementation, each verified against the live API:
Geocoding is included, at
geocoding-api.open-meteo.com, on the same free terms. A separate geocoding service is not needed. It returns the IANA timezone alongside the coordinates, which is the part that makes local day boundaries correct.There is no reverse geocoding. Passing
latitude/longitudeto the geocoding endpoint is rejected outright. Coordinates → place name is not available at any price, so this server never attempts it.Errors arrive as
200 OKabout as often as4xx, with{"error": true, "reason": "..."}in the body. The body is therefore parsed before the status is judged. Thereasonstrings are unusually good and are passed through to the model unedited — they say exactly which parameter was wrong and what range was allowed.Units are per family.
temperature_unit=fahrenheitdoes not make precipitation come back in inches; it stays in millimeters untilprecipitation_unitis set too. Replies read the units back off the response rather than echoing the request, so a number can never be labeled with a unit it is not in.Pollen is Europe-only. Berlin returns real grass and birch counts; every US coordinate returns
nullfor every hour. This is why the Air Quality API is not wrapped — the half of it that works in the US is not worth a tool.The archive is current to about yesterday, not lagged by weeks as the "historical" framing suggests.
get_typical_weatherstill uses only complete past years, so a partly-observed current year can never skew an average.
Development
uv sync --extra test
uv run pytest
uvx ruff@0.16.4 check src testsThe suite is entirely offline — no test reaches Open-Meteo. Fixtures reproduce the exact payload shapes the API returns, including its column-array layout.
License
MIT
Available Tools
5 toolsfind_best_daysA
Rank the days ahead by how pleasant it will be outside. For planning a hike or similar.
Answers "when should I go", not "what is the weather". Use it when the user wants a day picked out of a range — a hike, a ride, a picnic, painting the fence — rather than the outlook for a day they have already chosen.
Days are scored over the hours actually spent outside (8am to 6pm by default), not over the whole day, because a daily high is one afternoon moment and a daily rain chance includes the hours you were asleep. The temperature scored is feels-like, which already accounts for humidity, wind chill and sun — so a muggy 85°F is correctly ranked below a dry one.
The ranking is a stated preference, not a measurement. Every day comes back with the numbers behind it — feels-like range, rain chance, wind, humidity — so report those alongside the pick rather than the score alone.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | How many days ahead to consider. | |
| limit | No | How many days to return. | |
| endHour | No | Last hour to consider, exclusive, 24-hour local time. | |
| location | No | Place name or 'latitude,longitude'. Omit for the home location. | |
| startHour | No | First hour to consider, 24-hour local time. | |
| maxTemperature | No | Warmest comfortable feels-like temperature. Defaults to 78°F / 25.5°C. | |
| minTemperature | No | Coldest comfortable feels-like temperature. Defaults to 50°F / 10°C. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full behavioral disclosure. It explains that scoring is over hours actually spent outside (8am–6pm), uses feels-like temperature that accounts for humidity and wind chill, and that the ranking is a stated preference, not a measurement. It also discloses that each day returns supporting numbers (feels-like range, rain chance, wind, humidity) and instructs the agent to report those alongside the pick.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than average but well-structured and front-loaded with the core purpose. Each paragraph adds distinct value: usage guidance, scoring logic, and output expectations. No filler or redundancy. Slightly verbose for the simplicity of the tool, but justified by the need to explain the scoring nuances.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description fully covers what the agent should expect and how to report results. It explains the ranking rationale, the parameters' influence, and the output format. There are no critical gaps that would leave an agent guessing how to invoke or interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful context beyond the schema: it ties startHour/endHour to the outdoor hours window, explains that temperature parameters are feels-like, and clarifies that location can be omitted for home. This enhances parameter understanding without repeating schema text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Rank') and resource ('days ahead'), and immediately clarifies the purpose: picking a pleasant day for outdoor activities. It explicitly distinguishes this from 'what is the weather', which separates it from sibling forecast tools. The contrast with 'a day they have already chosen' further disambiguates it from get_forecast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance: 'Use it when the user wants a day picked out of a range — a hike, a ride, a picnic, painting the fence — rather than the outlook for a day they have already chosen.' It also states what the tool answers ('when should I go') versus what it does not. This is direct and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forecastA
Daily weather forecast for a place: highs, lows, rain and wind, day by day.
The main tool. Answers "what is the weather doing this week", "how warm will it be in Boston next Tuesday", and "will it rain while I am there".
Give dates when you have them -- from a calendar event, say -- and they are read as local dates at the destination, not wherever this server is running. Give neither and it covers the next week starting from today at that location, which is the right anchor when the place is in another timezone.
Forecasts reach at most 16 days ahead; that is a limit of the data. For a trip further out, use get_typical_weather, which reports what the weather actually did on those dates in past years rather than pretending to predict.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Days ahead from today at the location, when no dates are given. | |
| endDate | No | Last day, ISO 8601 (YYYY-MM-DD). | |
| location | No | Place name or 'latitude,longitude'. Omit for the home location. | |
| startDate | No | First day, ISO 8601 (YYYY-MM-DD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It explains a non-obvious behavior: dates are interpreted as local dates at the destination, not server dates. This provides useful transparency. It does not mention side effects, but as a read-only forecast tool, none are implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and informative, using examples and clarifications without unnecessary repetition. It flows logically from purpose to usage nuances to edge cases, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, key behaviors, and relationship to a sibling tool. Since there is no output schema, it does not need to detail return structure, and the input parameters are fully described in the schema. An agent has sufficient information to decide when and how to call the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptive text for all four parameters (startDate, endDate, location, days), covering their format and meaning. The tool description adds context about default behavior when no dates are given, but this does not enhance the understanding of individual parameters beyond the schema, so it remains at the baseline of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides daily weather forecasts with highs, lows, rain, and wind. It distinguishes itself from get_typical_weather by explicitly mentioning that tool for longer-range historical data, making the purpose unambiguous relative to at least one sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete guidance on when and how to use the tool: provide dates if known, otherwise the anchor is today at the destination. It explicitly directs users to get_typical_weather for trips further out. However, it does not explicitly contrast with get_hourly_forecast, leaving some ambiguity about when daily vs. hourly is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hourly_forecastA
Hour-by-hour forecast for one day: when exactly the rain arrives.
Use this once the day matters more than the week -- "will it rain during the 2pm walk", "is the morning or the afternoon better for the drive". For a multi-day outlook use get_forecast instead; this returns 24 rows and is wasteful for a question about a week.
The day must be within the 16-day forecast horizon, and is read as a local date at the location.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | The day to break down, ISO 8601 (YYYY-MM-DD). | |
| location | No | Place name or 'latitude,longitude'. Omit for the home location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns 24 rows, requires the date to be within the 16-day forecast horizon, and interprets the date as local at the location. This is strong transparency, though it doesn't detail error handling for out-of-range dates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, with the core purpose stated first, followed by usage guidance and constraints. Every sentence adds value, and the length is appropriate for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is self-contained: it explains the return granularity, usage scenarios, alternatives, and date constraints. Even without an output schema, an agent knows what to expect and how to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds meaningful context to the 'date' parameter by stating the 16-day horizon and local-date interpretation, which enhances the agent's understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides an hour-by-hour forecast for one day, specifically focusing on when rain arrives. It differentiates from the sibling get_forecast by emphasizing the single-day scope and the hourly granularity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool (when the day matters more than the week) and when not to, pointing to get_forecast for multi-day outlooks. Also warns about the 24-row return being wasteful for week-long questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_typical_weatherA
What the weather actually did on these dates in past years. Not a forecast.
For trips beyond the 16-day forecast horizon, which is most trips at the point they get planned. Returns observed history: the average high and low for this window over recent years, the extremes, and how many of those years saw rain during it.
This is history and must be described as history. It says what to pack, not what will happen. Once the dates come within 16 days, get_forecast replaces it entirely — do not keep quoting averages when a real forecast exists.
The year is taken from the dates only to fix the calendar window; the summary always covers complete past years.
| Name | Required | Description | Default |
|---|---|---|---|
| years | No | How many past years to summarize. | |
| endDate | Yes | Last day of the window, ISO 8601. | |
| location | No | Place name or 'latitude,longitude'. Omit for the home location. | |
| startDate | Yes | First day of the window, ISO 8601. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It clearly states this is historical data, not a forecast, and explains that the year in the dates only fixes the calendar window while the summary covers complete past years. It also describes the return contents (average high/low, extremes, rain count). It lacks explicit statements about side effects or error conditions, but for a read-only historical query the description provides adequate behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded: the first line states the core purpose and non-forecast nature, followed by usage context, return details, and a behavioral note. While it spans multiple paragraphs, each sentence contributes essential information without fluff. It could be tightened slightly but remains efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and four parameters, the description covers the essential return data (averages, extremes, rain count) and explains the critical usage context (forecast horizon and replacement by get_forecast). It addresses the year parameter's semantics and the historical nature. Minor gaps like error handling or explicit response format are not covered, but the description is sufficiently complete for an agent to invoke the tool correctly and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% description coverage for all parameters, setting a baseline of 3. The description adds semantic value beyond the schema, particularly for the year aspect: it clarifies that the year in the dates is used only to fix the calendar window and that the summary always covers complete past years. This nuanced interpretation is not in the schema and helps agents avoid misusing the year field. The description also implicitly explains the 'years' parameter by mentioning 'over recent years'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns observed historical weather data for a date window, explicitly contrasting with forecasts. It names the resource (typical weather) and the action (get), and distinguishes itself from sibling tools like get_forecast by highlighting the historical vs forecast nature. The purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use this tool: for trips beyond the 16-day forecast horizon, and explicitly states when not to use it — once dates fall within 16 days, get_forecast replaces it. It names the alternative tool directly and instructs not to keep quoting averages. This is a model example of usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_locationsA
Find the places a name could refer to, with coordinates and timezone.
Use this when a place name is ambiguous and the context does not settle it -- 'Springfield' is five US cities, 'Portland' two large ones - or when you want coordinates to pass to the other tools directly.
The other tools accept a place name themselves and do not need this first. Reach for it to disambiguate, not as a routine preliminary step.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many candidates to return. | |
| query | Yes | A place name, optionally with region or country. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the burden of disclosing behavior. It clearly indicates a read-only search (finding places) with no mentions of destructive actions or side effects, but it doesn't explicitly state that it does not modify data or mention any authentication/rate-limit constraints. However, the nature of a search tool makes these omissions acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. Each sentence serves a purpose: the first defines the function, the second explains when to use it, and the third clarifies when not to use it. There is no redundant or extraneous information, making it easy for an agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides sufficient context for an agent to determine when and how to use this tool. It mentions the output includes coordinates and timezone, and it explains the relationship to sibling tools (that they accept place names directly). Without an output schema, the description does not need to detail return values, but it gives enough hints about the expected results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers both parameters (query and limit) with descriptions, providing 100% coverage. The tool description itself adds no additional semantic information beyond the schema; it only references the query parameter in the context of disambiguation. Since schema coverage is complete, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Find the places a name could refer to') and the resource (place names), clearly distinguishing it from the sibling tools like get_forecast. It also clarifies its role as a disambiguation step, which is unique among the provided tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly specifies when to use this tool: when a place name is ambiguous or when coordinates are needed for other tools. It also explicitly states when not to use it ('not as a routine preliminary step') and notes that other tools accept place names directly, leaving no ambiguity about its role.
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. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
find_best_days - First observed
get_forecast - First observed
get_hourly_forecast - First observed
get_typical_weather - First observed
search_locations
TDQS
Each tool has a clearly distinct purpose: location lookup, daily forecast, hourly forecast, historical typical weather, and best-day ranking. No overlapping or ambiguous functionalities.
All tools follow a consistent verb_noun snake_case pattern (search_locations, get_forecast, get_hourly_forecast, get_typical_weather, find_best_days), making the API predictable and intuitive.
Five tools is well-scoped for a weather service: it covers location search, current/daily forecasts, hourly details, historical norms, and planning recommendations without unnecessary bloat.
The tool set provides comprehensive weather coverage: disambiguation (search_locations), forward-looking forecasts (get_forecast, get_hourly_forecast), historical context (get_typical_weather), and decision support (find_best_days). No critical gaps identified.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Global weather via Open-Meteo: forecast, ERA5 archive, marine, air quality, geocoding, elevation.
Weather forecasts from MET Norway (Yr): geocoding plus hourly forecasts worldwide.
Real-time weather conditions and multi-day forecasts via Open-Meteo — free, no API key required
Forecasts, climate history, severe alerts by location — for outdoor-event planners.
Related MCP Servers
- FlicenseBqualityDmaintenanceProvides current weather conditions and forecasts for any location using the Open-Meteo API.2-
- FlicenseNot gradedqualityBmaintenanceProvides current weather, multi-day forecasts, and umbrella recommendations through natural language queries, backed by the Open-Meteo API.-
- FlicenseNot gradedqualityCmaintenanceProvides real-time weather data, forecasts, and explainable predictions (umbrella, travel, city comparisons) via natural language, powered by Open-Meteo.-
- FlicenseNot gradedqualityBmaintenanceProvides current weather, forecasts, and travel recommendations via Open-Meteo, enabling natural language queries about weather conditions.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/duanefields/weather-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server