Skip to main content
Glama
Cicatriiz

TimezoneToolkit MCP Server

by Cicatriiz

Available Tools

Tool

Description

convert_time

Convert a time from one timezone to another

get_current_time

Get the current time in a specified timezone

calculate_sunrise_sunset

Calculate sunrise, sunset, and twilight times for a specific location and date

calculate_moon_phase

Calculate moon phase for a specific date

calculate_timezone_difference

Calculate the time difference between two timezones

list_timezones

List available IANA timezones, optionally filtered by region

calculate_countdown

Calculate time remaining until a specific date/event

calculate_business_days

Calculate business days between two dates (excluding weekends)

format_date

Format a date in various styles

Related MCP server: Chrono MCP

🌟 Features

πŸ•’ Basic Timezone Conversion

  • Convert times between any IANA timezone

  • Get current time in any timezone

  • Format time in various styles (short, medium, full)

  • Calculate time differences in hours/minutes

  • List available IANA timezones

πŸŒ… Sunrise/Sunset and Astronomical Calculations

  • Calculate sunrise and sunset times for any location

  • Include twilight times (civil, nautical, astronomical)

  • Calculate day length for any location/date

  • Calculate moon phases for any date

πŸ“… Date and Time Utilities

  • Format dates in various styles (short, medium, full, ISO, relative)

  • Calculate business days between dates

  • Create countdown timers to future events

  • Support for multiple locales and timezones

πŸ’» Installation

Prerequisites

  • Node.js 18.x or higher - The TimezoneToolkit MCP server requires Node.js 18+ to run properly.

Setup

To run the TimezoneToolkit MCP server using Node.js npx, use the following command:

npx -y @cicatriz/timezone-toolkit@latest

Client-Specific Installation

Cursor

To add this server to Cursor IDE:

  1. Go to Cursor Settings > MCP

  2. Click + Add new Global MCP Server

  3. Add the following configuration to your global .cursor/mcp.json file:

{
  "mcpServers": {
    "timezone-toolkit": {
      "command": "npx",
      "args": [
        "-y",
        "@cicatriz/timezone-toolkit"
      ]
    }
  }
}

See the Cursor documentation for more details.

Windsurf

To set up MCP with Cascade, navigate to Windsurf - Settings > Advanced Settings or Command Palette > Open Windsurf Settings Page.

Scroll down to the Cascade section and add the TimezoneToolkit MCP server directly in mcp_config.json:

{
  "mcpServers": {
    "timezone-toolkit": {
      "command": "npx",
      "args": [
        "-y",
        "@cicatriz/timezone-toolkit"
      ]
    }
  }
}

Cline

Add the following JSON manually to your cline_mcp_settings.json via Cline MCP Server setting:

{
  "mcpServers": {
    "timezone-toolkit": {
      "command": "npx",
      "args": [
        "-y",
        "@cicatriz/timezone-toolkit"
      ]
    }
  }
}

Roo Code

Access the MCP settings by clicking Edit MCP Settings in Roo Code settings or using the Roo Code: Open MCP Config command in VS Code's command palette:

{
  "mcpServers": {
    "timezone-toolkit": {
      "command": "npx",
      "args": [
        "-y",
        "@cicatriz/timezone-toolkit"
      ]
    }
  }
}

Claude

Add the following to your claude_desktop_config.json file:

{
  "mcpServers": {
    "timezone-toolkit": {
      "command": "npx",
      "args": [
        "-y",
        "@cicatriz/timezone-toolkit"
      ]
    }
  }
}

See the Claude Desktop documentation for more details.

CLI

You can also run it as CLI by running the following command:

npx -y @cicatriz/timezone-toolkit@latest

Alternative Installation Methods

Install from npm

# Install globally from npm
npm install -g @cicatriz/timezone-toolkit

# Run the server
timezone-toolkit

Manual Installation

# Clone the repository
git clone https://github.com/Cicatriiz/timezone-toolkit.git
cd timezone-toolkit

# Install dependencies
npm install

# Build the project
npm run build

# Run the server
node dist/index.js

πŸ’¬ Usage with Claude Desktop

