By pridkett
Query Ambient Weather station data from InfluxDB v1 via MCP with pre-formatted InfluxQL queries
Search humidity data from the weather station. Use when the user asks about humidity, moisture, dew point context, indoor vs outdoor air quality.
Search rain and precipitation data from the weather station. Use when the user asks about rain, rainfall, precipitation, how much it rained, or daily/weekly/monthly rain totals.
Search barometric pressure data from the weather station. Use when the user asks about barometric pressure, air pressure, weather fronts, or pressure trends.
Generate a comprehensive weather summary report combining all metrics. Use when the user asks for a weather overview, full report, daily summary, or "what was the weather like" for a period.
Search historical outdoor and indoor temperature data from the weather station. Use when the user asks about temperature, heat, cold, how hot/cold it was, daily highs and lows, or indoor vs outdoor temperature over a time range.
External network access
Connects to servers outside your machine
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude Code plugin that connects to the Ambient Weather station MCP server and provides pre-formatted InfluxQL query skills for each weather metric category.
https://wagstrom2022mba.pirate-walleye.ts.net/mcp (OAuth 2.0 credentials required)claude --plugin-dir . --debug
On first use, the MCP server will return a 401 WWW-Authenticate challenge and Claude Code will
perform the full OAuth 2.0 flow automatically via .well-known discovery — no credentials to
configure in advance.
/help
You should see all 6 skills listed under the weather-influx namespace.
| Skill | Trigger | Description |
|---|---|---|
search-temperature | /weather-influx:search-temperature | Outdoor/indoor temps, highs/lows |
search-precipitation | /weather-influx:search-precipitation | Rainfall totals by period |
search-humidity | /weather-influx:search-humidity | Outdoor/indoor humidity |
search-wind | /weather-influx:search-wind | Wind speed, gusts, direction |
search-pressure | /weather-influx:search-pressure | Barometric pressure trends |
search-summary | /weather-influx:search-summary | Full weather report |
/weather-influx:search-temperature last 7 days
/weather-influx:search-precipitation how much did it rain this month?
/weather-influx:search-summary what was the weather like yesterday?
weatherhost=edgewatertempf, tempinf, humidity, humidityin, baromabsin, baromrelin,
hourlyrainin, dailyrainin, eventrainin, weeklyrainin, monthlyrainin, totalrainin,
windspeedmph, windgustmph, maxdailygust, winddir, solarradiation, uv, batt_co2If this repo is published to GitHub, teammates can install via:
/plugin marketplace add <your-org>/influx_weather_cowork_plugin
/plugin install weather-influx@wagstrom-weather
Getting Claude Code's OAuth flow to work end-to-end with Pocket ID required three non-obvious fixes. Documented here for anyone replicating this setup.
/.well-known/oauth-authorization-server via CaddyClaude Code discovers the authorization server via /.well-known/oauth-authorization-server,
not /.well-known/openid-configuration. Pocket ID does not serve the former natively, so
front it with Caddy and serve a static file at that path.
/etc/caddy/oauth-authorization-server.json:
{
"issuer": "https://YOUR_POCKET_ID_SERVER",
"authorization_endpoint": "https://YOUR_POCKET_ID_SERVER/authorize",
"token_endpoint": "https://YOUR_POCKET_ID_SERVER/api/oidc/token",
"jwks_uri": "https://YOUR_POCKET_ID_SERVER/.well-known/jwks.json",
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"code_challenge_methods_supported": ["S256"],
"token_endpoint_auth_methods_supported": ["client_secret_post", "client_secret_basic"]
}
Add a route in your Caddyfile to serve this file statically at
/.well-known/oauth-authorization-server on the Pocket ID domain.
scopes_supported in the MCP server's protected resource metadataClaude Code did not send scopes in its token requests until the MCP server's
/.well-known/oauth-protected-resource response explicitly listed them. The working response
for this server at https://wagstrom2022mba.pirate-walleye.ts.net/mcp:
{
"resource": "https://wagstrom2022mba.pirate-walleye.ts.net/mcp",
"authorization_servers": ["https://YOUR_POCKET_ID_SERVER"],
"scopes_supported": ["openid", "profile", "email", "groups"],
"bearer_methods_supported": ["header"]
}
In the Pocket ID admin UI for this MCP server's client application:
http://localhost:*/callback — Claude Code opens a local browser
redirect to complete the authorization code exchangeThe clientId in .mcp.json comes from this Pocket ID client registration. No clientSecret
is needed (or possible) for public clients.
query_weather — accepts a single InfluxQL query string.401 WWW-Authenticate / .well-known
discovery. No credentials are stored in .mcp.json — Claude Code manages token storage.--debug on first launch to confirm OAuth handshake and tool discovery.npx claudepluginhub pridkett/claude-plugins --plugin influx-weatherWeather and climate data (no API key required)
A Model Context Protocol (MCP) server for Grafana providing access to dashboards, datasources, and querying capabilities
Agent Skills for downloading climate and weather data from various sources
Aggregate and centralize performance metrics
Write SQL, explore datasets, and generate insights faster. Build visualizations and dashboards, and turn raw data into clear stories for stakeholders.
Give your AI a memory — mine projects and conversations into a searchable palace. 33 MCP tools, auto-save hooks, and guided setup.