From 28427d8cd10f61ff76e6f5cfda94eb48493d97d7 Mon Sep 17 00:00:00 2001 From: adam jones Date: Tue, 23 Sep 2025 05:09:58 +0100 Subject: [PATCH] Fix time server to default to UTC when tzinfo is unavailable (#2738) When get_localzone_name() returns None, the server now defaults to UTC instead of raising an error. This makes the server more robust in environments where the local timezone cannot be determined. --- src/time/src/mcp_server_time/server.py | 3 ++- src/time/test/time_server_test.py | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/time/src/mcp_server_time/server.py b/src/time/src/mcp_server_time/server.py index b8ca4e2f..746d78df 100644 --- a/src/time/src/mcp_server_time/server.py +++ b/src/time/src/mcp_server_time/server.py @@ -46,7 +46,8 @@ def get_local_tz(local_tz_override: str | None = None) -> ZoneInfo: local_tzname = get_localzone_name() if local_tzname is not None: return ZoneInfo(local_tzname) - raise McpError("Could not determine local timezone - tzinfo is None") + # Default to UTC if local timezone cannot be determined + return ZoneInfo("UTC") def get_zoneinfo(timezone_name: str) -> ZoneInfo: diff --git a/src/time/test/time_server_test.py b/src/time/test/time_server_test.py index 97a6ea1f..8d963508 100644 --- a/src/time/test/time_server_test.py +++ b/src/time/test/time_server_test.py @@ -486,10 +486,10 @@ def test_get_local_tz_with_valid_iana_name(mock_get_localzone): @patch('mcp_server_time.server.get_localzone_name') def test_get_local_tz_when_none_returned(mock_get_localzone): - """Test error when tzlocal returns None.""" + """Test default to UTC when tzlocal returns None.""" mock_get_localzone.return_value = None - with pytest.raises(McpError, match="Could not determine local timezone"): - get_local_tz() + result = get_local_tz() + assert str(result) == "UTC" @patch('mcp_server_time.server.get_localzone_name')