Skip to main content
Glama

NTP MCP Server

NTP MCP Server ๐Ÿ•’

A Model Context Protocol (MCP) server that provides accurate time information from Network Time Protocol (NTP) servers with timezone support, security filtering, and structured output formatting.

๐Ÿš€ Quick Start - Session Initialization

Start every AI conversation with:

"What time is it?" "Sync time"

This simple command syncs your AI assistant with accurate network time, ensuring correct timestamps throughout your session.

UV MCP Python Security

โœจ Features

  • ๐ŸŒ Multiple NTP Server Support: Connect to approved NTP servers worldwide

  • ๐Ÿ”’ Security Filtering: Blocks unauthorized sources and untrusted domains

  • ๐Ÿ“‹ Whitelist Approach: Only approved servers allowed for enhanced security

  • ๐Ÿ•ฐ๏ธ Timezone Conversion: Automatic timezone conversion with pytz

  • ๐Ÿ“‹ Structured Output Format: Clean, parseable time format

  • ๐Ÿ”„ Fallback Mechanism: Falls back to local time if NTP is unavailable

  • โšก Ultra-Fast Startup: UV package manager for instant dependency resolution

  • โšก Retry Logic: Automatic retry with exponential backoff

  • ๐Ÿ”ง Configurable: Environment variable configuration

  • ๐Ÿ“‹ MCP Compatible: Works with Claude Desktop and other MCP clients

  • ๐Ÿงช Security Testing: Comprehensive security validation

๐Ÿ”’ Security Features

This version includes enhanced security filtering:

  • Geographic filtering for untrusted domains

  • Blocks direct IP addresses for security

  • Whitelist of approved servers including:

    • Global pools: pool.ntp.org, time.google.com, time.cloudflare.com

    • Regional pools: US, Europe, Asia, etc.

    • Major providers: NIST, Windows, Apple, Ubuntu

Use the list_approved_servers tool to see all approved servers.

๐Ÿ• Time Output Format

The NTP server outputs time in a structured, easy-to-parse format:

Date:YYYY-MM-DD Time:HH:mm:ss Timezone:timezone_name NTP Server:server_name

Example Outputs

Successful NTP Response:

Date:2025-08-29 Time:14:30:25 Timezone:UTC NTP Server:time.cloudflare.com

Blocked Server Response:

Security Error: Server 'ntp.ru' blocked: matches pattern '\.ru$' Please use one of the approved servers. Use 'list_approved_servers' tool to see the list.

๐Ÿš€ Quick Start

What You'll Need

  1. Python 3.11 or newer - The programming language this server runs on

    • Check if you have it: Open a terminal and type python --version

    • If you need it: Download from python.org

  2. UV Package Manager - A fast, modern Python package installer (like npm for Node.js)

    • UV is faster and more reliable than pip

    • It handles dependencies and virtual environments automatically

    • Install UV with ONE of these commands:

      • Windows/Mac/Linux with pip: pip install uv

      • Mac/Linux with curl: curl -LsSf https://astral.sh/uv/install.sh | sh

  3. Git (optional) - For cloning the repository

    • Or you can download the ZIP file from GitHub

Step-by-Step Installation

Option 1: Using Git (Recommended)

# 1. Clone (download) the repository git clone https://github.com/jdez427/ntp-mcp.git # 2. Enter the project directory cd ntp-mcp # 3. Let UV install all dependencies # This creates a virtual environment and installs everything needed uv sync # 4. (Optional) Configure your timezone # By default, NTP-MCP uses UTC. To use your local timezone: ./setup_timezone.sh # Or: python3 setup_timezone.py # Note: You may need to make scripts executable first: # chmod +x setup_timezone.sh launch_ntpmcp.sh # 5. Add the MCP to Claude (global installation) # This makes it available to all Claude instances claude mcp add --scope user ntp bash /path/to/ntp-mcp/launch_ntpmcp.sh

That's it! Claude will automatically start the NTP server when needed.

Option 2: Download ZIP

  1. Go to https://github.com/jdez427/ntp-mcp

  2. Click the green "Code" button โ†’ "Download ZIP"

  3. Extract the ZIP file to a folder

  4. Open a terminal in that folder

  5. Run:

    uv sync # Optional: Configure timezone (default is UTC) chmod +x setup_timezone.sh && ./setup_timezone.sh # Then add to Claude: claude mcp add --scope user ntp bash /path/to/ntp-mcp/launch_ntpmcp.sh

