Skip to main content
Glama

get_water_levels

Retrieve accurate water level data for specific stations using NOAA Tides and Currents API. Specify station ID, date range, units, and output format for tailored results. Ideal for monitoring tidal patterns and coastal conditions.

Instructions

Get water level data for a station

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
begin_dateNoStart date (YYYYMMDD or MM/DD/YYYY)
dateNoDate to retrieve data for ("today", "latest", "recent", or specific date)
datumNoDatum to use (MLLW, MSL, etc.)
end_dateNoEnd date (YYYYMMDD or MM/DD/YYYY)
formatNoOutput format (json, xml, csv)
rangeNoNumber of hours to retrieve data for
stationYesStation ID
time_zoneNoTime zone (gmt, lst, lst_ldt)
unitsNoUnits to use ("english" or "metric")

Implementation Reference

  • Core handler function that fetches water level data from the NOAA API by adding the 'water_level' product parameter and calling fetchDataApi.
    async getWaterLevels(params: Record<string, any>): Promise<any> { return this.fetchDataApi({ ...params, product: 'water_level' }); }
  • Zod schema defining the input parameters and validation for the get_water_levels tool.
    export const GetWaterLevelsSchema = z.object({ station: StationSchema, date: DateSchema, begin_date: BeginDateSchema, end_date: EndDateSchema, range: RangeSchema, datum: DatumSchema, units: UnitsSchema, time_zone: TimeZoneSchema, format: FormatSchema, }).refine( data => (data.date || (data.begin_date && data.end_date) || (data.begin_date && data.range) || (data.end_date && data.range) || data.range), { message: "You must provide either 'date', 'begin_date' and 'end_date', 'begin_date' and 'range', 'end_date' and 'range', or just 'range'" } );
  • Registration of the get_water_levels tool in the MCP server class, including name, description, schema, and handler that delegates to NoaaService.
    const getWaterLevels: MCPTool = { name: "get_water_levels", description: "Get water level data for a station", inputSchema: GetWaterLevelsSchema, handler: async (params) => { return this.noaaService.getWaterLevels(params); } };
  • Alternative registration of the get_water_levels tool using FastMCP server.addTool, with inline schema and execute handler calling NoaaService.
    server.addTool({ name: 'get_water_levels', description: 'Get water level data for a station', parameters: z.object({ station: StationSchema, date: DateSchema, begin_date: BeginDateSchema, end_date: EndDateSchema, range: RangeSchema, datum: DatumSchema, units: UnitsSchema, time_zone: TimeZoneSchema, format: FormatSchema, }).refine(refineDateParams, { message: dateRefinementMessage }), execute: async (params) => { try { const result = await noaaService.getWaterLevels(params); return JSON.stringify(result); } catch (error) { if (error instanceof Error) { throw new Error(`Failed to get water levels: ${error.message}`); } throw new Error('Failed to get water levels'); } } });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/RyanCardin15/NOAA-TidesAndCurrents-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server