Skip to main content
Glama

mcp-datetime

PyPI Python Version MCP SDK test License

English | ζ—₯本θͺž

A datetime formatting service implemented as an MCP server for the Claude Desktop Application. Supports generation of datetime strings in various formats.

Note: Day-to-day use is on macOS. Automated tests also run on Linux and Windows.

Prerequisites

Before using mcp-datetime, ensure you have the following tools installed:

  • uv (provides uvx). uvx downloads a suitable Python (3.10 or later) if needed.

Related MCP server: DateTime MCP Server

Features

  • ✨ Support for various datetime formats

  • πŸ‡―πŸ‡΅ Japanese language support, including Japanese era (wareki) and weekday

  • 🧩 Custom format patterns that work the same on macOS, Linux and Windows

  • πŸ“ Optimized formats for filename generation

  • 🌏 Any IANA timezone (Asia/Tokyo, UTC, America/New_York, ...)

  • πŸ”§ Seamless integration with Claude Desktop App

MCP Server Components

Tools

The server implements four tools:

  • get_datetime: Get current date and time in various formats

    • format (required): a format name (see Supported Formats) or a custom pattern containing % (see Custom Patterns)

    • timezone (optional): an IANA timezone name such as Asia/Tokyo, UTC or America/New_York. When omitted, the local timezone of the machine is used

    • Returns formatted datetime string based on specified format

  • convert_time: Convert a time or date-time between timezones

    • time (required), target_timezone (required), source_timezone (optional, local by default), format (optional, datetime by default)

    • Returns both sides with timezone, UTC offset and weekday, plus the time difference. Adds a note when the time is skipped or repeated by a daylight saving time change

  • shift_datetime: Add or subtract time (negative numbers for the past)

    • years, months, weeks, days, hours, minutes, seconds, and optional base (now by default), timezone, format

    • Months and years keep the end of the month in range (2024-01-31 + 1 month = 2024-02-29). Days keep the wall time; hours are elapsed time

  • get_datetime_info: Details of a date-time and its difference from another

    • Optional datetime (now by default), reference (now by default), timezone

    • Returns ISO date-time, timezone, UTC offset, DST, Unix time, weekday (English and Japanese), Japanese era, day of year, ISO week, quarter, leap year, days in the month, and days/seconds from the reference (e.g. "in 15 days")

Date-time input of these tools accepts 2024-12-10, 2024-12-10 14:30, 2024-12-10T14:30:00+09:00, 2024/12/10, 2024εΉ΄12月10ζ—₯ 14ζ™‚30εˆ†, Japanese era such as δ»€ε’Œ6εΉ΄12月10ζ—₯ or R6.12.10, and a time only such as 14:30 (today).

Usage with Claude Code

claude mcp add mcp-datetime -- uvx mcp-datetime

Usage with Claude Desktop App

Add the following to your config file:

Config file location (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "mcp-datetime": {
      "command": "uvx",
      "args": ["mcp-datetime"]
    }
  }
}

Updating to the Latest Version

uvx reuses the version it has already cached, so it may keep starting an older version after a new release. To switch to the latest version, clear the cache once and then restart Claude Code or Claude Desktop:

uv cache clean mcp-datetime

The next start downloads the latest version. To always check for the latest version at every start, use mcp-datetime@latest instead of mcp-datetime in the commands and config above.

About Installation

If you need to install the package directly (e.g., for development or source code inspection), you can use one of these methods:

  • Install from PyPI

    pip install mcp-datetime
  • Install from GitHub Source

    git clone https://github.com/ZeparHyfar/mcp-datetime.git
    cd mcp-datetime
    pip install -e .
  • Example claude_desktop_config.json for manual installation

    {
      "mcpServers": {
        "mcp-datetime": {
          "command": "/path/to/your/python",
          "args": ["-m", "mcp_datetime"]
        }
      }
    }

    Replace "/path/to/your/python" with the Python interpreter where you installed the package

    e.g., "/usr/local/bin/python3" or "/Users/username/.pyenv/versions/3.13.0/bin/python3"

  • Run the tests

    uv run --group dev pytest

