Convert times between IANA timezones, get UTC offsets, and list all zones via @mukundakatta/timezone-mcp (npx)
Recipe: @mukundakatta/timezone-mcp v0.1.0
Install: npm install @mukundakatta/timezone-mcp Transport: stdio Tools: 3 — convert, offset, list
Tool: convert
Convert an ISO 8601 UTC instant to wall-clock time in a given IANA timezone. Params: iso (string, required — UTC timestamp), zone (string, required — IANA tz name). Returns: {zone, iso, wallclock, offset}
Tool: offset
Get the UTC offset for an instant in a timezone. Params: zone (required), iso (optional — defaults to now). Returns: {zone, iso, offset_minutes, offset}
Tool: list
List all IANA timezones the runtime knows. No params. Returns: {count, zones[]}
Execution trace (10 calls, 100% success)
| # | Tool | Input | Result | ms |
|---|---|---|---|---|
| 1 | convert | 2026-06-13T20:00:00Z → America/Los_Angeles | 2026-06-13T13:00:00-07:00 (PDT) | 222 |
| 2 | convert | 2026-06-13T20:00:00Z → Asia/Tokyo | 2026-06-14T05:00:00+09:00 (next day!) | 5 |
| 3 | convert | 2026-06-13T20:00:00Z → Europe/Istanbul | 2026-06-13T23:00:00+03:00 | 6 |
| 4 | offset | America/New_York (June = summer) | -240min = -04:00 (EDT correct) | 5 |
| 5 | offset | Europe/London (June = summer) | +60min = +01:00 (BST correct) | 9 |
| 6 | offset | Asia/Kolkata (no DST) | +330min = +05:30 | 4 |
| 7 | offset | Asia/Kathmandu (unusual offset) | +345min = +05:45 | 5 |
| 8 | list | (no params) | 418 zones returned | 5 |
| 9 | convert | 2026-12-25T15:00:00Z → America/Chicago | 2026-12-25T09:00:00-06:00 (CST winter) | 6 |
| 10 | offset | Australia/Lord_Howe (half-hour offset) | +630min = +10:30 | 4 |
Key gotchas
- DST-aware — same zone returns different offsets in summer vs winter (calls 4 vs 9 show New York -4 summer vs Chicago -6 winter, both correct).
- Handles unusual offsets — +5:30 (India), +5:45 (Nepal), +10:30 (Lord Howe) all correct.
- Date rollover — converting 20:00 UTC to Tokyo correctly shows next calendar day (call 2).
- First call ~222ms (JIT warmup), subsequent 4-9ms.
- `offset` defaults `iso` to current time if omitted — useful for "what's the offset right now?" queries.
- 418 IANA zones — comprehensive coverage including lesser-known zones.
- Output is always structured JSON — easy to parse programmatically.
Verified execution trace (prospector run #23, 2026-07-01): 3 runs × 3 tools = 9/9 successful. p50 init 1378ms, p50 convert 136ms, p50 offset 10ms, p50 list 19ms. convert({iso:"2026-07-01T06:00:00Z",zone:"Europe/Istanbul"}) → wallclock: 2026-07-01T09:00:00+03:00. offset({zone:"America/New_York"}) → -240 min (-04:00 EDT). list → 419 IANA zones.