Timermcp
БесплатноНе проверенA millisecond-precision MCP timer server that lets you start, stop, and split timers via natural language, with a live dashboard, personal bests, and race mode.
Описание
A millisecond-precision MCP timer server that lets you start, stop, and split timers via natural language, with a live dashboard, personal bests, and race mode.
README
A millisecond-precision MCP timer server. Say "start the timer" to Claude — the clock starts on the server's monotonic nanosecond clock, a live wall display lights up in your browser, and when you say "stop," Claude announces the official time like a track announcer.
🏁 STOP THE CLOCK! 'ship the landing page' finishes in 4:07.312!
🏆 NEW PERSONAL BEST — 18.455 faster than the old record!
With the free cloud connector (timermcp.com), countdowns render as a live ticking card right in the chat — desktop and mobile:

Why the milliseconds are honest (the latency math)
You say "start" at t₀; the command reaches the server after delay d₁ (typing + model + transport). Server stamps S₁ = t₀ + d₁. You say "stop" at t₁, stamped S₂ = t₁ + d₂.
reported = S₂ − S₁ = (t₁ − t₀) + (d₂ − d₁)
Both timestamps are taken server-side, so the constant part of the pipeline delay cancels. Only the difference between start-side and stop-side latency can leak in — and for symmetric calls that's small. All math runs on process.hrtime.bigint() (monotonic nanoseconds), immune to NTP jumps and DST.
If you believe your pipeline is asymmetric, bias it out: timer_config accepts start_offset_ms / stop_offset_ms, subtracted from every result. raw_elapsed_ms (pure monotonic) is always returned alongside the adjusted elapsed_ms.
Setup
Prerequisite: Node.js ≥ 18 (node --version).
TimerMCP is on npm — no clone or build needed.
Claude Code (one command):
claude mcp add timermcp -- npx -y timermcp
claude mcp list # should show timermcp ✓ connected
Claude Desktop — edit claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"timermcp": {
"command": "npx",
"args": ["-y", "timermcp"]
}
}
}
Running from a clone instead (for development)
git clone https://github.com/julanbasnet/timermcp.git
cd timermcp
npm install && npm run build
node dist/index.js --version # prints banner and exits
npm run smoke # full 18-assertion suite
claude mcp add timermcp -- node /absolute/path/to/timermcp/dist/index.js
On Windows use forward slashes or escaped backslashes in config paths: "C:/tools/timermcp/dist/index.js".
After adding, fully quit and reopen the client (Desktop: quit from the menu/tray, not just close the window). Say "start the timer" and open http://localhost:5717 — the wall display.
Inspector (optional): npx @modelcontextprotocol/inspector npx -y timermcp for an interactive tool console.
Talk to it
| You say | Tool | What happens |
|---|---|---|
| "start the timer" | timer_start |
Monotonic start stamp + announcer call |
| "start a 25-minute pomodoro" | timer_start (target_ms) |
Countdown mode; stop reports over/under |
| "race me vs the build: start alice and bob" | timer_start ("alice,bob") |
Both start on the same nanosecond |
| "split — hero section done" | timer_split |
LiveSplit-style lap, delta vs PB pace 🟢🔴 |
| "how long so far?" | timer_status |
Live server-side reading |
| "stop the clock" | timer_stop |
Official ms, PB check, SVG result card |
| "false start, cancel it" | timer_cancel |
Discards without touching history |
| "what's my record?" | timer_history |
PBs, recent runs, lifetime totals |
| "switch announcer to drill sergeant" | timer_config |
hype · zen · sergeant · sports · minimal |
The viral bits
- Live wall display — electric-cyan timing console at
localhost:5717, streams every millisecond over SSE. Put it on a second monitor or your phone; it reacts the instant Claude acts. Buttons + keyboard (space = split, enter = start/stop) work from the browser too, including a countdown-target field for browser-started pomodoros. - Countdown chime — flip the 🔔 Sound toggle on the wall and every countdown rings out loud the moment it hits zero. (Off by default; browsers require one click before a page may play audio.)
- XP, levels & achievements — every finished run and tracked minute earns XP. Ten ranks from ROOKIE to TIME LORD, a day-streak counter, and a 12-medal achievement shelf (PHOTO FINISH, RECORD BREAKER, BULLSEYE, MIDNIGHT OIL, RACE DAY…), all derived from your local history. Level-ups and unlocks fire toasts + confetti on the wall.
- Personal bests & speedrun splits — every named timer keeps a PB. Splits compare against the same checkpoint on your PB run, LiveSplit-style: "1.204 AHEAD of PB pace 🟢". Confetti on new records.
- Race mode — comma-separated names start on one shared nanosecond stamp (measured Δ in tests: 0.003ms).
- Result cards — every stop writes a 1200×630 SVG finish card (
~/.timermcp/cards/, also served at/card/{id}). Screenshot-ready for X/LinkedIn. - Announcer personalities — hype race-caller by default; zen, drill sergeant, broadcast, or minimal.
- Crash-safe — state persists to
~/.timermcp/state.json; timers running across a restart recover on wall-clock precision (flagged asrecovered).
Environment
| Var | Default | |
|---|---|---|
TIMERMCP_PORT |
5717 |
Dashboard port |
TIMERMCP_HOST |
127.0.0.1 |
Set 0.0.0.0 to view from other devices on your LAN (no auth — trusted networks only) |
TIMERMCP_HOME |
~/.timermcp |
State + cards directory |
TIMERMCP_NO_DASHBOARD |
unset | 1 disables the HTTP server |
Troubleshooting
- Tools don't appear in Claude → the config path must be absolute; fully quit and relaunch the client. Server logs (stderr) land in the client's MCP logs — macOS:
~/Library/Logs/Claude/mcp-server-timermcp.log, Windows:%APPDATA%\Claude\logs\. - Dashboard won't load / "port taken" in logs → another TimerMCP instance owns 5717. Claude Desktop and Claude Code each spawn their own server process; timers still work in both, but give the second one
TIMERMCP_PORT=5718(and its ownTIMERMCP_HOMEif you want separate PBs — otherwise state.json is last-write-wins between them). node dist/index.jsseems to hang → normal; stdio servers wait for a client. Use--versionto sanity-check.- Times look ~equal but off by a constant → that's differential latency; set
start_offset_ms/stop_offset_msviatimer_config(see latency math above).
Test
npm run smoke # 19 assertions: protocol, timing accuracy, offsets, race Δ, dashboard, cards
MIT.
Установить Timermcp в Claude Desktop, Claude Code, Cursor
unyly install timermcpСтавит в Claude Desktop, Claude Code, Cursor и VS Code — сам разбирается с npx, uvx и сборкой из исходников.
Впервые? Поставь CLI: curl -fsSL https://unyly.org/install | sh
Или настроить вручную
Выполни в терминале:
claude mcp add timermcp -- npx -y timermcpFAQ
Timermcp MCP бесплатный?
Да, Timermcp MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Timermcp?
Нет, Timermcp работает без API-ключей и переменных окружения.
Timermcp — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Timermcp в Claude Desktop, Claude Code или Cursor?
Открой Timermcp на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Timermcp with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