Basic Examples

  • Command format

    # Standard datetime format
    call datetime-service.get_datetime {"format": "datetime"}
    # Result: 2024-12-10 00:54:01
    
    # Japanese format
    call datetime-service.get_datetime {"format": "datetime_jp"}
    # Result: 2024εΉ΄12月10ζ—₯ 00ζ™‚54εˆ†01η§’
    
    # Filename format
    call datetime-service.get_datetime {"format": "filename_md"}
    # Result: 20241210005401.md
    
    # Japanese era (wareki)
    call datetime-service.get_datetime {"format": "date_wareki"}
    # Result: δ»€ε’Œ6εΉ΄12月10ζ—₯
    
    # Another timezone
    call datetime-service.get_datetime {"format": "datetime", "timezone": "America/New_York"}
    # Result: 2024-12-09 10:54:01
    
    # Custom pattern
    call datetime-service.get_datetime {"format": "%Y/%-m/%-d (%a)"}
    # Result: 2024/12/10 (Tue)
    
    # Convert between timezones
    call datetime-service.convert_time {"time": "2024-12-10 14:30", "source_timezone": "Asia/Tokyo", "target_timezone": "America/New_York"}
    # Result: source 2024-12-10 14:30:00 (+09:00), target 2024-12-10 00:30:00 (-05:00), time_difference -14:00
    
    # One month later, in Japanese era
    call datetime-service.shift_datetime {"base": "δ»€ε’Œ6εΉ΄1月31ζ—₯", "months": 1, "format": "date_wareki"}
    # Result: δ»€ε’Œ6εΉ΄2月29ζ—₯
    
    # Days until a date
    call datetime-service.get_datetime_info {"datetime": "2024-12-25", "reference": "2024-12-10"}
    # Result: ... "days_from_reference": 15, "relative": "in 15 days", "relative_jp": "15ζ—₯後" ...
  • Claude Desktop App prompt examples

    • User

      Please tell me the current time in date_slash format
    • Claude

      I'll get the current date in date_slash format.
      
      The current date is 2024/12/12

Supported Formats

Format Name

Example

Description

date

2024-12-10

Standard date format

date_slash

2024/12/10

Date with slashes

date_jp

2024εΉ΄12月10ζ—₯

Japanese date format

datetime

2024-12-10 00:54:01

Standard datetime

datetime_jp

2024εΉ΄12月10ζ—₯ 00ζ™‚54εˆ†01η§’

Japanese datetime

datetime_t

2024-12-10T00:54:01

DateTime with T separator

compact

20241210005401

Compact format for IDs

compact_date

20241210

Compact date only

compact_time

005401

Compact time only

filename_md

20241210005401.md

Markdown filename

filename_txt

20241210005401.txt

Text filename

filename_log

20241210005401.log

Log filename

iso

2024-12-10T00:54:01+0900

ISO 8601 format

iso_basic

20241210T005401+0900

Basic ISO format

log

2024-12-10 00:54:01.123456

Log format with microseconds

log_compact

20241210_005401

Compact log format

time

00:54:01

Time only

time_jp

00ζ™‚54εˆ†01η§’

Japanese time format

date_wareki

δ»€ε’Œ6εΉ΄12月10ζ—₯

Japanese era date

datetime_wareki

δ»€ε’Œ6εΉ΄12月10ζ—₯ 00ζ™‚54εˆ†01η§’

Japanese era datetime

date_wareki_short

R6.12.10

Japanese era date, short

date_jp_weekday

2024εΉ΄12月10ζ—₯οΌˆη«οΌ‰

Japanese date with weekday

datetime_jp_weekday

2024εΉ΄12月10ζ—₯οΌˆη«οΌ‰ 00ζ™‚54εˆ†01η§’

Japanese datetime with weekday

weekday_jp

η«ζ›œζ—₯

Japanese weekday

Japanese era (wareki) is supported from 1873-01-01, when Japan adopted the Gregorian calendar. The first year of an era is written as ε…ƒεΉ΄ (e.g. δ»€ε’Œε…ƒεΉ΄5月1ζ—₯), except in date_wareki_short (R1.5.1).

Custom Patterns

If format contains %, it is used as a pattern (up to 200 characters).

  • Standard strftime directives: %Y %m %d %H %I %M %S %f %p %a %A %b %B %j %U %W %G %V %u %w %z %Z %c %x %X %%

  • No leading zero (works on Windows too): %-m %-d %-H %-I %-M %-S %-j %-y

  • Japanese directives:

