What it is
Time is one of the seven reference servers still maintained in modelcontextprotocol/servers; it has not been moved to the servers-archived repo. It is a small Python server with two tools: get_current_time returns the time, weekday and daylight-saving flag for an IANA zone such as Europe/London, and convert_time converts an HH:MM time between two zones and reports the offset difference. It detects the system zone, or takes one from --local-timezone.
Run it with uvx mcp-server-time, pip or the mcp/time Docker image; it talks stdio only and needs no key or account. Version 2026.10.19 on PyPI moved it to the MCP Python SDK 2.x and serves both the 2025-11-25 and 2026-07-28 protocol revisions. Zone names must be exact IANA keys, case included: Europe/Warsaw works, europe/warsaw is rejected.
Install
uvx mcp-server-timeOur review
This is a correct, free answer to a narrow problem, and how much it adds depends on whether your client already tells the model the date. Language models have no clock. Many hosts now put the current date in the system prompt, which makes get_current_time redundant there; the conversion tool is the part that still earns its place.
Conversion is done by Python's time zone database rather than by the model, so 09:00 in New York lands on the right hour in Warsaw even in the weeks when the US and Europe change their clocks on different dates. The October 2026 release also refuses a wall-clock time that a clock change skips, such as 02:30 on a spring-forward night, instead of returning a plausible wrong answer. An ambiguous fall-back time still converts without any warning, according to open issue #5196.
The real limit is in the source: convert_time takes only a clock time and always applies it to today's date in the source zone. Ask about a call three weeks away, on the far side of a daylight-saving change, and the agent gets today's offset rather than that day's. There is no date arithmetic, no calendar and no notion of working hours or holidays.
Packaging has rough edges. Open issues report that the Docker image passes the literal string ${LOCAL_TIMEZONE} to the server, so the zone override silently fails (#5182), and that the image runs as root despite creating an app user (#4741). Through uvx neither applies, and what remains is two read-only tools that touch no files, no network and no credentials.
Where it earns its place
A developer in London on Claude Code with colleagues in San Francisco and Bangalore
Find a meeting slot inside working hours in all three cities
The agent calls convert_time for each candidate slot instead of guessing offsets, including India's half-hour one. It is free and local, but answers only for today's date, so slots next month across a clock change need checking by hand.
An operations analyst on a 24-hour support desk
Turn incident timestamps logged in UTC into the on-call engineer's local time
get_current_time anchors 'now' and convert_time translates HH:MM stamps from UTC to, say, America/Chicago. It costs nothing, but the model must pass exact IANA keys; 'chicago' is rejected with an error the model can read and correct.
An engineer learning to write MCP servers in Python
Read a small, current example built on the Python SDK 2.x
The whole server is one server.py with typed output schemas, structured results and isError handling for both protocol revisions. It is a short read that shows the patterns the SDK now expects, without any external API to set up.
Before you commit
- Setup
- uvx mcp-server-time, or pip install mcp-server-time; the README has config snippets for Claude Desktop, Zed, VS Code and Zencoder. With no credentials, the first tool call works as soon as the client restarts.
- Integrations
- Two read-only tools: get_current_time (timezone) and convert_time (source_timezone, time, target_timezone). No prompts or resources; results come back as structured content plus the same JSON in a text block.
- Data and privacy
- Reads only the system clock and time zone database: no files, network or credentials. It fetches no untrusted content, so the server itself adds no prompt-injection exposure.
- Cost at scale
- Free and local, with no rate limits. The only cost is two small tool definitions per session and one call per conversion.
- Limits
- convert_time takes HH:MM only and assumes today's date; ambiguous fall-back times convert without warning (#5196); the Docker image's LOCAL_TIMEZONE is ignored (#5182); stdio only.
What's good
- No key, account or network access
- Conversion done by the tz database, not the model
- Rejects times skipped by a clock change
What's not
- convert_time always assumes today's date
- Docker image ignores LOCAL_TIMEZONE (issue #5182)
- Current-time tool redundant where the client passes the date
Best for
Anyone whose assistant keeps getting the time or time zone conversions wrong.
Alternatives
Time (reference server): common questions
- Is Time (reference server) worth it?
- Worth adding for the time zone conversion alone, since offsets across daylight-saving changes are exactly the arithmetic models get wrong. We rate it 3.6 out of 5.
- How much does Time (reference server) cost?
- Free and open source.
- What are the downsides of Time (reference server)?
- convert_time always assumes today's date; docker image ignores LOCAL_TIMEZONE (issue #5182); current-time tool redundant where the client passes the date.
- Who is Time (reference server) best for?
- Anyone whose assistant keeps getting the time or time zone conversions wrong.
- How much does Time (reference server) cost for a team or in production?
- Free and local, with no rate limits. The only cost is two small tool definitions per session and one call per conversion.
- Is Time (reference server) safe for company data?
- Reads only the system clock and time zone database: no files, network or credentials. It fetches no untrusted content, so the server itself adds no prompt-injection exposure.
- What are the best Time (reference server) alternatives?
- The closest alternatives we have reviewed are Everything (test server) and Fetch (reference server).
Answers checked Oct 23, 2026.