After installation, you can use TimezoneToolkit with Claude Desktop:

  1. Open Claude Desktop

  2. Start a new conversation

  3. Click the hammer icon to see available tools

  4. Select any of the TimezoneToolkit tools

πŸ”— API Access

TimezoneToolkit also provides a RESTful API for accessing its functionality without Claude Desktop:

Starting the API Server

# Using npm
npm install -g @cicatriz/timezone-toolkit
node server.js

The API server will be available at http://localhost:3000

API Endpoints

  • GET /api/tools - List all available tools

  • POST /api/convert-time - Convert time between timezones

  • POST /api/current-time - Get current time in a timezone

  • POST /api/sunrise-sunset - Calculate sunrise/sunset times

  • POST /api/moon-phase - Calculate moon phase

  • POST /api/timezone-difference - Calculate timezone difference

  • POST /api/list-timezones - List available timezones

  • POST /api/countdown - Calculate countdown to a date

  • POST /api/business-days - Calculate business days between dates

  • POST /api/format-date - Format a date

For detailed API documentation, see the API README.

Example Queries

  • "What time is it now in Tokyo?"

  • "Convert 3:00 PM New York time to London time"

  • "What time is sunrise tomorrow in San Francisco?"

  • "When is sunset today in Paris?"

  • "What's the current moon phase?"

  • "What's the time difference between New York and Tokyo?"

  • "Show me a list of European timezones"

  • "How many business days are there between March 1 and April 15?"

  • "Format today's date in French locale"

  • "How much time is left until New Year's Eve?"

πŸ”§ Available Tools

1. convert_time

Converts a time from one timezone to another.

Parameters:

  • time (optional): Time to convert (ISO string or natural language). Defaults to current time if not provided.

  • fromTimezone: Source IANA timezone name (e.g., 'America/New_York')

  • toTimezone: Target IANA timezone name (e.g., 'Europe/London')

  • format (optional): Output format ('short', 'medium', 'full'). Defaults to 'medium'

Example:

{
  "time": "2023-12-25T14:30:00",
  "fromTimezone": "America/New_York",
  "toTimezone": "Asia/Tokyo",
  "format": "full"
}

Response:

{
  "originalTime": "2023-12-25T14:30:00.000-05:00",
  "convertedTime": "Tuesday, December 26, 2023, 4:30:00 AM Japan Standard Time",
  "fromTimezone": "America/New_York",
  "toTimezone": "Asia/Tokyo",
  "timeDifference": "+14 hours"
}

2. get_current_time

Gets the current time in a specified timezone.

Parameters:

  • timezone: IANA timezone name (e.g., 'Asia/Tokyo')

  • format (optional): Output format ('short', 'medium', 'full'). Defaults to 'medium'

Example:

{
  "timezone": "Europe/London",
  "format": "full"
}

Response:

{
  "currentTime": "Monday, March 25, 2025, 10:15:30 PM British Summer Time",
  "timezone": "Europe/London",
  "utcOffset": "+01:00"
}

3. calculate_sunrise_sunset

Calculates sunrise, sunset, and twilight times for a specific location and date.

Parameters:

  • date (optional): Date for calculation (ISO string or natural language). Defaults to current date.

  • latitude: Latitude of the location (-90 to 90)

  • longitude: Longitude of the location (-180 to 180)

  • timezone (optional): IANA timezone name (e.g., 'Europe/Paris'). Defaults to UTC.

Example:

{
  "date": "2023-06-21",
  "latitude": 37.7749,
  "longitude": -122.4194,
  "timezone": "America/Los_Angeles"
}

Response:

{
  "date": "2023-06-21",
  "sunrise": "05:48:11 AM",
  "sunset": "08:35:13 PM",
  "civilTwilight": {
    "dawn": "05:17:22 AM",
    "dusk": "09:06:02 PM"
  },
  "nauticalTwilight": {
    "dawn": "04:38:43 AM",
    "dusk": "09:44:41 PM"
  },
  "astronomicalTwilight": {
    "dawn": "03:52:50 AM",
    "dusk": "10:30:34 PM"
  },
  "dayLength": "14 hours 47 minutes",
  "timezone": "America/Los_Angeles"
}

4. calculate_moon_phase

Calculates moon phase for a specific date.

