Skip to main content
Glama
README.md
# Clockify MCP Server

An MCP (Model Context Protocol) server that provides tools for interacting with the Clockify time tracking API.

## Installation

```bash
npm install -g @yikizi/clockify-mcp
```

Or use directly with npx:
```bash
npx @yikizi/clockify-mcp
```

## Features

- **Workspace Management**: List workspaces, get current user, list workspace users
- **Project Management**: List/create projects, list/create tasks
- **Time Tracking**: Start/stop timers, log time entries, update/delete entries
- **Reporting**: Generate summary and detailed reports with grouping and filtering
- **Tags & Clients**: List and create tags, list clients

## Setup

### 1. Get your Clockify API Key

1. Go to [Clockify User Settings](https://app.clockify.me/user/preferences#advanced)
2. Scroll to "API" section
3. Click "Generate" to create an API key

### 2. Configure Claude Code

Add to your Claude Code MCP settings (`~/.claude.json` or via Claude Code settings):

**Option A: CLI argument (recommended)**
```json
{
  "mcpServers": {
    "clockify": {
      "command": "npx",
      "args": ["@yikizi/clockify-mcp", "--api-key", "your-api-key-here"]
    }
  }
}
```

**Option B: Environment variable**
```json
{
  "mcpServers": {
    "clockify": {
      "command": "npx",
      "args": ["@yikizi/clockify-mcp"],
      "env": {
        "CLOCKIFY_API_KEY": "your-api-key-here"
      }
    }
  }
}
```

**Option C: .env file**

Create a `.env` file in your working directory:
```
CLOCKIFY_API_KEY=your-api-key-here
```

## Available Tools

### Convenience Tools (Recommended)
These auto-detect your user and workspace:

- `start_timer` - Start a timer (just provide description and optional project)
- `stop_current_timer` - Stop whatever timer is running
- `get_running_timer` - Check if a timer is running and see elapsed time
- `log_time` - Log completed time with human-readable duration ("1h30m", "2h", "45m")

### Workspace Tools
- `get_workspaces` - List all workspaces
- `get_current_user` - Get authenticated user info
- `get_workspace_users` - List users in a workspace

### Project Tools
- `get_projects` - List projects (with archive filter)
- `create_project` - Create a new project
- `get_project_tasks` - List tasks in a project
- `create_task` - Create a task

### Time Entry Tools (Low-level)
- `get_time_entries` - Get time entries for a user (with date/project filters)
- `create_time_entry` - Create a time entry (use `start_timer` or `log_time` instead)
- `stop_timer` - Stop timer for specific user (use `stop_current_timer` instead)
- `update_time_entry` - Update an existing entry
- `delete_time_entry` - Delete a time entry

### Reporting Tools
- `get_summary_report` - Aggregated report grouped by project/user/client
- `get_detailed_report` - Detailed list of time entries with filters

### Tag & Client Tools
- `get_tags` - List all tags
- `create_tag` - Create a new tag
- `get_clients` - List all clients

## Usage Examples

Once configured, you can ask Claude things like:

- "Start a timer for working on the API project"
- "Stop my timer"
- "Log 2 hours for documentation work"
- "Is my timer running?"
- "Generate a summary report for last week"
- "How much time did I log this month?"
- "List all my projects"

## Changelog

### v1.2.2
- **Config**: API key can now be passed via `--api-key` CLI argument
- **Config**: API key can be read from `.env` file in current directory
- **Improvement**: Better error message showing all config options

### v1.2.1
- **Bugfix**: `get_running_timer` now properly finds running timers (was only checking 1 entry)
- **Bugfix**: `stop_current_timer` now correctly stops timers
- **Improvement**: `stop_current_timer` accepts optional `end` time for backdating

### v1.2.0
- Human-readable durations in responses (`1h 30m` instead of `PT1H30M`)
- Relative period filters for `get_time_entries`: `today`, `yesterday`, `this_week`, `last_week`, `this_month`, `last_month`
- `get_time_entries` now defaults to current user/workspace (no IDs needed!)
- Responses include total time across all entries

### v1.1.0
- Added convenience tools: `start_timer`, `stop_current_timer`, `get_running_timer`, `log_time`
- Auto-detect user and workspace (no need to call `get_current_user` first)
- Human-readable duration format ("1h30m") for `log_time`
- Input validation to catch date typos early
- Warns if timer is already running when starting a new one

### v1.0.0
- Initial release with core Clockify API support

## License

MIT

TDQS

B3.4/5.0

Scored across 21 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between time entry tools: create_time_entry, log_time, and start_timer all handle time tracking, with descriptions indicating preferences (e.g., 'prefer start_timer or log_time instead'), which could cause confusion. Similarly, stop_current_timer and stop_timer are redundant. However, other tools like get_projects, create_task, and get_reports are clearly differentiated.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly. Examples include create_project, get_projects, start_timer, and update_time_entry. This predictability makes it easy for agents to understand and navigate the toolset without confusion from mixed naming conventions.

Tool Count3/5

With 21 tools, the count is borderline high for a time-tracking server, leaning toward heavy. While it covers many aspects of Clockify's functionality, some tools like stop_timer and stop_current_timer could be consolidated to reduce redundancy. A more streamlined set of 15-18 tools might be more appropriate for the scope.

Completeness5/5

The toolset provides comprehensive coverage for time-tracking and project management in Clockify. It includes CRUD operations for projects, tasks, tags, and time entries, along with reporting (detailed and summary), user and workspace management, and timer controls. There are no obvious gaps; agents can perform full workflows from setup to reporting without dead ends.

Maintenance

ActivityInactive
ResponsivenessNo issues