stormscope CLAUDE.md

Repository instructions for StormScope, a Python server that gathers United States weather data from several public and personal weather sources and exposes it to AI assistants through MCP.

In plain words
What is it for?
Developing StormScope, running its Python test suite, and understanding where its weather tools and source clients live.
Why use it?
They give coding agents the project’s commands, structure, data sources, and testing expectations in one place.

Instructions file

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add instructions/thornjad/stormscope/claude-md
Clone the repo
git clone --depth 1 https://github.com/thornjad/stormscope
Per session 1,053 This file is loaded in full into every session.
When invoked 1,053 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.01053 $0.01053
Opus 5 $0.00526 $0.00526
Sonnet 5 $0.00211 $0.00211
Haiku 4.5 $0.00105 $0.00105

Measured 2d ago against content hash c965a4638c31, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

stormscope CLAUDE.md scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

CLAUDE.md · 50 lines

How it starts

The opening of the file, as written. The whole thing — 50 lines — stays where its author put it; the contents beside it link to each section on GitHub.

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

What This Is

StormScope is a real-time US weather data MCP server. It aggregates data from NWS (National Weather Service), NOAA SPC (Storm Prediction Center), Iowa Environmental Mesonet (NEXRAD radar), Open-Meteo (500mb upper-air model data), and optionally WeatherFlow Tempest personal weather stations into 9 tools consumed by AI assistants via the FastMCP framework.

Commands

uv sync --group dev              # install all dependencies including dev
uv run python -m pytest          # run all tests
uv run python -m pytest tests/test_nws.py           # run a single test file
uv run python -m pytest tests/test_nws.py -k "test_name"  # run a single test

There is no separate build or lint step. The project uses hatchling as build backend but day-to-day development is just edit-and-test. Requires Python >=3.11.

Architecture

All code lives in src/stormscope/. The server exposes 9 async MCP tools defined in server.py, with implementations in tools.py that aggregate results from seven data-source clients:

  • nws.py — NWS API client (conditions, forecasts, alerts, gridpoint data). Has per-endpoint TTL caching and retry logic.
  • spc.py — SPC outlook client. Parses GeoJSON for categorical and probabilistic severe weather risk (tornado/wind/hail), days 1-3.
  • codsus.py — WPC Coded Surface Frontal Positions (CODSUS/ASUS02) parser and client. Fetches the hand-analyzed surface bulletin from IEM every 3 hours, parses 7-digit encoded coordinates into structured front segments and pressure centers. Used by get_surface_analysis for current conditions.
  • wpc.py — WPC national forecast chart client. Parses GeoJSON for frontal positions and pressure centers from the prognostic chart, days 1-3. Used by get_surface_analysis with product="forecast".
  • iem.py — Iowa Mesonet client for NEXRAD radar station metadata and imagery URLs.
  • openmeteo.py — Open-Meteo client for 500mb pressure-level data (heights, temperature, wind). Fetches a 5-point cross pattern for vorticity computation.
  • tempest.py — WeatherFlow Tempest personal weather station client. Resolves stations by ID, name, or proximity and enriches NWS conditions with hyper-local sensor readings (solar radiation, UV index, lightning, air density, wet bulb temperature). Falls back silently to NWS when unavailable.

Read the full file on GitHub · 50 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 2d ago First seen · 50 lines · 1,053 tokens per session scan A c965a4638c31

Subscribe to this mod's changes

stormscope CLAUDE.md is an instructions file published in the GitHub repository thornjad/stormscope (4 stars, last pushed 2mo ago), licensed ISC. It adds 1,053 tokens to every session, about $0.0053 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.