clockify-mcp-server
Allows logging and managing Clockify time entries in bulk, including listing projects, creating entries by project name with local date and start/end times, listing entries between dates, and deleting entries.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@clockify-mcp-serverlog 4 hours on Website Redesign today from 10:00 to 14:00"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
clockify-mcp-server
Log your project hours in Clockify by asking your agent, instead of clicking through the web UI.
"add 4h on ACME every morning this week and 4h on Evil Corp every afternoon"
→ one approval prompt, 10 entries created, 40h total.
A local stdio MCP server. Each person runs it themselves with their own API key — nothing is shared or hosted.
Tool | What it does |
| Active projects in your workspace |
| Create entries in bulk — project by name, |
| Your entries between two dates |
| Delete entries |
Times are always local to your Clockify profile timezone. You say 09:00, the server reads
settings.timeZone from your Clockify profile and converts to UTC. You never deal with UTC, and
neither does the agent.
Not supported yet: tags, clients, running timers (start/stop), editing existing entries, reports.
Use it
Everything you need if you just want to log time. Takes about two minutes.
1. Install bun (tested on 1.3.14) and the dependencies:
curl -fsSL https://bun.sh/install | bash # install bun if needed
git clone <this-repo> && cd clockify-mcp-server
bun installThere is no build step — bun runs the TypeScript directly.
2. Get your Clockify API key:
Clockify → your avatar → Preferences → ADVANCED tab → Manage API keys → GENERATE NEW
3. Register the server with your agent.
Claude Code — copy this as-is, from the repo root you just cloned into:
claude mcp add clockify -s user -e CLOCKIFY_API_KEY=<key> -- bun "$PWD/src/index.ts"-s user writes it to your personal config so it loads in every project, not just this one
(the default scope, local, would bind it to this directory). $PWD is expanded by your shell
before claude sees it, so the stored path is absolute.
Any other harness (Cursor, VS Code, Zed, Claude Desktop…) — same three things in its MCP config. Print the path to paste:
echo "$PWD/src/index.ts"{
"mcpServers": {
"clockify": {
"command": "bun",
"args": ["<paste the absolute path here>"],
"env": { "CLOCKIFY_API_KEY": "<key>" }
}
}
}The path must be absolute: your agent starts the server from whatever directory it happens to be working in, not from this repo.
4. Check it — in a fresh session:
list my clockify projects
log 2 hours on <project> today from 09:00 to 11:00, description test
show my clockify entries for this week
delete that entryOpen the Clockify web UI after the second prompt and confirm the entry reads 09:00–11:00. If it shows a different time, your Clockify profile timezone is not what you think it is — fix it in Clockify preferences, everything here follows from it.
Environment
Variable | Required | Notes |
| yes | Preferences → Advanced → Manage API keys |
| no | Defaults to your active workspace — only needed if you are in several |
| no | Regional hosts: |
If something goes wrong
CLOCKIFY_API_KEY is not set— the key did not reach the server process. Put it in the harness config'senv, not in your shell.Ambiguous project "x". Candidates: …— deliberate. The server refuses to guess an id; use one of the listed names.404s on every call — your workspace is on a regional host. Set
CLOCKIFY_API_BASE.Entries land at the wrong hour — check your Clockify profile timezone (see step 4).
Develop it
None of this is needed to just use the server.
bun test # unit tests, no network
bun run check # biome format + lint, applies fixes
bun run start # start the server on stdio (needs CLOCKIFY_API_KEY)bun install also installs the git hooks (prepare → lefthook install), so biome check --write
runs on your staged files at commit time and restages what it fixed. Nothing else to set up.
For local runs, bun auto-loads .env from the repo root, so a gitignored
CLOCKIFY_API_KEY=<key> there saves you retyping it. That only works when the working directory
is the repo, which is why the harness config above passes the key explicitly.
Layout
src/clockify.ts # API client, memoised user/project/task lookups, timezone conversion
src/index.ts # McpServer + the four tools + stdio wiring
src/clockify.test.ts # the parts worth testing: DST conversion, name resolution, payload building
docs/ # Clockify API request/response samples
plans/ # what was built and what was deliberately left outThe interesting code is localToUtc / interval in src/clockify.ts — a stdlib
Intl.DateTimeFormat round-trip, no date library. Change it and run bun test; the DST cases are
the ones that catch mistakes.
Shipping to someone without bun: bun build --compile --outfile clockify-mcp src/index.ts produces
one self-contained binary to point the harness at instead.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Manage projects, tasks, time tracking, and team collaboration through natural language.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/condensetech/clockify-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server