TakanariShimbo/uvx-datetime-mcp-server
If you are the rightful owner of uvx-datetime-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The DateTime MCP Server is a Python-based server that provides tools to retrieve the current date and time in various formats, demonstrating the use of the Model Context Protocol (MCP) with Python SDK.
get_current_time
Get the current date and time with optional format and timezone parameters.
| | README
DateTime MCP Server
A Model Context Protocol (MCP) server that provides tools to get the current date and time in various formats. This is a Python implementation of the datetime MCP server, demonstrating how to build MCP servers using the Python SDK.
Features
- Get current date and time in multiple formats (ISO, Unix timestamp, human-readable, etc.)
- Configurable output format via environment variables
- Timezone support
- Custom date format support
- Simple tool:
get_current_time
Usage
Choose one of these examples based on your needs:
Basic usage (ISO format):
{
"mcpServers": {
"datetime": {
"command": "uvx",
"args": ["takanarishimbo-datetime-mcp-server"]
}
}
}
Human-readable format with timezone:
{
"mcpServers": {
"datetime": {
"command": "uvx",
"args": ["takanarishimbo-datetime-mcp-server"],
"env": {
"DATETIME_FORMAT": "human",
"TIMEZONE": "America/New_York"
}
}
}
}
Unix timestamp format:
{
"mcpServers": {
"datetime": {
"command": "uvx",
"args": ["takanarishimbo-datetime-mcp-server"],
"env": {
"DATETIME_FORMAT": "unix",
"TIMEZONE": "UTC"
}
}
}
}
Custom format:
{
"mcpServers": {
"datetime": {
"command": "uvx",
"args": ["takanarishimbo-datetime-mcp-server"],
"env": {
"DATETIME_FORMAT": "custom",
"DATE_FORMAT_STRING": "%Y/%m/%d %H:%M",
"TIMEZONE": "Asia/Tokyo"
}
}
}
}
Configuration
The server can be configured using environment variables:
DATETIME_FORMAT
Controls the default output format of the datetime (default: "iso")
Supported formats:
iso
: ISO 8601 format (2024-01-01T12:00:00.000000+00:00)unix
: Unix timestamp in secondsunix_ms
: Unix timestamp in millisecondshuman
: Human-readable format (Mon, Jan 1, 2024 12:00:00 PM UTC)date
: Date only (2024-01-01)time
: Time only (12:00:00)custom
: Custom format using DATE_FORMAT_STRING environment variable
DATE_FORMAT_STRING
Custom date format string (only used when DATETIME_FORMAT="custom") Default: "%Y-%m-%d %H:%M:%S"
Uses Python's strftime format codes:
%Y
: 4-digit year%y
: 2-digit year%m
: 2-digit month%d
: 2-digit day%H
: 2-digit hour (24-hour)%M
: 2-digit minute%S
: 2-digit second
TIMEZONE
Timezone to use (default: "UTC") Examples: "UTC", "America/New_York", "Asia/Tokyo"
Available Tools
get_current_time
Get the current date and time
Parameters:
format
(optional): Output format, overrides DATETIME_FORMAT env vartimezone
(optional): Timezone to use, overrides TIMEZONE env var
Development
-
Clone this repository
git clone https://github.com/TakanariShimbo/uvx-datetime-mcp-server.git cd uvx-datetime-mcp-server
-
Install dependencies using uv
uv sync
-
Run the server
uv run takanarishimbo-datetime-mcp-server
-
Test with MCP Inspector (optional)
npx @modelcontextprotocol/inspector uv run takanarishimbo-datetime-mcp-server
Publishing to PyPI
This project uses PyPI's Trusted Publishers feature for secure, token-less publishing via GitHub Actions.
1. Configure PyPI Trusted Publisher
-
Log in to PyPI (create account if needed)
- Go to https://pypi.org/
-
Navigate to Publishing Settings
- Go to your account settings
- Click on "Publishing" or go to https://pypi.org/manage/account/publishing/
-
Add GitHub Publisher
- Click "Add a new publisher"
- Select "GitHub" as the publisher
- Fill in:
- Owner:
TakanariShimbo
(your GitHub username/org) - Repository:
uvx-datetime-mcp-server
- Workflow name:
pypi-publish.yml
- Environment:
pypi
(optional but recommended)
- Owner:
- Click "Add"
2. Configure GitHub Environment (Recommended)
-
Navigate to Repository Settings
- Go to your GitHub repository
- Click "Settings" ā "Environments"
-
Create PyPI Environment
- Click "New environment"
- Name:
pypi
- Configure protection rules (optional):
- Add required reviewers
- Restrict to specific branches/tags
3. Setup GitHub Personal Access Token (for release script)
The release script needs to push to GitHub, so you'll need a GitHub token:
-
Create GitHub Personal Access Token
- Go to https://github.com/settings/tokens
- Click "Generate new token" ā "Generate new token (classic)"
- Set expiration (recommended: 90 days or custom)
- Select scopes:
- ā
repo
(Full control of private repositories)
- ā
- Click "Generate token"
- Copy the generated token (starts with
ghp_
)
-
Configure Git with Token
# Option 1: Use GitHub CLI (recommended) gh auth login # Option 2: Configure git to use token git config --global credential.helper store # Then when prompted for password, use your token instead
4. Release New Version
Use the release script to automatically version, tag, and trigger publishing:
# First time setup
chmod +x scripts/release.sh
# Increment patch version (0.1.0 ā 0.1.1)
./scripts/release.sh patch
# Increment minor version (0.1.0 ā 0.2.0)
./scripts/release.sh minor
# Increment major version (0.1.0 ā 1.0.0)
./scripts/release.sh major
# Set specific version
./scripts/release.sh 1.2.3
5. Verify Publication
-
Check GitHub Actions
- Go to "Actions" tab in your repository
- Verify the "Publish to PyPI" workflow completed successfully
-
Verify PyPI Package
- Visit: https://pypi.org/project/takanarishimbo-datetime-mcp-server/
- Or run:
pip show takanarishimbo-datetime-mcp-server
Release Process Flow
release.sh
script updates version in all files- Creates git commit and tag
- Pushes to GitHub
- GitHub Actions workflow triggers on new tag
- Workflow uses OIDC to authenticate with PyPI (no tokens needed!)
- Workflow builds project and publishes to PyPI
- Package becomes available globally via
pip install
oruvx
Code Quality
This project uses ruff
for linting and formatting:
# Run linter
uv run ruff check
# Fix linting issues
uv run ruff check --fix
# Format code
uv run ruff format
Project Structure
uvx-datetime-mcp-server/
āāā src/
ā āāā __init__.py # Package initialization
ā āāā __main__.py # Main entry point
ā āāā server.py # Server implementation
āāā pyproject.toml # Project configuration
āāā uv.lock # Dependency lock file
āāā .github/
ā āāā workflows/
ā āāā pypi-publish.yml # PyPI publish workflow with Trusted Publishers
āāā scripts/
ā āāā release.sh # Release automation script
āāā docs/
ā āāā README.md # This file
ā āāā README_ja.md # Japanese documentation
āāā .gitignore # Git ignore file
License
MIT