Parameters:

  • date (optional): Date for calculation (ISO string or natural language). Defaults to current date.

  • timezone (optional): IANA timezone name (e.g., 'Europe/Paris'). Defaults to UTC.

Example:

{
  "date": "2023-01-06",
  "timezone": "UTC"
}

Response:

{
  "date": "2023-01-06",
  "phase": 0.998,
  "phaseName": "Full Moon",
  "illumination": 0.997,
  "timezone": "UTC"
}

5. calculate_timezone_difference

Calculates the time difference between two timezones.

Parameters:

  • fromTimezone: Source IANA timezone name (e.g., 'America/New_York')

  • toTimezone: Target IANA timezone name (e.g., 'Europe/London')

Example:

{
  "fromTimezone": "America/New_York",
  "toTimezone": "Asia/Tokyo"
}

Response:

{
  "fromTimezone": "America/New_York",
  "toTimezone": "Asia/Tokyo",
  "timeDifference": "+14 hours",
  "currentTimeFrom": "3/25/2025, 6:15 PM",
  "currentTimeTo": "3/26/2025, 8:15 AM",
  "hoursDifference": 14,
  "minutesDifference": 0,
  "totalMinutesDifference": 840,
  "direction": "ahead"
}

6. list_timezones

Lists available IANA timezones, optionally filtered by region.

Parameters:

  • region (optional): Filter timezones by region (e.g., 'America', 'Europe', 'Asia')

Example:

{
  "region": "Europe"
}

Response:

{
  "timezones": [
    {
      "timezone": "Europe/Amsterdam",
      "currentTime": "3/25/2025, 11:15 PM",
      "offset": "+02:00"
    },
    {
      "timezone": "Europe/Berlin",
      "currentTime": "3/25/2025, 11:15 PM",
      "offset": "+02:00"
    },
    // Additional European timezones...
  ],
  "count": 7,
  "region": "Europe"
}

7. calculate_countdown

Calculates time remaining until a specific date/event.

Parameters:

  • targetDate: Target date/time (ISO string or natural language)

  • timezone (optional): IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.

  • title (optional): Title or name of the event

Example:

{
  "targetDate": "2025-12-31T23:59:59",
  "timezone": "UTC",
  "title": "New Year's Eve"
}

Response:

{
  "title": "New Year's Eve",
  "targetDate": "2025-12-31T23:59:59.000Z",
  "formattedTargetDate": "Wednesday, December 31, 2025, 11:59:59 PM GMT",
  "currentDate": "2025-03-25T18:15:30.000Z",
  "timezone": "UTC",
  "isPast": false,
  "countdown": "9 months, 6 days, 5 hours, 44 minutes, 29 seconds",
  "remaining": {
    "years": 0,
    "months": 9,
    "days": 6,
    "hours": 5,
    "minutes": 44,
    "seconds": 29,
    "totalDays": 281,
    "totalHours": 6749,
    "totalMinutes": 404969,
    "totalSeconds": 24298169
  }
}

8. calculate_business_days

Calculates business days between two dates (excluding weekends).

Parameters:

  • startDate: Start date (ISO string or natural language)

  • endDate: End date (ISO string or natural language)

  • timezone (optional): IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.

  • excludeHolidays (optional): Whether to exclude common holidays (US holidays only). Defaults to false.

Example:

{
  "startDate": "2023-05-01",
  "endDate": "2023-05-31",
  "timezone": "UTC",
  "excludeHolidays": true
}

Response:

{
  "startDate": "2023-05-01",
  "endDate": "2023-05-31",
  "businessDays": 22,
  "calendarDays": 31,
  "weekendDays": 8,
  "holidaysExcluded": 1,
  "timezone": "UTC",
  "businessDatesIncluded": ["2023-05-01", "2023-05-02", "2023-05-03", "2023-05-04", "2023-05-05", "2023-05-08", "2023-05-09", "2023-05-10", "2023-05-11", "2023-05-12", "2023-05-15", "2023-05-16", "2023-05-17", "2023-05-18", "2023-05-19", "2023-05-22", "2023-05-23", "2023-05-24", "2023-05-25", "2023-05-26", "2023-05-30", "2023-05-31"]
}

