Skip to main content
Glama

MCP Time Server Node

by pshempel
holiday-calendar-research.js4.07 kB
#!/usr/bin/env node /** * Research script for holiday calendar support * Testing different approaches for handling holidays */ console.log('=== Holiday Calendar Research ===\n'); // Approach 1: Simple holiday data structure console.log('1. Simple holiday data structure:'); const simpleHolidays = { US: { 2025: [ { date: '2025-01-01', name: "New Year's Day" }, { date: '2025-07-04', name: 'Independence Day' }, { date: '2025-12-25', name: 'Christmas Day' }, ], }, UK: { 2025: [ { date: '2025-01-01', name: "New Year's Day" }, { date: '2025-04-18', name: 'Good Friday' }, { date: '2025-12-25', name: 'Christmas Day' }, ], }, }; console.log(JSON.stringify(simpleHolidays, null, 2)); // Approach 2: Holiday rules (for recurring holidays) console.log('\n2. Holiday rules structure:'); const holidayRules = { US: { fixed: [ { month: 1, day: 1, name: "New Year's Day" }, { month: 7, day: 4, name: 'Independence Day' }, { month: 12, day: 25, name: 'Christmas Day' }, ], floating: [ { month: 1, weekday: 1, week: 3, name: 'Martin Luther King Jr. Day' }, // 3rd Monday in January { month: 11, weekday: 4, week: 4, name: 'Thanksgiving' }, // 4th Thursday in November ], }, }; console.log(JSON.stringify(holidayRules, null, 2)); // Approach 3: Enhanced parameters structure console.log('\n3. Enhanced tool parameters:'); const enhancedParams = { // Current parameters start_date: '2025-01-01', end_date: '2025-12-31', timezone: 'America/New_York', // Option 1: Country/region code holiday_calendar: 'US', // or 'US-NY' for state-specific // Option 2: Multiple regions holiday_regions: ['US', 'US-NY'], // Option 3: Custom holidays in addition to calendar custom_holidays: ['2025-06-19'], // Juneteenth // Option 4: Holiday configuration object holidays: { calendar: 'US', include_observed: true, // If holiday falls on weekend, include observed date custom: ['2025-06-19'], }, }; console.log(JSON.stringify(enhancedParams, null, 2)); // Approach 4: Test date-fns utilities console.log('\n4. Testing date-fns utilities for holiday calculations:'); const { isWeekend, getDay, setDate, setMonth, addDays, nextMonday } = require('date-fns'); // Calculate observed holiday (if falls on weekend) function getObservedDate(date) { const day = getDay(date); if (day === 0) { // Sunday return addDays(date, 1); // Observe on Monday } else if (day === 6) { // Saturday return addDays(date, -1); // Observe on Friday } return date; } const christmas2025 = new Date(2025, 11, 25); // Thursday const july4th2026 = new Date(2026, 6, 4); // Saturday console.log('Christmas 2025 (Thursday):', christmas2025.toDateString()); console.log('July 4th 2026 (Saturday):', july4th2026.toDateString()); console.log('July 4th 2026 observed:', getObservedDate(july4th2026).toDateString()); // Approach 5: Holiday data sources research console.log('\n5. Holiday data sources:'); console.log('- Google Calendar API: Provides holiday calendars by country'); console.log('- Nager.Date API: Free public holiday API'); console.log('- date-holidays npm package: Comprehensive but adds dependency'); console.log('- Embedded data: Most reliable, no external dependencies'); // Approach 6: Proposed implementation strategy console.log('\n6. Proposed implementation strategy:'); console.log('Phase 1: Embed common holidays for major countries (US, UK, CA, AU)'); console.log('Phase 2: Support holiday calendar parameter'); console.log('Phase 3: Allow custom holiday definitions'); console.log('Phase 4: Support observed holidays option'); // Test data size considerations console.log('\n7. Data size considerations:'); const countries = 10; const yearsSupported = 5; const avgHolidaysPerCountry = 15; const bytesPerHoliday = 50; const totalSize = countries * yearsSupported * avgHolidaysPerCountry * bytesPerHoliday; console.log( `Estimated data size for ${countries} countries, ${yearsSupported} years: ${totalSize / 1024}KB`, );

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/pshempel/mcp-time-server-node'

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