Skip to main content
Glama

LocalTides MCP Server

moon-tools.ts2.64 kB
import { FastMCP } from 'fastmcp'; import { MoonPhaseService } from '../services/moon-phase-service.js'; import { MoonPhaseParamsSchema, MoonPhasesRangeParamsSchema, NextMoonPhaseParamsSchema } from '../interfaces/moon.js'; /** * Register moon-related tools with the MCP server */ export function registerMoonTools(server: FastMCP, moonPhaseService: MoonPhaseService) { // Add moon phase tool server.addTool({ name: 'get_moon_phase', description: 'Get moon phase information for a specific date', parameters: MoonPhaseParamsSchema, execute: async (params) => { try { const result = moonPhaseService.getMoonPhase(params); if (params.format === 'text') { return `Moon phase for ${result.date}: ${result.phaseName} (${(result.illumination * 100).toFixed(1)}% illuminated)`; } return JSON.stringify(result); } catch (error) { if (error instanceof Error) { throw new Error(`Failed to get moon phase: ${error.message}`); } throw new Error('Failed to get moon phase'); } } }); // Add moon phases range tool server.addTool({ name: 'get_moon_phases_range', description: 'Get moon phase information for a date range', parameters: MoonPhasesRangeParamsSchema, execute: async (params) => { try { const results = moonPhaseService.getMoonPhasesRange(params); if (params.format === 'text') { return results.map(result => `${result.date}: ${result.phaseName} (${(result.illumination * 100).toFixed(1)}% illuminated)` ).join('\n'); } return JSON.stringify(results); } catch (error) { if (error instanceof Error) { throw new Error(`Failed to get moon phases: ${error.message}`); } throw new Error('Failed to get moon phases'); } } }); // Add next moon phase tool server.addTool({ name: 'get_next_moon_phase', description: 'Get the next occurrence(s) of a specific moon phase', parameters: NextMoonPhaseParamsSchema, execute: async (params) => { try { const results = moonPhaseService.getNextMoonPhase(params); if (params.format === 'text') { return results.map(result => `Next ${result.phase}: ${result.date}` ).join('\n'); } return JSON.stringify(results); } catch (error) { if (error instanceof Error) { throw new Error(`Failed to get next moon phase: ${error.message}`); } throw new Error('Failed to get next moon phase'); } } }); }

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