CIROH DevCon 2026

TethysDash + MCP

A two-hour hands-on workshop
01 - Setup

Bring up the stack.

Pick the path that matches your situation

  • Four containers: tethysdash:8000 · tethysdash_mcps:9001 · nrds_mcps:9000 · devcon_mcp:9003
  • VM path: SSH from your laptop + tunnel.sh, open http://localhost:8000, edit via code-server or VS Code Remote-SSH
  • Local path: Docker Desktop on your machine, everything on localhost, no SSH tunnel
  • Login: admin / admin
  • Scan the QR for the full setup runbook
Updates

Stale stack? One command.

Run on your VM if MCP won’t connect or anything looks out of date.

cd ~/workshops/devcon/ && \
  git pull --ff-only && \
  bash scripts/update.sh

Then hard-refresh your browser: Ctrl + Shift + R

Pulls workshop repo + source repos, restarts containers, waits for health.

02 - Definitions

Meet your Digimon.

AI concepts, six analogies, one table.

Concept Digimon analogy
LLM The Digimon itself. Rookie → Champion → Ultimate → Mega.
MCP Tools Special attacks. Call APIs, query data, build dashboards.
Context The battlefield + memories. Everything the Digimon can see right now.
Tokens + Window Memory field size. More fragments equals more situational awareness.
Prompt Templates Training commands. Reusable patterns that get good results.
Embeddings Memory association. Meaning encoded as numbers.
03 - Making Dashboards

Talk to the chatbox.

Walk three tutorials, one dashboard at a time

  • Wire the chatbox MCP server to http://localhost:9001/mcp (tethysdash_mcps)
  • RFC Max Stage Analysis: text title, two variable inputs, a map with NOAA Forecast layer, three NWMP plugins linked by variable
  • GEOGLOWS: country-scoped Flowlines map, custom popup with GeoGLOWS forecast plot per river
  • SLC RFC Office: NOAA river gauges + RFC boundary + NWMP gauge time series, linked by gaugeID
  • If the LLM hallucinates: follow the tutorial manually, then refine the prompt
04 - NRDS Exploration

Hydrology data via MCP.

Production NRDS tools, talking to NWM outputs

  • Wire the chatbox MCP server to http://localhost:9000/mcp (nrds_mcps)
  • Map: dark basemap centered on SLC + PMTiles Flowpaths vector layer
  • Time series plot: flow / velocity by feature id, across all output files for a given forecast / model / date / cycle / vpu
  • Statistics table: max / min / average / percentile across an output file set
  • Stat card: the same aggregates in a quick-glance tile
05 - DevCon MCP

Write the eight lines.

One file. Two challenges. Hot-reload on save.
devcon_mcp/challenges.py · http://localhost:9003/mcp
06 - Related Repos

Where the code lives.

Five repositories built this workshop. Scan to clone.

QR: workshop repo
ciroh_devcon_2026_workshop
This deck. Setup scripts. Compose stack. The challenges.
github.com/Aquaveo/ciroh_devcon_2026_workshop
QR: tethysdash
tethysapp-tethys_dash
Django + React. The dashboard environment + chatbox sidebar.
github.com/tethysplatform/tethysapp-tethys_dash
QR: tethysdash_mcps
tethysdash_mcps
FastMCP server. Visualization-layer tools (chart, table, map, layers).
github.com/Aquaveo/tethysdash_mcps
QR: nrds_mcps
nrds_mcps
FastMCP server. NRDS hydrology data (S3 + DuckDB + parquet).
github.com/Aquaveo/nrds_mcps
QR: chatbox-core
chatbox-core
Standalone JS chat engine. MCP tool-use loop. Published on npm as @aquaveo/chatbox-core.
github.com/Aquaveo/chatbox-core
CIROH DevCon 2026

Thank you.

Questions, bug reports, and pull requests welcome.