9. format_date

Formats a date in various styles.

Parameters:

  • date: Date to format (ISO string or natural language). Defaults to current date.

  • timezone (optional): IANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.

  • format (optional): Output format ('short', 'medium', 'full', 'iso', 'relative'). Defaults to 'medium'.

  • locale (optional): Locale for formatting (e.g., 'en-US', 'fr', 'de'). Defaults to 'en-US'.

Example:

{
  "date": "2023-12-25",
  "timezone": "Europe/Paris",
  "format": "full",
  "locale": "fr"
}

Response:

{
  "originalDate": "2023-12-25",
  "parsedDate": "2023-12-25T00:00:00.000+01:00",
  "formattedDate": "lundi 25 dΓ©cembre 2023",
  "formattedTime": "00:00:00 heure normale d'Europe centrale",
  "formattedDateTime": "lundi 25 dΓ©cembre 2023 Γ  00:00:00 heure normale d'Europe centrale",
  "dayOfWeek": "lundi",
  "dayOfMonth": 25,
  "month": "dΓ©cembre",
  "year": 2023,
  "timezone": "Europe/Paris",
  "locale": "fr",
  "format": "full"
}

πŸ’¬ Example Queries in Claude Desktop

  • "What time is it now in Tokyo?"

  • "Convert 3:00 PM New York time to London time"

  • "What time is sunrise tomorrow in San Francisco?"

  • "When is sunset today in Paris?"

  • "What's the current moon phase?"

  • "What's the time difference between New York and Tokyo?"

  • "Show me a list of European timezones"

  • "How many business days are there between March 1 and April 15?"

  • "Format today's date in French locale"

  • "How much time is left until New Year's Eve?"

πŸ’» Technical Details

Architecture

TimezoneToolkit is built using the Model Context Protocol (MCP) specification, which allows it to integrate seamlessly with Claude Desktop. The server is implemented in TypeScript and uses the following architecture:

  • Core Services: Implements timezone conversion, astronomical calculations, and date formatting

  • MCP Server: Handles JSON-RPC requests from Claude Desktop

  • Utility Functions: Provides helper functions for date/time operations

  • Testing Framework: Includes a comprehensive test script for verifying functionality

Dependencies

  • Luxon - For all date/time handling and timezone operations

  • SunCalc - For sunrise/sunset and astronomical calculations

  • @modelcontextprotocol/sdk - For MCP server implementation

Requirements

  • Node.js 18.x or higher

  • npm 9.x or higher

  • Claude Desktop (latest version)

πŸ“ Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add some amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

πŸ§ͺ Testing

TimezoneToolkit includes a comprehensive test script that can be used to verify the functionality of the MCP server. The test script can be used to test the local build, the version flag, list all available tools, test specific tools, and test the npm package after publishing.

Running Tests

# Test the local build (default)
node test-server.js

# Test a specific tool
node test-server.js --tool=calculate_sunrise_sunset

# List all available tools
node test-server.js --list

# Test the version flag
node test-server.js --test-version

# Test the published npm package (after publishing)
node test-server.js --npm

The test script will output detailed information about the test results, including whether the response format is correct and whether the content is valid JSON.

Example Output

Testing local build...
Running: node /path/to/timezone-toolkit/dist/index.js

Sending request: {
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_current_time",
    "arguments": {
      "timezone": "America/New_York"
    }
  }
}

Response: {
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{\n  \"currentTime\": \"Mar 25, 2025, 9:54 PM\",\n  \"timezone\": \"America/New_York\",\n  \"utcOffset\": \"-04:00\"\n}"
      }
    ]
  },
  "jsonrpc": "2.0",
  "id": 1
}
βœ… Response format is correct (has content array)
βœ… Content is valid JSON: {
  currentTime: 'Mar 25, 2025, 9:54 PM',
  timezone: 'America/New_York',
  utcOffset: '-04:00'
}

βœ… Test completed successfully!

πŸ› Troubleshooting

