Skip to main content
Glama
siberianwm

MCP Time Server

by siberianwm
README.md
# 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.