Inspiration

Coastal fishermen in Tamil Nadu often leave harbour before dawn, and sea conditions can turn within hours. Wave and wind forecasts are freely available, but they live in charts and apps built for screens, not for a quick check in the dark before a trip. We wanted to turn that data into something you can simply ask for and hear.

What it does

SeaSense is an MCP server for Alexa+ that gives short, spoken-style sea-safety briefings for five Tamil Nadu fishing zones: Chennai coast, Nagapattinam, Rameswaram, Thoothukudi and Kanyakumari.

  • get_sea_briefing: waves now and the max over the next 12 hours, wind, peak gust and when it hits, rain chance, and a trip-risk verdict, phrased to be read aloud
  • check_trip_risk: a quick Safe, Caution or Don't go for the next 12 hours, with the reason that decided it
  • save_my_zone: remembers a fisherman's usual zone, so next time he can just ask for "my briefing"

Risk levels use starter thresholds we set for this demo. They are NOT official IMD guidance:

  • Safe: waves under 1.5 m and gusts under 30 km/h
  • Caution: waves 1.5–2.5 m or gusts 30–45 km/h
  • Don't go: waves over 2.5 m or gusts over 45 km/h

How we built it

SeaSense is written in Python using the official MCP Python SDK (MCPServer, formerly FastMCP). Each zone maps to a fixed point just offshore, because the marine API returns no wave data on land. The tools call the Open-Meteo Marine API for wave height and the Open-Meteo Forecast API for wind, gusts and rain chance, in parallel using httpx. Neither API needs a key. The risk check takes the worst wave height and gust over the next 12 hours and applies the thresholds above.

The server speaks MCP spec 2025-11-25 over Streamable HTTP (the transport Alexa+ uses) and stdio. Read-only tools are annotated so an assistant can call them without asking for confirmation. Alexa+ isn't available to us in India, so we tested and demoed in MCP Inspector.

Challenges we ran into

  • SDK rename: the FastMCP import shown in most tutorials fails in MCP Python SDK 2.x, where it's now MCPServer. We found the fix through the migration guide.
  • Inspector setup on Windows: mcp dev needs uv and ignores the project's virtual environment, and the Inspector only said "Connection closed". We launched the Inspector directly against our venv's Python instead.
  • Ocean vs land: the marine API returns empty wave data for points on land, so we placed each zone slightly offshore.
  • No Alexa+ in our region: we built to the open MCP standard so the same server works in any MCP client, and demoed in MCP Inspector.

Accomplishments that we're proud of

  • A working MCP server on spec 2025-11-25 whose three tools return live forecast data for five real fishing zones
  • A clear Safe / Caution / Don't go answer with a reason, not raw numbers. During testing it returned a live "Don't go" for Rameswaram with 47 km/h gusts
  • Offline tests for the risk rules and zone matching, and a README anyone can follow to run it

What we learned

  • How MCP tool names, descriptions and annotations shape when and how an assistant calls a tool
  • Writing for the ear is different from writing for a screen: shorter sentences, fewer numbers, the decision first
  • Small setup issues (SDK renames, Windows script policies, launcher tools) can cost more time than the actual feature

What's next

  • Tamil voice briefings, since English-only limits who can use this
  • SMS alerts for fishermen without smart speakers
  • More zones along the Tamil Nadu and Kerala coasts
  • Deploy publicly and test on Alexa+ devices once available in India
  • Replace our starter thresholds with values checked against IMD and INCOIS ocean-state warnings, and feedback from fishermen

Built With

Share this project:

Updates

Submission history