Common Issues

  1. Tool not showing up in Claude Desktop

    • Make sure the server is properly configured in Claude Desktop settings

    • Check that the path to the index.js file is correct

    • Restart Claude Desktop

  2. Incorrect timezone calculations

    • Verify that you're using valid IANA timezone names (e.g., 'America/New_York', not 'EST')

    • Check for daylight saving time transitions which can affect calculations

  3. Sunrise/sunset calculations not working

    • Ensure latitude and longitude values are valid (-90 to 90 for latitude, -180 to 180 for longitude)

    • Some extreme northern/southern locations may have periods with no sunrise/sunset

πŸ”’ Privacy & Security

TimezoneToolkit processes all data locally and does not send any information to external servers. Your timezone data and queries remain private on your device.

πŸ“ƒ License

ISC

πŸ‘¨β€πŸ’» Author

Cicatriz

Available Tools

9 tools
calculate_business_daysB

Calculate business days between two dates (excluding weekends)

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateYesEnd date (ISO string or natural language)
timezoneNoIANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.
startDateYesStart date (ISO string or natural language)
excludeHolidaysNoWhether to exclude common holidays (US holidays only). Defaults to false.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It states 'excluding weekends', which is a core behavior, but it omits important details such as how holidays are handled (only if excludeHolidays is true, and US-only), whether dates are inclusive, and how timezone affects the calculation. These gaps leave significant ambiguity for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the main purpose and key behavior. Every word earns its place; there is no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is moderately complex with 4 parameters and no output schema. The description covers the basic purpose but lacks clarity on edge cases such as date inclusivity, holiday default behavior, and return value. While the schema fills in parameter details, the description alone is not fully complete for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema descriptions provide 100% coverage for all parameters, including startDate, endDate, timezone, and excludeHolidays. The description adds no parameter-level meaning beyond the schema, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb ('Calculate') and resource ('business days between two dates'), and explicitly notes the key behavior ('excluding weekends'). This distinguishes it from sibling tools like convert_time or calculate_sunrise_sunset, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives. It implies it's for business day calculations but doesn't mention scenarios, prerequisites, or contrast with calendar-day calculations or other sibling tools. No exclusions or explicit when-to-use advice is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_countdownB

Calculate time remaining until a specific date/event

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTitle or name of the event (optional)
timezoneNoIANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.
targetDateYesTarget date/time (ISO string or natural language)

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully disclose behavioral traits, but it only says 'calculate time remaining' without explaining the output format, handling of past dates, precision, or timezone impact. This leaves significant ambiguity for the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no redundant words. It earns its place by clearly stating the core function without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of an output schema and annotations, the description fails to explain the return value (e.g., days vs seconds, negative values for past dates) or any edge cases. A simple tool still requires this essential context to be used correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% parameter description coverage, so the baseline is 3. The tool description adds no extra semantic meaning beyond what the schema already provides, but it does not conflict with it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb ('Calculate') and a specific resource ('time remaining until a specific date/event'). This distinguishes it from sibling tools that handle conversions, current time, or related calculations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to use this tool versus its time-related siblings, nor any exclusions or alternatives. It simply restates the basic functionality without contextual cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_moon_phaseC

Calculate moon phase for a specific date

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate for calculation (ISO string or natural language). Defaults to current date.
timezoneNoIANA timezone name (e.g., 'Europe/Paris'). Defaults to UTC.

TDQS

C2.9/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description gives no behavioral details such as calculation method, handling of timezone, what output to expect, or any edge conditions. This leaves the agent fully in the dark about the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no redundancy or wasted words, making it very concise. However, it lacks any structural elements (e.g., separate sections) but that is acceptable for a tool of this simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description would need to explain what the tool returns, but it does not. While the tool is simple with only two parameters, the missing return-value information and lack of any usage context make it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents both parameters (date and timezone) with helpful descriptions and defaults, so the baseline score of 3 applies. The description adds no additional parameter meaning beyond the general notion of a date.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'calculate' with resource 'moon phase' and scope 'specific date', clearly stating the tool's purpose and distinguishing it from sibling time/date tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description merely states what it does; it does not mention exclusions or present alternative tools for comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_sunrise_sunsetB