What's Happening During Installation?

  • uv sync reads the pyproject.toml file and:

    • Creates an isolated Python environment (so it won't affect other Python projects)

    • Downloads and installs all required packages (mcp, ntplib, pytz, etc.)

    • Locks the versions for consistency

  • claude mcp add command:

    • Registers the NTP-MCP with Claude globally (--scope user)

    • Points to the launch script that Claude will use

    • Claude automatically starts/stops the server as needed

    • No manual server management required!

Local Installation

# Install to local directory mkdir -p ~/ntp-mcp cp -r src pyproject.toml launch_ntpmcp.sh ~/ntp-mcp/ cd ~/ntp-mcp uv sync # Add to Claude globally claude mcp add --scope user ntp bash ~/ntp-mcp/launch_ntpmcp.sh

Environment Variables

  • NTP_SERVER: NTP server to use (default: pool.ntp.org for dev, time.cloudflare.com for prod)

  • TZ: Timezone for time display (default: system local or UTC)

๐Ÿ“ฆ Installation for Claude Desktop

Method 1: Command Line (Recommended for Linux/WSL)

# Global installation for all Claude instances claude mcp add --scope user ntp bash /path/to/ntp-mcp/launch_ntpmcp.sh # Verify it's connected claude mcp list

Method 2: Manual Configuration

If you prefer manual configuration or are on Windows/Mac without the CLI:

Finding Your Configuration File

Claude Desktop stores its configuration in different places depending on your operating system:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Mac: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/claude/claude_desktop_config.json

Manual Setup

  1. Open the configuration file in a text editor (Notepad, TextEdit, etc.)

  2. Find or create the

  3. Add the NTP-MCP configuration (see Configuration Format below)

Configuration Format

{ "mcpServers": { "ntp-server": { "command": "uv", "args": ["run", "python", "-m", "ntp_mcp"], "cwd": "/path/to/ntp-mcp", "env": { "NTP_SERVER": "time.cloudflare.com", "TZ": "UTC" } } } }

๐Ÿ”ง Available Tools

get_current_time

Get the current time from an approved NTP server.

Example:

{ "tool": "get_current_time", "arguments": {} }

list_approved_servers

List all approved NTP servers that can be used.

Example:

{ "tool": "list_approved_servers", "arguments": {} }

๐Ÿง Systemd Service (Optional)

For automatic startup on Linux:

# Copy service file sudo cp /path/to/ntp-mcp/ntp-mcp.service /etc/systemd/system/ # Enable and start service sudo systemctl daemon-reload sudo systemctl enable ntp-mcp sudo systemctl start ntp-mcp # Check status sudo systemctl status ntp-mcp

๐Ÿ“ Configuration

Claude Desktop (Windows)

{ "mcpServers": { "ntp-server": { "command": "wsl", "args": ["-e", "bash", "-c", "cd /path/to/ntp-mcp && uv run python -m ntp_mcp"], "env": { "NTP_SERVER": "time.cloudflare.com", "TZ": "America/New_York" } } } }

Claude Desktop (Linux/Mac)

{ "mcpServers": { "ntp-server": { "command": "/path/to/ntp-mcp/.venv/bin/python", "args": ["-m", "ntp_mcp"], "env": { "NTP_SERVER": "time.cloudflare.com", "TZ": "UTC" } } } }

๐Ÿงช Testing the Server (Optional)

If you want to test the server manually before adding it to Claude:

# Run the server manually (Ctrl+C to stop) ./launch_ntpmcp.sh # In another terminal, you can test it with: echo '{"jsonrpc": "2.0", "method": "initialize", "params": {"protocolVersion": "2024-11-05", "clientInfo": {"name": "test", "version": "1.0"}, "capabilities": {}}, "id": 1}' | uv run python -m ntp_mcp

Note: Manual testing is optional. Once added to Claude with claude mcp add, Claude handles all server management automatically.

๐Ÿ”ง Troubleshooting

Common Issues

"Command not found" or "uv not found"

  • Make sure UV is installed: pip install uv

  • On Windows, you might need to use python -m uv instead of just uv

"Permission denied" or "cannot execute: required file not found"

  • On Mac/Linux: Run chmod +x launch_ntpmcp.sh to make it executable

  • If you get "required file not found", the script may have Windows line endings

    • Fix with: sed -i 's/\r$//' launch_ntpmcp.sh

  • On Windows: Use python launch_ntpmcp.sh instead

Claude doesn't recognize the time command

  • Check your configuration file for syntax errors (missing commas, etc.)

  • Make sure the path to ntp-mcp directory is correct

  • Restart Claude Desktop completely (quit and reopen)

"Module not found" errors

  • Run uv sync again to ensure all dependencies are installed

  • Make sure you're in the ntp-mcp directory when running commands

Time shows wrong timezone

  • Run the setup wizard: python setup_timezone.py

  • Or manually set the TZ environment variable in the Claude config

๐Ÿ“Š Performance

  • Startup time: <1 second (UV optimization)

  • Memory usage: <50MB

  • Response time: <100ms (local region servers)

๐Ÿ›ก๏ธ Security Notes

  • Geographic security filtering is enforced

  • Direct IP addresses are not allowed

  • Only whitelisted servers can be used

  • Security patterns are regularly updated

๐Ÿ“„ License

MIT License - see LICENSE file for details

๐Ÿค Contributing

Contributions welcome! Please ensure:

  • Security filtering is maintained

  • All tests pass

  • UV package management is used

  • Security best practices are followed

๐Ÿ“ž Support

For issues or questions, please open an issue on GitHub.

๐Ÿ™ Acknowledgments

This project was initially inspired by n3r0-b1n4ry/ntp-mcp-server, but has been completely redesigned and rewritten with enhanced security, performance optimizations, and production robustness.

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    An MCP server that allows checking local time on the client machine or current UTC time from an NTP server
    Last updated -
    2
    24
    MIT License
    • Apple
  • -
    security
    F
    license
    -
    quality
    An MCP server providing timezone conversions and time-related operations via RESTful API endpoints, featuring comprehensive error handling and timezone database integration.
    Last updated -
  • A
    security
    A
    license
    A
    quality
    A lightweight mcp server that tells you exactly what time is it based on your IP.
    Last updated -
    1
    8
    MIT License
  • -
    security
    A
    license
    -
    quality
    A TypeScript server that provides time-related tools through the Model Context Protocol, allowing users to get current time in various timezones and convert times between different IANA timezones.
    Last updated -
    MIT License

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jdez427/ntp-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server