Directive

Meaning

Example (2019-05-01)

%Je

Era name

δ»€ε’Œ

%JE

Era initial

R

%Jy

Era year (ε…ƒ for year 1)

ε…ƒ

%JY

Era year (always a number)

1

%Ja

Weekday

ζ°΄

%JA

Weekday

ζ°΄ζ›œζ—₯

Example: %Je%JyεΉ΄%-m月%-dζ—₯(%JaοΌ‰ β†’ δ»€ε’Œε…ƒεΉ΄5月1ζ—₯οΌˆζ°΄οΌ‰

Debugging

Since MCP servers run over stdio, debugging can be challenging. We recommend using the MCP Inspector:

  • Using PyPI package

    npx @modelcontextprotocol/inspector uvx mcp-datetime
  • Using downloaded source code from GitHub

    git clone https://github.com/ZeparHyfar/mcp-datetime.git
    npx @modelcontextprotocol/inspector uv --directory ./mcp-datetime run mcp-datetime

License

This project is licensed under the MIT License - see the LICENSE file for details.

Available Tools

4 tools
convert_timeA

Convert a time or date-time from one timezone to another. Returns both sides with their timezone, UTC offset and weekday, and the time difference. A note is added when the time is skipped or repeated by a daylight saving time change. Accepted forms: '2024-12-10', '2024-12-10 14:30', '2024-12-10T14:30:00+09:00', '2024/12/10', '2024εΉ΄12月10ζ—₯ 14ζ™‚30εˆ†', Japanese era such as 'δ»€ε’Œ6εΉ΄12月10ζ—₯' or 'R6.12.10', and a time only such as '14:30' (today).

NameRequiredDescriptionDefault
timeYesTime or date-time to convert, e.g. '14:30' or '2024-12-10 14:30'.
formatNoOutput format name or custom pattern, as in get_datetime.datetime
source_timezoneNoIANA timezone of 'time', e.g. 'Asia/Tokyo'. Omit to use the local timezone. An offset written in 'time' (+09:00, Z) takes precedence.
target_timezoneYesIANA timezone to convert to, e.g. 'America/New_York'.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are supplied, so the description carries the full burden and does a solid job: it discloses the return shape (both sides with timezone, UTC offset, weekday, plus the time difference) and the DST edge-case behavior (a note when a time is skipped or repeated). The remaining gap is minor for a pure computation tool β€” no side effects, no auth or rate-limit concerns are mentioned, though none plausibly apply.

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?

Front-loaded with the action and the return contract, then the DST caveat, then the input grammar β€” a sensible order with no filler. The long format enumeration is dense but every item removes a real ambiguity about what will parse.

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

Completeness5/5

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

An output schema exists, yet the description still summarizes the return contract and the one non-obvious behavioral wrinkle (DST skip/repeat notes), and it fully covers the two required inputs. Nothing an agent needs in order to call this correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description earns an upgrade by enumerating concrete accepted forms for 'time' β€” ISO date, space-separated datetime, offset-bearing ISO, slash-separated, Japanese era names such as 'δ»€ε’Œ6εΉ΄12月10ζ—₯' and 'R6.12.10', and time-only treated as today β€” which the schema's one-line example does not convey. It also reinforces that an offset written in the input overrides source_timezone. The 'format' parameter is left to its schema description by reference to get_datetime, so this is not a 5.

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?

States a specific verb and resource ('Convert a time or date-time from one timezone to another') and immediately scopes what the result contains. Against siblings get_datetime, shift_datetime and get_datetime_info, the timezone-conversion framing is distinct enough that an agent can route correctly without opening the schema.

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?

Usage is implied by the purpose: convert when you have a time in one zone and need it in another. There is no explicit when-to-use versus shift_datetime or get_datetime, and no stated exclusions or prerequisites. The accepted-input-forms list indirectly tells the agent this tool is the right one for parsing loose date strings, but that is inference rather than guidance.

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

get_datetimeA

Get the current date and time in the given format.

The time is in the local timezone of the machine running the server, unless 'timezone' is given as an IANA name such as 'Asia/Tokyo' or 'UTC'.

'format' is one of the format names below, or a custom pattern containing '%'. Custom patterns accept strftime directives (%Y %m %d %H %M %S %a %A %b %B %z %Z %j ...), %-m %-d %-H %-M %-S %-I %-j %-y for no leading zero, and these Japanese directives: %Je era name (δ»€ε’Œ), %JE era initial (R), %Jy era year (ε…ƒ for year 1), %JY era year (always a number), %Ja weekday (火), %JA weekday (η«ζ›œζ—₯). Example: '%Je%JyεΉ΄%-m月%-dζ—₯(%JaοΌ‰' -> δ»€ε’Œ6εΉ΄12月10ζ—₯οΌˆη«οΌ‰. Japanese era is supported from 1873-01-01.

Available formats (example: 2024-12-10 00:54:01 JST):

  • date: 2024-12-10

  • date_slash: 2024/12/10

  • date_jp: 2024εΉ΄12月10ζ—₯

  • datetime: 2024-12-10 00:54:01

  • datetime_jp: 2024εΉ΄12月10ζ—₯ 00ζ™‚54εˆ†01η§’

  • datetime_t: 2024-12-10T00:54:01

  • compact: 20241210005401

  • compact_date: 20241210

  • compact_time: 005401

  • filename_md: 20241210005401.md

  • filename_txt: 20241210005401.txt

  • filename_log: 20241210005401.log

  • iso: 2024-12-10T00:54:01+0900

  • iso_basic: 20241210T005401+0900

  • log: 2024-12-10 00:54:01.123456

  • log_compact: 20241210_005401

  • time: 00:54:01

  • time_jp: 00ζ™‚54εˆ†01η§’

  • date_wareki: δ»€ε’Œ6εΉ΄12月10ζ—₯

  • datetime_wareki: δ»€ε’Œ6εΉ΄12月10ζ—₯ 00ζ™‚54εˆ†01η§’

  • date_wareki_short: R6.12.10

  • date_jp_weekday: 2024εΉ΄12月10ζ—₯οΌˆη«οΌ‰

  • datetime_jp_weekday: 2024εΉ΄12月10ζ—₯οΌˆη«οΌ‰ 00ζ™‚54εˆ†01η§’

  • weekday_jp: η«ζ›œζ—₯

NameRequiredDescriptionDefault
formatYesFormat name such as 'datetime', or a custom pattern containing '%'. See the tool description.
timezoneNoIANA timezone name such as 'Asia/Tokyo', 'UTC' or 'America/New_York'. Omit to use the local timezone of the machine.

Output Schema

NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full behavioral burden and does well: it discloses the default timezone source (the server machine's local zone), the IANA override, the full set of supported directives, and a concrete boundary condition (Japanese era supported from 1873-01-01). It says nothing about side effects, cost, or rate limits, though for a pure clock read those gaps are minor.

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?

Purpose, timezone behavior, then format reference is a sensible front-loaded order. The 25-item format table is long but earns its place because the schema declares no enum, so this is the only place the valid names exist; a slightly tighter grouping of the filename_* and wareki variants would trim it further.

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?

An output schema exists, so return-value explanation is correctly omitted, and both parameters are fully covered with defaults and fallback behavior. The one missing piece relative to a four-tool family is routing guidance distinguishing this from the conversion, shifting, and info siblings.

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

Parameters5/5

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

Schema coverage is already 100%, yet the description goes well beyond it by enumerating every accepted format name with a rendered example and by documenting custom strftime patterns and the Japanese %J directives that the schema only alludes to. That is exactly the meaning an agent needs to construct a valid 'format' value.

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 first sentence gives a specific verb and resource ('Get the current date and time') plus the format scoping. It never mentions the siblings convert_time, shift_datetime, or get_datetime_info, so an agent cannot tell from the description alone that this tool only reads the current instant rather than converting or offsetting one.

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?

Usage is only implied: 'current' signals a read of now, and the timezone sentence hints at localization. There is no explicit statement about when to prefer get_datetime_info over this tool, or that this tool is inappropriate for arithmetic on existing timestamps (which the sibling tools cover).

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

get_datetime_infoA

Get details of a date-time (default: now): ISO date-time, timezone, UTC offset, daylight saving time, Unix time, weekday in English and Japanese, Japanese era (wareki), day of year, ISO week, quarter, leap year, days in the month, and the difference from a reference date-time (default: now) in days and seconds, e.g. how many days until a date. Accepted forms: '2024-12-10', '2024-12-10 14:30', '2024-12-10T14:30:00+09:00', '2024/12/10', '2024εΉ΄12月10ζ—₯ 14ζ™‚30εˆ†', Japanese era such as 'δ»€ε’Œ6εΉ΄12月10ζ—₯' or 'R6.12.10', and a time only such as '14:30' (today).

NameRequiredDescriptionDefault
datetimeNoDate-time to inspect. Omit for now.
timezoneNoIANA timezone for reading and showing the date-times. Omit for local.
referenceNoDate-time to compare with. Omit to compare with now.

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does: it discloses that everything defaults to now, that a reference date enables a signed day/second delta, and that multiple timezone representations are produced for the same instant. It doesn't discuss error behavior when an input form is unparseable, but the tool is a transparent read-only computation.

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?

Front-loaded with purpose, then defaults, then result fields, then accepted formats – a sensible order with no filler sentences. The long field enumeration is dense but each item is informational rather than padding.

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?

An output schema exists, yet the description still enumerates key fields, which is mildly redundant but helps the agent decide to call it. Inputs, defaults, comparison semantics, and accepted formats are all present; only sibling routing and parse-failure behavior are missing.

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

Parameters4/5

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

Schema coverage is 100%, so baseline would be 3, but the description adds real value the schema lacks: a concrete list of accepted datetime input formats (ISO, slash-separated, Japanese kanji form, era notations like 'δ»€ε’Œ6εΉ΄12月10ζ—₯' and 'R6.12.10', and time-only meaning today). That format guidance is the main practical risk of mis-calling the tool and it is covered.

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 opens with a specific verb and resource ('Get details of a date-time') and then enumerates the exact fields returned (ISO, timezone, wareki, ISO week, quarter, diff from reference), making the scope unambiguous. It doesn't explicitly name the siblings get_datetime/convert_time/shift_datetime, so differentiation is implied by the inspection framing rather than stated.

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?

It states the useful defaults (omit for now, reference defaults to now) and gives a concrete use case ('how many days until a date'), which implies when to call it. It never says when to prefer it over convert_time or shift_datetime, so the agent must infer the boundary from sibling names alone.

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

shift_datetimeA

Add or subtract an amount of time to a date-time (default: now). Use negative numbers for the past. Years, months, weeks and days keep the wall time; if the day does not exist in the new month, the last day of that month is used (2024-01-31 + 1 month = 2024-02-29). Hours, minutes and seconds are elapsed time. Accepted forms: '2024-12-10', '2024-12-10 14:30', '2024-12-10T14:30:00+09:00', '2024/12/10', '2024εΉ΄12月10ζ—₯ 14ζ™‚30εˆ†', Japanese era such as 'δ»€ε’Œ6εΉ΄12月10ζ—₯' or 'R6.12.10', and a time only such as '14:30' (today).

NameRequiredDescriptionDefault
baseNoStart date-time. Omit to start from now.
daysNo
hoursNo
weeksNo
yearsNo
formatNoOutput format name or custom pattern, as in get_datetime.datetime
monthsNo
minutesNo
secondsNo
timezoneNoIANA timezone of 'base' and of the result. Omit for local time.

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations at all, the description carries the full burden and does substantial work: it discloses the calendar-vs-elapsed distinction between years/months/weeks/days and hours/minutes/seconds, and the month-end clamping rule with a concrete example (2024-01-31 + 1 month = 2024-02-29). This is non-obvious behavior an agent could not infer from the schema. It does not say what happens on unparseable input or how errors surface, which keeps it below a 5.

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 core action and default are front-loaded in the first sentence, followed by semantics and then a format list. The long enumeration of accepted forms is dense but each example adds real parsing knowledge rather than restating the schema. It is a single unbroken paragraph, which slightly hurts scannability but not substance.

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

Completeness5/5

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

For a 10-parameter, all-optional tool with no annotations, the description covers the defaults, the unit semantics, the month-end edge case, and the full range of accepted input formats. Return values are handled by the existing output schema, so leaving them out is correct. Nothing an agent needs in order to construct a valid call is missing.

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

Parameters4/5

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

Schema description coverage is only 30%, so the description must compensate, and it does: the accepted base formats are enumerated in detail (ISO, slash form, Japanese, era notation, time-only) and the six unit parameters are given real meaning via the calendar/elapsed distinction and negative-value rule. The 'format' parameter is left to the schema's reference to get_datetime, and timezone is not discussed in the description, so the compensation is strong but incomplete.

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 opens with a specific verb+resource: 'Add or subtract an amount of time to a date-time (default: now)'. An agent can immediately distinguish this arithmetic tool from get_datetime (read current) and convert_time (timezone conversion) without opening the schema. It stops short of naming those siblings explicitly, so it is clear but not fully differentiated.

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?

It gives useful calling guidance: omit 'base' to start from now, and use negative numbers to shift into the past. However, there is no statement of when to prefer this over convert_time or get_datetime, and no exclusions or error conditions. Usage is implied by the purpose rather than stated against alternatives.

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.

  1. 4 tool updates
    • Addedconvert_time
    • Changedget_datetime5 fields changed
      • changedInput schema / properties / format / description
        Previous value: -"\nAvailable formats:\n- date: 2024-12-10\n- date_slash: 2024/12/10\n- date_jp: 2024εΉ΄12月10ζ—₯\n- datetime: 2024-12-10 00:54:01\n- datetime_jp: 2024εΉ΄12月10ζ—₯ 00ζ™‚54εˆ†01η§’\n- datetime_t: 2024-12-10T00:54:01\n- compact: 20241210005401\n- compact_date: 20241210\n- compact_time: 005401\n- filename_md: 20241210005401.md\n- filename_txt: 20241210005401.txt\n- filename_log: 20241210005401.log\n- iso: 2024-12-10T00:54:01+0900\n- iso_basic: 20241210T005401+0900\n- log: 2024-12-10 00:54:01.123456\n- log_compact: 20241210_005401\n- time: 00:54:01\n- time_jp: 00ζ™‚54εˆ†01η§’\n"New value: +"Format name such as 'datetime', or a custom pattern containing '%'. See the tool description."
      • addedInput schema / properties / format / title
        Added value: +"Format"
      • addedInput schema / properties / timezone
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "description": "IANA timezone name such as 'Asia/Tokyo', 'UTC' or 'America/New_York'. Omit to use the local timezone of the machine.",
        +  "title": "Timezone"
        +}
      • addedInput schema / title
        Added value: +"get_datetimeArguments"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "result": {
        +      "title": "Result",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "result"
        +  ],
        +  "title": "get_datetimeOutput",
        +  "type": "object"
        +}
    • Addedget_datetime_info
    • Addedshift_datetime
  2. 1 tool update
    • First observedget_datetime