Calculate sunrise, sunset, and twilight times for a specific location and date

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoDate for calculation (ISO string or natural language). Defaults to current date.
latitudeYesLatitude of the location (-90 to 90)
timezoneNoIANA timezone name (e.g., 'Europe/Paris'). Defaults to UTC.
longitudeYesLongitude of the location (-180 to 180)

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what is calculated but does not mention output format, timezone handling, or twilight definitions. The schema notes defaults, but the description adds no behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with a direct action verb and no unnecessary words. It is appropriately concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the absence of both annotations and an output schema, the description is underspecified. An agent cannot determine what the return value looks like, whether times are localized, or what twilight encompasses, making the tool incomplete in context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all four parameters. The description adds no additional parameter semantics beyond generic references to 'location and date', so it relies on the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (Calculate) and names the exact outputs (sunrise, sunset, twilight times) plus scope (specific location and date). This clearly distinguishes it from sibling tools like calculate_moon_phase or convert_time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Context implies this tool is for astronomical time calculations, but there is no explicit guidance on when to use it versus alternatives. No exclusions or sibling tool references are provided, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_timezone_differenceB

Calculate the time difference between two timezones

ParametersJSON Schema
NameRequiredDescriptionDefault
toTimezoneYesTarget IANA timezone name (e.g., 'Europe/London')
fromTimezoneYesSource IANA timezone name (e.g., 'America/New_York')

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It merely restates the tool's name/function without explaining key behaviors such as whether DST is considered, whether the result is a decimal number of hours, or whether the difference depends on the current date. This is a minimal statement with no added behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence with no redundant content. It is front-loaded with the main action and resource, making it easy to skim.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 parameters, no nested objects) but there is no output schema, so the description should clarify what is returned. It does not mention the return format, units, or DST handling. Given the lack of annotations and output schema, the description is incomplete for a fully informed agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for both parameters, with clear examples of IANA timezone names. The description text adds no parameter information, but the schema already provides full clarity, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'calculate' with the resource 'time difference between two timezones', clearly distinguishing it from siblings like convert_time, get_current_time, and list_timezones. It precisely states what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool (when you need the time difference between timezones) but provides no explicit guidance on alternatives or exclusions. The context of sibling tools makes the purpose clear, but the description itself offers no comparison or when-not-to-use advice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

convert_timeB

Convert a time from one timezone to another

ParametersJSON Schema
NameRequiredDescriptionDefault
timeNoTime to convert (ISO string or natural language). Defaults to current time if not provided.
formatNoOutput format. Defaults to 'medium'
toTimezoneYesTarget IANA timezone name (e.g., 'Europe/London')
fromTimezoneYesSource IANA timezone name (e.g., 'America/New_York')

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only restates the basic conversion action and fails to mention key traits such as defaulting to current time, output format variations, or error handling when timezone names are invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no filler or redundancy. It is appropriately front-loaded and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and the schema covers all parameters, making the description minimally viable for invocation. However, with no output schema or annotations, and no mention of return values or usage alternatives, the description falls short of being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides 100% coverage with descriptions for all four parameters, including the 'time' default and the 'format' enum. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('Convert a time from one timezone to another'), making the core purpose clear. However, it does not explicitly distinguish this from sibling tools like calculate_timezone_difference or get_current_time.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. There are no exclusions, prerequisites, or examples of appropriate use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

format_dateB

Format a date in various styles

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesDate to format (ISO string or natural language). Defaults to current date.
formatNoOutput format. Defaults to 'medium'
localeNoLocale for formatting (e.g., 'en-US', 'fr', 'de'). Defaults to 'en-US'.
timezoneNoIANA timezone name (e.g., 'America/New_York'). Defaults to system timezone.

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must communicate that this is a pure, non-destructive formatting operation. It does not state what the tool returns (a string), whether it respects timezone/locale defaults, or if there are any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no filler. It is front-loaded and appropriately sized for a simple utility, though it could include a few more specifics without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has four parameters and no output schema, and the description is minimal. While the schema covers parameters well, the description fails to mention the return type or the meaning of the format options, leaving important gaps for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema thoroughly describes all four parameters, including defaults and enums (100% coverage). The description adds no extra semantic detail beyond the schema, so it meets the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the operation: formatting a date. However, 'various styles' is imprecise and relies on the schema for the actual format enum. It doesn't explicitly distinguish this tool from sibling date/time tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidance is provided. There is no mention of when to prefer format_date over convert_time or get_current_time, nor any exclusions. The intended use is only implied by the verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_current_timeA

