All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Initial release of chuk-mcp-time
- Multi-source NTP consensus algorithm with outlier rejection
- Async NTP client supporting concurrent queries to 4-7 servers
- Three MCP tools:
get_time_utc: Get accurate UTC time with consensusget_time_for_timezone: Convert to any IANA timezonecompare_system_clock: Detect system clock drift
- Latency compensation feature (automatically adjusts timestamp for query duration)
- Pydantic-native models with proper enums (AccuracyMode, ConsensusMethod, ClockStatus, NTPError)
- Environment-based configuration using Pydantic Settings
- Support for both stdio and http transports
- Comprehensive demo script showcasing all features
- Full test suite with pytest
- Docker support with multi-stage build
- GitHub Actions workflows (test, publish, release, fly-deploy)
- Fly.io deployment configuration
- Makefile with development, testing, and release targets
- Complete documentation with examples
- Accuracy: ±10-50ms typical (stratum 1-2 NTP servers)
- Speed: 40-150ms (fast mode), 100-300ms (accurate mode)
- Consensus: Median with iterative outlier rejection
- Error Estimation: IQR-based error bounds
- Transparency: Full source data, warnings, and metadata
- Configurable: 7 default NTP servers (Cloudflare, Google, Apple, pool.ntp.org)
- Async-first design using asyncio
- Type-safe with 100% Pydantic models
- Modular structure:
models.py: All Pydantic models and enumsconfig.py: Configuration with Pydantic Settingsntp_client.py: Async NTP clientconsensus.py: Consensus algorithm engineserver.py: MCP server with tools
- Python 3.11+ support
- CI/CD with GitHub Actions (Linux, macOS, Windows)
- Docker multi-stage build
- Fly.io deployment ready
- PyPI publishing workflow
- Automated changelog generation