@lewinnovation/clockify-mcp-server
Provides tools for interacting with Clockify's API, enabling AI agents to manage time tracking, workspaces, projects, tasks, and time entries.
Click on "Deploy 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., "@@lewinnovation/clockify-mcp-server list my workspaces"
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.
@lewinnovation/clockify-mcp-server
MCP (Model Context Protocol) server for the Clockify REST API. It exposes a small set of curated tools for common workflows plus a generic clockify_request tool for other documented /v1/... endpoints.
Requirements
Node.js 20+
pnpm 10+
A Clockify API key (profile settings)
Related MCP server: clockify-mcp
Install
# via npx
npx @lewinnovation/clockify-mcp-server
# OR via pnpm globally
pnpm add -g @lewinnovation/clockify-mcp-server
# OR clone and install locally
pnpm install
pnpm run buildConfiguration
Variable | Required | Description |
| Yes | Sent as |
| No | Defaults to |
Run (stdio)
The server speaks MCP over stdio (stdout must stay clean JSON-RPC; logs go to stderr).
export CLOCKIFY_API_KEY="your-key"
pnpm startOr after pnpm run build:
node dist/index.jsMCP tool handlers are registered from src/tools/register.ts (shared helpers in src/tools/helpers.ts).
MCP client setup (popular AI agent tools)
Use this server definition in your MCP client:
{
"mcpServers": {
"clockify": {
"command": "npx",
"args": ["-y", "@lewinnovation/clockify-mcp-server"],
"env": {
"CLOCKIFY_API_KEY": "your-key"
}
}
}
}If you prefer running a local clone, use:
{
"mcpServers": {
"clockify": {
"command": "node",
"args": ["/absolute/path/to/clockify-mcp-server/dist/index.js"],
"env": {
"CLOCKIFY_API_KEY": "your-key"
}
}
}
}Cursor
Add the JSON entry above to:
Workspace config:
.cursor/mcp.jsonOr user config:
~/.cursor/mcp.json
Then reload Cursor (or restart the MCP server from Cursor settings).
Claude Desktop
Add the same mcpServers.clockify entry to Claude Desktop MCP config:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Restart Claude Desktop after saving the config.
Claude Code (CLI)
From your project directory:
claude mcp add clockify --env CLOCKIFY_API_KEY=your-key -- npx -y @lewinnovation/clockify-mcp-serverOr add the same JSON server entry to your Claude Code MCP config file if you manage MCP servers declaratively.
Other MCP-compatible agent tools
For tools such as Cline, Roo Code, and Windsurf, add the same server command/env block in that tool's MCP server settings UI or config file:
command:npxargs:["-y", "@lewinnovation/clockify-mcp-server"]env.CLOCKIFY_API_KEY: your Clockify API key
The server uses stdio transport, so no host/port configuration is required.
Tools
Curated
get_current_user—GET /v1/userlist_workspaces—GET /v1/workspaces(optional singlerolefilter; multiple roles requireclockify_request)list_projects—GET /v1/workspaces/{workspaceId}/projectswith pagination (page,page_size→page-size)list_tasks—GET /v1/workspaces/{workspaceId}/projects/{projectId}/taskslist_time_entries—GET /v1/workspaces/{workspaceId}/user/{userId}/time-entries(ifuser_idis omitted, the current API user is resolved viaGET /v1/user)create_time_entry—POST /v1/workspaces/{workspaceId}/time-entriesupdate_time_entry—PUT /v1/workspaces/{workspaceId}/time-entries/{id}(Clockify requiresstarton updates)stop_running_time_entry—PATCH /v1/workspaces/{workspaceId}/user/{userId}/time-entrieswith{ end }(optionaluser_id, default current user)
Generic
clockify_request—method,path(must start with/v1/), optionalquerymap, optional JSONbody(max 256 KiB serialized). Array query values are sent as repeated keys.
Responses wrap JSON in a text content block; when Clockify returns a Last-Page header, curated list-style tools include lastPage in the decoded JSON payload.
OpenAPI types
Types are generated from Clockify’s OpenAPI document:
pnpm run generate:openapiSource URL: https://api.clockify.me/api/v3/api-docs
Output: src/generated/clockify.d.ts
Re-run this periodically to pick up API changes, then fix any compile errors from type drift.
Scripts
Script | Purpose |
| Watch |
| Emit |
|
|
| Mocked HTTP smoke test for curated endpoints (no API key needed; uses a dummy key + mocked |
| Regenerate |
License
MIT
Available Tools
9 toolsclockify_requestB
Low-level access to any documented Clockify v1 endpoint. Path must start with /v1/. Use for endpoints not covered by curated tools.
Inputs: path (required), method (required), body, query.
create_time_entryC
Creates a time entry in a workspace (POST /v1/workspaces/{workspaceId}/time-entries).
Inputs: entry (required), workspace_id (required).
get_current_userA
Returns the currently authenticated Clockify user (from the API key).
Inputs: include_memberships.
list_projectsC
Lists projects in a workspace (supports pagination and filters).
Inputs: workspace_id (required), name, page, archived, +3 more.
list_tasksC
Lists tasks for a project within a workspace.
Inputs: project_id (required), workspace_id (required), name, page, +4 more.
list_time_entriesC
Lists time entries for a user in a workspace. If user_id is omitted, the current API user is used.
Inputs: workspace_id (required), end, page, tags, +8 more.
list_workspacesA
Lists workspaces visible to the authenticated user. For richer role filtering (multiple roles), use clockify_request.
Inputs: role.
stop_running_time_entryA
Stops the running timer for a user in a workspace (PATCH .../user/{userId}/time-entries with end time). If user_id is omitted, uses the current API user.
Inputs: end (required), workspace_id (required), user_id.
update_time_entryC
Updates a time entry (PUT /v1/workspaces/{workspaceId}/time-entries/{id}). start is required by the Clockify API.
Inputs: start (required), workspace_id (required), time_entry_id (required), end, +6 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Most tools have distinct purposes based on resource and action. However, 'list_workspaces' and 'get_current_user' are clear, while 'clockify_request' overlaps with all others as a fallback, which could cause some ambiguity. Overall, boundaries are well-defined.
Names mostly follow a consistent verb_noun pattern (list_projects, get_current_user, create_time_entry, etc.), with one outlier: 'clockify_request' breaks the pattern. This minor deviation reduces consistency slightly.
With 9 tools, the set is well-scoped for common Clockify operations like managing projects, tasks, time entries, and workspaces. Each tool appears to earn its place without redundancy.
The surface covers essential CRUD for time entries and listing for other resources. However, there are gaps: no create/update/delete for projects, tasks, or workspaces, though 'clockify_request' provides a workaround. Minor gaps remain for full lifecycle coverage.
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server exposing klokin time-tracking operations (employees, time entries, stores) to AI clients.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Toggl 2.0 MCP server for tasks, projects, time entries, and workspace operations.
Related MCP Servers
- AlicenseCqualityCmaintenanceEnables interacting with Clockify time-tracking data through natural language, providing tools to manage workspaces, projects, time entries, reports, and more via the MCP protocol.4842 PyPI1MIT
- AlicenseBqualityDmaintenanceMCP server for Clockify time tracking, enabling CRUD operations on workspaces, projects, tasks, clients, tags, users, and time entries.36MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that lets LLMs interact with your Clockify workspace for time-tracking automation and reporting, enabling natural language logging of time entries, querying entries, and generating reports.MIT
- AlicenseAqualityBmaintenanceUnofficial MCP server for Clockify time tracking. Enables starting/stopping timers, mapping coding work to projects, and summarizing sessions in Cursor and other MCP hosts.1412 npmMIT