Get the current time in a specified timezone

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format. Defaults to 'medium'
timezoneYesIANA timezone name (e.g., 'Asia/Tokyo'). Defaults to system timezone if not provided.

TDQS

A3.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description is the sole carrier of behavioral context, yet it only restates the purpose without disclosing behavior such as time source, DST handling, or return format. It adds no operational detail beyond what the name already implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence conveys the purpose without any filler. It is appropriately sized for a simple tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only tool with full schema parameter documentation, the description plus schema is sufficient for an agent to select and invoke it correctly. It lacks specifics about output format, but no output schema exists and the operation is straightforward.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no new parameter details beyond referencing 'specified timezone', matching the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('current time') with a timezone qualifier, clearly distinguishing it from siblings like convert_time and format_date. It states exactly what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for obtaining the current time in a specific timezone, providing clear context for when to use it. It doesn't explicitly mention alternatives, but no sibling tool offers the same current-time capability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_timezonesA

List available IANA timezones, optionally filtered by region

ParametersJSON Schema
NameRequiredDescriptionDefault
regionNoFilter timezones by region (e.g., 'America', 'Europe', 'Asia')

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. 'List' clearly implies a read-only operation, but the description does not disclose output format, sorting behavior, or any potential side effects. This is adequate for a simple enumeration tool but lacks rich behavioral detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and resource. Every word contributes value, with no redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no output schema, the description is largely complete. It clearly defines the tool's function and the filtering option. Minor gaps exist around return format and edge cases, but the simplicity of the tool reduces the impact.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the 'region' parameter is described with examples). The description's mention of 'optionally filtered by region' reinforces the parameter's optional nature but adds little beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'List' and names the resource 'available IANA timezones', clearly distinguishing it from sibling tools that perform time calculations or formatting. The optional region filter is also mentioned, adding scope clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for when a list of timezones is needed, and the optional filter provides context. However, it does not explicitly contrast with sibling tools or state when not to use it, so guidance is only implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv1.0.1
    • First observedcalculate_business_days
    • First observedcalculate_countdown
    • First observedcalculate_moon_phase
    • First observedcalculate_sunrise_sunset
    • First observedcalculate_timezone_difference
    • First observedconvert_time
    • First observedformat_date
    • First observedget_current_time
    • First observedlist_timezones

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a distinct purpose: time conversion, current time, sunrise/sunset, moon phase, timezone difference, listing timezones, countdown, business days, and date formatting. No two tools overlap in functionality, and their descriptions clearly differentiate them.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (e.g., convert_time, calculate_sunrise_sunset). The verbs are action-oriented and the nouns specify the target, making the pattern predictable and uniform.

Tool Count5/5

Nine tools is well within the ideal range and covers the core timezone/date functionality without redundancy. Each tool serves a clear, non-overlapping purpose, making the set well-scoped.

Completeness4/5

The surface covers the main timezone operations (conversion, current time, listing) and adds useful calculations (sunrise/sunset, moon phase, business days). Minor gaps like timezone metadata (e.g., DST rules) exist, but the core workflows are fully supported.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive time manipulation capabilities including timezone conversions, date arithmetic, business day calculations, duration calculations, and recurring event handling. Enables natural language time queries with high performance and intelligent caching.
    11
    3
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides comprehensive date, time, timezone, and calendar operations powered by Luxon, enabling AI agents to perform time calculations, timezone conversions, and temporal data handling across 400+ IANA timezones.
    2
    24
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides AI assistants with rich temporal intelligence including timezone conversions, 9 cultural calendars (Hebrew, Islamic, Chinese, etc.), astronomical events, Islamic prayer times, and context-aware activity appropriateness recommendations.
    3
    74
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides tools for date-time manipulation, including timezone conversion and arithmetic operations like adding or subtracting time units. It also enables users to retrieve current date, time, and timezone information.
    3
    43
    ISC

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/Cicatriiz/timezone-toolkit'

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