Override Starlight's scoped card link styles (display:block, border,
padding) so "See how it works" links render as inline teal text
instead of bordered pill boxes.
- Each use-case card now links to its how-to guide
- Chart showcase below cards: tide chart + conditions dashboard
side by side, with caption linking to visualization guide
- CSS for showcase grid layout and card link styling
- Lead with "One question away" — explains NOAA's station network, the
API gap, and what mcnoaa-tides does, in plain language
- Progressive disclosure: simple explanation → use cases → technical
details → install
- Remove all "AI" references across docs (tagline, getting-started)
- Install section leads with generic MCP JSON config, not product-specific
- New splash landing page at / with hero SVG, feature cards, use-case
scenarios, and quick install section
- Replace Caddyfile redirect with direct index.mdx serving
- Header social icons: git→Gitea source, python→PyPI (was GitHub→PyPI)
- Rewrite fishing-trip, smartpot, and visualization guides as
conversation-style walkthroughs with tool calls behind tabs
- New beach activities guide: snorkeling, tide pooling, beachcombing,
kayak/paddleboard timing
- Make all examples LLM-agnostic (MCP server works with any client)
- Add CSS for splash page layout and conversation blockquote styling
HTML charts were being written to the server filesystem and returning
a path the client couldn't access. Now returns the HTML content
inline as an MCP EmbeddedResource with text/html MIME type, so the
client receives the full interactive chart over the wire.
Use MCNOAA_CHARTS_DIR env var (defaults to artifacts/charts/ for
local dev) so the container's nobody user can write HTML charts
to /tmp/charts instead of the read-only /app working directory.
The nobody user has no writable home directory, so matplotlib falls
back to creating a temporary cache dir on every import. Setting
MPLCONFIGDIR to /tmp/matplotlib gives it a stable writable path.
FastMCP defaults to /mcp but Claude.ai sends requests to /.
Add MCP_PATH env var to configure the endpoint path, set to /
in docker-compose for the connector subdomain.
Document tool annotations, structured logging, sampling summaries,
and the new test_client_capabilities diagnostic tool across getting
started, reference, and architecture pages. Fix Vite 6+ host blocking
when serving behind a reverse proxy.
ctx.report_progress() gives clients real-time visibility into
long-running tool calls. Per-fetch counters for parallel gather
calls, stage-based milestones for linear pipelines. No-op when
client doesn't send a progressToken.
- Clear /usr/share/caddy/* before copying build output to remove
the default "Caddy works!" index.html from the base image
- Add root redirect: / -> /getting-started/ (permanent)
- Fix try_files to use {path}/index.html for Starlight directories
- Switch MCP healthcheck to TCP socket (GET /mcp returns 406
without proper Accept headers)
- 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
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.
Distribution name, import package, entry point script, MCP config,
and all internal references updated. Git tracks the directory rename
so file history is preserved.
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
- 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
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.