WeatherFlow Tempest MCP Server
A Model Context Protocol (MCP) server that gives AI assistants read-only access to your own WeatherFlow Tempest weather station(s): current observations, forecasts, and station metadata.
It is not a general weather service. It does not cover:
- locations away from your station, or global/regional weather (use a public weather API)
- air quality, pollen, or smoke
- severe-weather alerts, radar, or watches/warnings
- historical archives beyond what the live Tempest API returns
🌤️ Features
- Current conditions from your station: temperature, humidity, pressure, wind, rain, solar radiation, UV, and lightning
- Forecasts: hourly (up to 48 h) and daily (up to 10 days), plus a current snapshot
- Station inventory: your stations, their locations, devices, and sensor capabilities
- Caching in memory and on disk, with a
refreshoption for the latest reading - Structured results and errors for agents: typed output schemas, explicit units, RFC3339 timestamps, and error responses that include a ready-to-run corrected call
🚀 Quick Start
Prerequisites
- Python 3.13 or higher
- WeatherFlow API token (get one at tempestwx.com/settings/tokens)
Installation
While each client has its own way of specifying, you'll generally use the following values:
| Field | Value |
|---|---|
| Command | uvx |
| Arguments | mcp-server-tempest |
| Environment | WEATHERFLOW_API_TOKEN = <YOUR TOKEN> |
Development Version
If you'd like to use the latest and greatest, the server can be pulled straight from GitHub.
Just add an additional --from argument:
| Field | Value |
|---|---|
| Command | uvx |
| Arguments | --from, git+https://github.com/briandconnelly/mcp-server-tempest, mcp-server-tempest |
| Environment | WEATHERFLOW_API_TOKEN = <YOUR TOKEN> |
Install as a Claude Code or Codex plugin
The tempest plugin bundles the server with two skills — weather-report
(current conditions, forecasts, and weather-based decisions) and
estimate-cloudiness (sky condition from solar radiation). In Claude Code:
/plugin marketplace add briandconnelly/briandconnelly-plugins
/plugin install tempest@briandconnelly-plugins
Set WEATHERFLOW_API_TOKEN in your environment before starting the client.
The plugin's sources live in this repository (.claude-plugin/,
.codex-plugin/, .mcp.json, skills/). The marketplace installs the
latest released plugin, so skill changes on main reach it with the next
release.
Install as a Desktop Extension (.mcpb)
For one-click installation in apps that support MCP Bundles (e.g. Claude for macOS/Windows):
- Download the
.mcpbfrom the latest release. - Open the file with your MCPB-capable client to launch the install dialog.
- Paste your WeatherFlow API token when prompted (the cache settings are optional).
- Make sure the extension is enabled (in Claude Desktop: Settings → Extensions). It is not turned on automatically until the required API token has been provided.
The bundle uses the MCPB uv runtime (manifest_version 0.4), so the host
must ship a recent enough uv/MCPB runtime; it resolves dependencies on first
launch — no separate Python install is required.
Troubleshooting: if the server fails to start because its install directory is read-only (uv cannot create a
.venvnext to the bundle), set theUV_PROJECT_ENVIRONMENTenvironment variable for the server to a writable path before launching.
📋 Configuration
Environment Variables
| Variable | Description | Default | Required |
|---|---|---|---|
WEATHERFLOW_API_TOKEN |
Your WeatherFlow API token | - | ✅ Yes |
WEATHERFLOW_CACHE_TTL |
In-memory cache TTL in seconds | 300 | No |
WEATHERFLOW_CACHE_SIZE |
Maximum in-memory cache entries | 100 | No |
WEATHERFLOW_DISK_CACHE_TTL |
Disk cache TTL in seconds | 86400 | No |
Caching & data freshness
The server caches responses in two layers:
- In-memory (
WEATHERFLOW_CACHE_TTL/WEATHERFLOW_CACHE_SIZE): all four data tools (tempest_get_capabilitiesis static and uncached). - On disk (
WEATHERFLOW_DISK_CACHE_TTL, default 24h):tempest_get_stationsandtempest_get_station_detailsonly. Stored underplatformdirs.user_cache_dir("mcp-server-tempest")in a per-token (hash-keyed) subdirectory.
To bypass the cache for current data, pass refresh=true to
tempest_get_observation or tempest_get_forecast. Station data has no
refresh argument: to clear it, restart the server (in-memory) or delete the
cache directory (disk). Every data result carries retrieved_at, the time the
server fetched it from WeatherFlow.
Transport
stdio (the default for uvx mcp-server-tempest and the configuration above).
🛠️ Usage
Tools
| Tool | Use it for | Arguments |
|---|---|---|
tempest_get_stations |
Listing your stations, their locations, and devices. Start here: station IDs can't be guessed. | none |
tempest_get_station_details |
One station's configuration and hardware, plus the sensor capabilities the station list omits |
station_id |
tempest_get_observation |
Current conditions | station_id; detailed (default false: condensed); refresh (default false) |
tempest_get_forecast |
Hourly and daily forecast, plus a current snapshot | station_id; hours 1–48 (default 6); days 1–10 (default 2); detailed; refresh |
tempest_get_capabilities |
What the server does and doesn't do, its tools, error codes, and a fingerprint of its interface. Needs no API token. | none |
The same capability summary is available as the MCP resource tempest://capabilities.
It is the authoritative, machine-readable contract; the table above is a quick guide.
Reading results
- Units. Observation values are always metric/SI and are described by the result's
unitsobject. Forecast values are described by the forecast's ownunits. The observation'sstation_unitsis the station owner's display preference, not the unit of the values: convert to it when presenting. Only observations carrystation_units. - Times. Raw fields such as
timestamp,time, andlightning_strike_last_epochare Unix seconds. Each has an RFC3339 UTC*_attwin:observed_atandlightning_strike_last_aton observations and the forecast'scurrent_conditions,sunrise_at,sunset_at, andday_start_aton daily forecasts, andstarts_aton hourly forecasts. Every data result carriesretrieved_at, when it was fetched upstream. Hourly forecast entries includelocal_dayandlocal_hourin the station's own timezone. - Errors come back as a tool error whose structured content has a symbolic
code(branch on it, not onmessage),temporary(plusretry_after_mswhen true), and, when the server can build one,repair: a corrected call to make as-is. The full error contract is theerror_channelfield of the capability summary. Version 0.11.0 changed the error format (nextbecamerepair); see the CHANGELOG.
🌟 Example questions
Once the server is configured, ask your assistant in plain language. Some examples, with the tool it will typically use:
| You ask | Tool |
|---|---|
| "What weather stations do I have?" / "What's my station's elevation?" | tempest_get_stations |
| "Is it raining at home right now?" / "How windy is it?" | tempest_get_observation |
| "Has there been any lightning nearby?" | tempest_get_observation |
| "Will it freeze tonight?" / "What's the forecast for the weekend?" | tempest_get_forecast |
| "Is it a good afternoon for a run?" | tempest_get_forecast |
| "What can my station measure?" / "What hardware does it have?" | tempest_get_station_details |
| "What can this weather server do?" | tempest_get_capabilities |
Building your own client instead? Any MCP client works; the tools return structured results described by each tool's output schema. See, for example, the FastMCP client docs.
🤝 Contributing
Contributions are welcome. AGENTS.md is the guide for humans and AI agents
alike: environment setup with uv, how to run the tests and linters, branch and commit
conventions (conventional commits; signed commits on main), and how pull requests are
reviewed and merged. Release notes live in CHANGELOG.md.
Please report security issues privately, as described in SECURITY.md.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🙏 Acknowledgments
- WeatherFlow for providing the Tempest weather station and API
- Model Context Protocol for the MCP specification
- FastMCP for the MCP server framework
📞 Support
- Issues: GitHub Issues
- Documentation: WeatherFlow API Docs
- Community: WeatherFlow Community
Metadata
Release files for mcp-server-tempest 0.12.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| mcp_server_tempest-0.12.0.tar.gz | 666.4 kB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| mcp_server_tempest-0.12.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 712.8 kB
Release files / mcp_server_tempest-0.12.0.tar.gz
| Download URL | mcp_server_tempest-0.12.0.tar.gz |
|---|---|
| Size | 666.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dc9b37340821b42d1213a9751f9efe24768660deb1a4aa66ea9fb02bc42533f9
|
|
BLAKE2b-256 checksum How to use checksums |
7e10c6b61ab04ae037b46d81fb76d201197a61057c2430bd90b6cecfda4047c9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logRelease files / mcp_server_tempest-0.12.0-py3-none-any.whl
| Download URL | mcp_server_tempest-0.12.0-py3-none-any.whl |
|---|---|
| Size | 46.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
3b337ca6b9d5614ed0a401baf889da0f228ae9fca9c7f4479f23524825bd9321
|
|
BLAKE2b-256 checksum How to use checksums |
a929e48cfc619db98f06cf4792d645a1837275edf1230f1d3362d4b429d1ecfa
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logSecurity for mcp-server-tempest 0.12.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for mcp_server_tempest-0.12.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.