get_currents
Retrieve currents data for a specific station, specifying date range, time zone, and output format. Use this tool to access precise water current information in json, xml, or csv formats.
Instructions
Get currents data for a station
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| begin_date | No | Start date (YYYYMMDD or MM/DD/YYYY) | |
| bin | No | Bin number | |
| date | No | Date to retrieve data for ("today", "latest", "recent", or specific date) | |
| end_date | No | End date (YYYYMMDD or MM/DD/YYYY) | |
| format | No | Output format (json, xml, csv) | |
| range | No | Number of hours to retrieve data for | |
| station | Yes | Station ID | |
| time_zone | No | Time zone (gmt, lst, lst_ldt) | |
| units | No | Units to use ("english" or "metric") |
Implementation Reference
- src/services/noaa-service.ts:94-99 (handler)Core handler function that fetches currents data from NOAA API by setting product to 'currents' and calling the generic fetchDataApi method.async getCurrents(params: Record<string, any>): Promise<any> { return this.fetchDataApi({ ...params, product: 'currents' }); }
- src/interfaces/noaa.ts:50-63 (schema)Zod schema defining input parameters for the get_currents tool, including station, date parameters, bin, units, etc., with refinement for date requirements.export const GetCurrentsSchema = z.object({ station: StationSchema, date: DateSchema, begin_date: BeginDateSchema, end_date: EndDateSchema, range: RangeSchema, bin: BinSchema, 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'" } );
- src/server/mcp-server.ts:54-61 (registration)Registration of the 'get_currents' tool in the MCP server, defining name, description, schema, and handler that delegates to NoaaService.getCurrents.const getCurrents: MCPTool = { name: "get_currents", description: "Get currents data for a station", inputSchema: GetCurrentsSchema, handler: async (params) => { return this.noaaService.getCurrents(params); } };
- src/tools/water-tools.ts:82-107 (registration)Alternative registration of the 'get_currents' tool using FastMCP server.addTool, with inline schema and execute handler wrapping NoaaService.getCurrents and returning JSON string.server.addTool({ name: 'get_currents', description: 'Get currents data for a station', parameters: z.object({ station: StationSchema, date: DateSchema, begin_date: BeginDateSchema, end_date: EndDateSchema, range: RangeSchema, bin: BinSchema, units: UnitsSchema, time_zone: TimeZoneSchema, format: FormatSchema, }).refine(refineDateParams, { message: dateRefinementMessage }), execute: async (params) => { try { const result = await noaaService.getCurrents(params); return JSON.stringify(result); } catch (error) { if (error instanceof Error) { throw new Error(`Failed to get currents: ${error.message}`); } throw new Error('Failed to get currents'); } } });