# MCP Time Server
Minimal MCP server that returns current time. Timezone configured on client side.
## Installation
```bash
python3.13 -m venv .venv
.venv/bin/pip install -r requirements.txt
```
## Configuration
Create `config.json`:
```json
{
"token": "your-secret-token",
"port": 23386,
"path": "/your-random-path"
}
```
## Running
```bash
.venv/bin/python server.py
```
## Client Configuration
### Claude Code CLI
```bash
claude mcp add time --transport sse \
--url "https://DOMAIN/PATH/sse" \
--header "Authorization: Bearer TOKEN" \
--header "X-Timezone: Asia/Novokuznetsk"
```
### Claude Desktop
```json
{
"mcpServers": {
"time": {
"command": "%APPDATA%\\npm\\mcp-remote.cmd",
"args": [
"https://DOMAIN/PATH/sse",
"--header",
"Authorization:Bearer ${MCP_TIME_TOKEN}",
"--header",
"X-Timezone:${MCP_TIME_TIMEZONE}"
],
"env": {
"MCP_TIME_TOKEN": "your-token",
"MCP_TIME_TIMEZONE": "Asia/Novokuznetsk"
}
}
}
}
```
## Xray + Nginx Setup
When running behind Xray VLESS with ALPN-based fallbacks to nginx, add location block to nginx config (both h2 and http/1.1 server blocks):
```nginx
location /PATH/ {
proxy_pass http://127.0.0.1:PORT;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Connection '';
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 86400s;
send_timeout 86400s;
chunked_transfer_encoding off;
add_header X-Accel-Buffering no;
}
```
Note: Xray path-based fallbacks only work with HTTP/1.1. For HTTP/2 (ALPN h2), requests go to nginx fallback, so nginx location is required.