9 Commits

Author SHA1 Message Date
a02d660764 Add Starlight docs site and MCP HTTP transport
- Starlight documentation with 12 Diátaxis-organized pages covering
  getting started, how-to guides, reference, and architecture
- Docker Compose with two services: docs (Starlight/Caddy) and
  mcp (FastMCP streamable-http), both behind caddy-docker-proxy
- Env-based transport selection in server.py — stdio default preserved,
  MCP_TRANSPORT=streamable-http activates HTTP mode for Docker
- Ocean/maritime theme with dark mode default
2026-02-22 19:05:12 -07:00
c7320e599b Add SmartPot tidal intelligence tools
4 new tools (tidal_phase, deployment_briefing, catch_tidal_context,
water_level_anomaly) and 2 prompts (smartpot_deployment, crab_pot_analysis)
for autonomous crab pot deployment planning and catch correlation.

Pure tidal phase classification in tidal.py with no MCP dependencies.
65 tests passing, lint clean.
2026-02-22 18:31:03 -07:00
9f6d7bb4ac Rename package from noaa-tides to mcnoaa-tides
Distribution name, import package, entry point script, MCP config,
and all internal references updated. Git tracks the directory rename
so file history is preserved.
2026-02-22 16:53:56 -07:00
66ec2ba9e7 Add visualization tools: tide charts and conditions dashboards
New visualize_tides and visualize_conditions MCP tools that generate
PNG (inline via MCP ImageContent) or interactive HTML (Plotly) charts.
Optional dependency group [viz] keeps the base install lightweight.

- charts/ package: rendering logic separated from MCP tool wiring
- Shared marine color palette (ocean blue, teal, slate, sand, coral)
- 14 new tests (parsing, PNG/HTML rendering, tool registration)
- Example chart images in README with realistic synthetic tidal data
2026-02-22 16:51:00 -07:00
560a72eaf6 Add README with real API response examples
Every example uses actual NOAA data captured from the live API.
Larger responses linked as JSON files in examples/ directory.
2026-02-21 21:26:57 -07:00
58022cc8c4 Fix time_zone param: lst_lte -> lst_ldt
NOAA data API accepts gmt, lst, lst_ldt — not lst_lte.
Metadata API doesn't use this param, which masked the bug.
2026-02-21 21:15:18 -07:00
bb1d26332d Add extra=ignore to Station model for NOAA API resilience 2026-02-21 21:08:36 -07:00
20059b9476 Harden error handling and input validation
- Station ID validation (7-digit regex) prevents path traversal
- Stale cache fallback: serve expired data if refresh fails
- Resilient startup: server starts even if NOAA is down
- Contextual HTTP error messages with recovery hints
- Hours range validation (1-720)
- find_nearest limit/distance validation
- search() and find_nearest() now async with cache TTL checks
- Better error type info in conditions snapshot partial failures
2026-02-21 21:08:16 -07:00
6c244b3a63 Initial implementation: FastMCP 3.0 server wrapping NOAA CO-OPS API
7 tools: station search/nearest/info, tide predictions/observations,
meteorological data (Literal selector for 8 products), and parallel
marine conditions snapshot. 3 resources, 2 prompts, full test suite.
2026-02-21 21:04:03 -07:00