TDQS

A4.1/5.0

Scored across 4 tools

Disambiguation4/5

Each tool has a mostly distinct role: current time formatting, detailed datetime inspection, timezone conversion, and datetime shifting. The main potential overlap is between get_datetime and get_datetime_info when used on 'now', but their outputs and intended uses are different enough that an agent can choose correctly.

Naming Consistency5/5

All tool names use consistent snake_case with a verb_noun pattern: convert_time, get_datetime, get_datetime_info, shift_datetime. The get_datetime_info variant is a predictable extension of get_datetime rather than a convention break.

Tool Count5/5

Four tools is well-scoped for a focused datetime utility server. Each tool covers a clear operation without excessive fragmentation.

Completeness4/5

The surface covers current time formatting, datetime details, timezone conversion, and arithmetic, which handles most common datetime workflows. A minor gap is that arbitrary datetimes cannot be formatted with the same rich format options as get_datetime, but agents can work around this using the available outputs.

Maintenance

ActivityMaintained
ResponsivenessLimited data

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Claude Model Configuration Protocol (MCP) server that provides real-time timezone-aware date and time information.
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that provides tools to get the current date and time in various formats, supporting different timezones and custom formatting options.
    1
    15 npm
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A general-purpose MCP server providing time-related utilities such as fetching current time, Unix timestamps, and formatting services. It supports both local stdio and remote SSE communication modes for versatile AI client integration.
    3
    -
  • A
    license
    A
    quality
    D
    maintenance
    A lightweight MCP server providing comprehensive date, time, and day-of-week information. It supports relative time calculations, timezone conversions, and detailed calendar metadata like week numbers and quarters.
    5
    12 PyPI
    1
    MIT