au-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., "@au-weather-mcpWhat's the weather like in Sydney right now?"
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.
au-weather-mcp
Ask Claude about Australian weather and get real, current numbers — not "I don't have access to that data." This MCP server gives Claude (and other MCP clients like Cursor) live access to Australian weather data via Open-Meteo, which aggregates Bureau of Meteorology observations under licence. Plain-English location keys (sydney, cairns, alice_springs), 80+ years of historical data, 16-day forecasts.
Companion to abs-mcp (ABS macro stats), rba-mcp (Reserve Bank), and ato-mcp (tax + charity register) — together the four cover Australia's most-asked public data.
What you can ask
Once installed, your LLM can answer questions like:
Question | Real response |
What's the weather in Sydney right now? | Current temperature, humidity, wind, rain, pressure with the time stamped |
Forecast for Melbourne next week? | 7-day daily forecast with max/min temps and rain |
How was Sydney summer in January 2020? | Historical daily data from Open-Meteo's archive (1940+) |
Compare rainfall in Cairns vs Brisbane this year | Multi-location queries with provenance per row |
Tropical Queensland weather today | Search fuzzy by region/state/description |
Every response carries a CC-BY 4.0 attribution string and a direct Open-Meteo URL the agent can cite back to the user.
Why Open-Meteo (not BOM directly)
BOM publishes their own JSON/XML endpoints, but they actively 403 non-browser User-Agents and have no documented commercial-use path below their ~$5k/yr Registered User Service. Open-Meteo:
Aggregates BOM data under their existing licensing arrangements with national meteorological services
Free tier is explicit and generous; commercial use is $30/mo with public terms
Returns clean, versioned, schema-stable JSON with units alongside every value
Covers historical data back to 1940 via their archive endpoint
No API key, no User-Agent gymnastics
We attribute both Open-Meteo and BOM in every response.
Install
# After publish:
uvx au-weather-mcp
# Local dev:
uv pip install -e .Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"weather": {
"command": "uvx",
"args": ["--upgrade", "au-weather-mcp"]
}
}
}The --upgrade flag makes uvx re-check PyPI on each Claude Desktop launch, so bug fixes propagate without manual cache refresh. Costs ~100ms at startup.
For a local checkout (before PyPI publish):
{
"mcpServers": {
"weather": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/au-weather-mcp", "au-weather-mcp"]
}
}
}Cursor
Add to ~/.cursor/mcp.json:
{
"mcpServers": {
"weather": {
"command": "uvx",
"args": ["--upgrade", "au-weather-mcp"]
}
}
}Tools
Tool | What it does |
| Fuzzy-search the 21 curated AU locations by name, state, or description. |
| Lat/lng, timezone, elevation, nearest BOM station, and the canonical Open-Meteo URL. |
| Current weather observation — temp, humidity, wind, rain, pressure. 15-min cache. |
| Time-series query. Auto-routes to historical archive (1940+) or forecast (today + 16 days). Daily or hourly granularity. |
| All 21 supported location IDs. |
Accepts almost any input shape
The location parameter on every tool resolves six different input shapes — agents and users don't need to know the curated key format:
Input shape | Example | Resolves via |
Curated ID |
| Direct curated lookup (fast) |
Place name, any case |
| Normalised curated lookup |
State code or full name |
| State → capital alias |
Raw coordinates |
| Direct lat/lng (AU bbox enforced) |
Any AU place name |
| Open-Meteo geocoding (AU-filtered, population-sorted) |
Typo of a curated name |
| High-confidence fuzzy match |
Every response includes a location_resolution field with one of curated, state_alias, raw_coordinates, geocoded, or fuzzy_curated — so the agent (and the user) can see HOW the input was interpreted.
Curated locations
21 locations covering all 8 state/territory capitals plus 13 major regional centres:
Region | Locations |
Capitals (8) |
|
NSW regional |
|
QLD regional |
|
VIC regional |
|
TAS regional |
|
Remote |
|
Coordinates are anchored to the canonical BOM observation point for each city (e.g. Sydney = Observatory Hill, Melbourne = Olympic Park) so cross-checking against BOM's official observations is straightforward. See src/au_weather_mcp/data/curated/locations.yaml for the full registry.
Worked examples
"What's the weather in Sydney right now?"
latest(location="sydney")Returns:
{
"location_id": "sydney",
"location_name": "Sydney",
"state": "NSW",
"latitude": -33.8607,
"longitude": 151.205,
"timezone": "Australia/Sydney",
"period": {"start": "2026-05-12T11:30", "end": "2026-05-12T11:30"},
"current": {
"time": "2026-05-12T11:30",
"temperature_c": 19.7,
"apparent_temperature_c": 18.1,
"relative_humidity_pct": 67,
"precipitation_mm": 0.0,
"cloud_cover_pct": 43,
"pressure_msl_hpa": 1034.5,
"wind_speed_kmh": 18.4,
"wind_direction_deg": 149,
"wind_gusts_kmh": 43.2,
"weather_code": 1,
"weather_description": "Mainly clear"
},
"source": "Open-Meteo (aggregates Bureau of Meteorology data under licence)",
"attribution": "Weather data by Open-Meteo.com (https://open-meteo.com), licensed under CC BY 4.0...",
"source_url": "https://api.open-meteo.com/v1/forecast?latitude=-33.8607&...",
"server_version": "0.1.0"
}"How was Sydney in January 2020?"
get_weather(
location="sydney",
start_date="2020-01-01",
end_date="2020-01-31",
granularity="daily"
)Returns 31 DailyAggregate rows with temperature_max_c, temperature_min_c, precipitation_sum_mm, and weather descriptions per day.
"7-day Melbourne forecast, hourly detail"
get_weather(
location="melbourne",
start_date="2026-05-12",
end_date="2026-05-19",
granularity="hourly"
)Returns 168 hourly rows.
Date formats
start_date and end_date must be YYYY-MM-DD. The server validates both the regex and the semantic date — 2024-13-40 raises a clean ValueError rather than silently failing.
Date range | Routes to | Coverage |
| Open-Meteo forecast endpoint | Today + 16 days |
| Open-Meteo historical archive | 1940-01-01 onwards |
Trust contract
Every response carries:
source_url— the exact Open-Meteo URL the data came fromattribution— CC-BY 4.0 notice for both Open-Meteo and BOMretrieved_at— UTC timestamp when we fetchedserver_version— which wheel served the call (debugging staleuvxcaches)stale— true if we're serving cached data because upstream failed; comes withstale_reason
Sanity validators reject upstream values outside the plausible Australian range (temperature outside −30°C to +55°C, humidity outside 0-100%, pressure outside 850-1080 hPa). Rather than silently passing bad data to your agent, we raise an explicit validation error so the agent can degrade gracefully.
Development
git clone https://github.com/Bigred97/au-weather-mcp.git
cd au-weather-mcp
uv sync --extra dev
uv pip install -e .
# Unit tests (no network)
uv run pytest
# Live integration tests (hits Open-Meteo)
uv run pytest -m liveThe SQLite cache lives at ~/.au-weather-mcp/cache.db. Current observations refresh every 15 minutes (matching Open-Meteo's update cadence), forecasts every 1 hour, historical never (a year-old day in the archive doesn't change). Delete the file to force a refresh.
Sister servers
The four packages run side-by-side in any MCP client; Claude disambiguates via the server prefix (weather:latest vs abs:latest vs rba:latest vs ato:get_data).
abs-mcp — Australian Bureau of Statistics: labour force, CPI, GDP, wages, housing, population
rba-mcp — Reserve Bank of Australia: cash rate, FX, lending rates
ato-mcp — Australian Taxation Office + ACNC: personal tax by postcode, company tax, charity register
Data attribution
Weather data is provided by Open-Meteo, licensed under CC BY 4.0. The underlying observations include data from the Australian Bureau of Meteorology under Open-Meteo's licensing arrangement. Every WeatherResponse from this server includes the full attribution string. If you redistribute responses, credit both Open-Meteo and the BOM.
Changelog
See CHANGELOG.md for release history.
License
MIT — Harry Vass, 2026.
Latest Blog Posts
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/Bigred97/au-weather-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server