mcpField
C
Clockify Time Tracking

Clockify Time Tracking

本地服务
github.com生产力120 周前更新

关于 Clockify Time Tracking

Clockify Time Tracking 是面向 Clockify 时间追踪 API 的 MCP 服务,供 AI 助手读取工作区数据、生成报告及记录工时。它提供分级访问模式,默认只读,写入操作可按模式选择启用。

主要功能

  1. 01查询工作区与工时数据
  2. 02生成并导出报告
  3. 03管理发票、排班与休假等数据
  4. 04分级控制读写权限
  5. 05支持 OpenTelemetry 观测

适用场景

  1. 01通过自然语言查询项目和工时
  2. 02生成周报或详细报告
  3. 03按权限模式记录或修改工时
  4. 04管理发票、休假与排班信息

MCP 相关

服务通过 MCP 暴露 Clockify API 操作工具,默认注册只读工具;可选择启用工时写入或完整写入操作。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"clockify-mcp-tracegazer": {
"command": "uvx",
"args": [
"clockify-mcp"
],
"env": {
"CLOCKIFY_API_KEY": "<CLOCKIFY_API_KEY>",
"CLOCKIFY_ACCESS_MODE": "<CLOCKIFY_ACCESS_MODE>",
"CLOCKIFY_DEFAULT_WORKSPACE_ID": "<CLOCKIFY_DEFAULT_WORKSPACE_ID>"
}
}
}
}
启动命令uvx clockify-mcp
需要配置的环境变量
CLOCKIFY_API_KEY密钥Clockify API key (Profile Settings -> API).
CLOCKIFY_ACCESS_MODEWrite access mode: read (default, read-only) | time-tracking (time-entry writes only) | full (all writes)
CLOCKIFY_DEFAULT_WORKSPACE_IDDefault workspace id used when a tool call omits workspace_id.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiclockify-mcp0.3.2
ocighcr.io/tracegazer/clockify-mcp:0.3.2

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

clockify-mcp

CI PyPI Python License: MIT MCP Registry Smithery

一个用于 Clockify 时间跟踪 API 的 Model Context Protocol 服务。

让 AI 助手访问你的 Clockify 数据——查询工作区、项目和时间记录,生成报告、记录工时,以及管理客户、发票等,所有操作均可通过自然语言完成。

涵盖 18 个领域的 112 个工具。默认只读,可通过明确选择启用写入操作。

一键安装

将此服务与 Claude Desktop(以及其他兼容 MCPB 的客户端)搭配使用,最简单的方式是下载预构建程序包:

➡️ 下载 clockify-mcp.mcpb——然后双击。Claude Desktop 会打开安装程序,提示你输入 Clockify API 密钥,之后即可使用。无需 Python、无需 npx/uvx,也无需配置文件。

每个 GitHub Release 都附带 .mcpb,并在 Smithery 上提供镜像。想使用包管理器或容器?请参阅下方的快速开始。

它能做什么?

目前提供 48 个只读工具(第 0–8b 阶段——18 个领域)。设置 CLOCKIFY_ACCESS_MODE=full(或旧版兼容设置 CLOCKIFY_ENABLE_WRITES=true)后,会注册 64 个写入工具(用于创建、更新和删除客户、项目、任务、标签、时间记录、假期、费用和费用类别,以及管理休假政策/申请、提交/重新提交/更新审批、创建/更新/删除自定义字段并分配给项目、管理排班分配、管理发票和付款、管理共享报告,以及创建/更新/删除 Webhook/令牌)。中间档 time-tracking 模式仅开放用于记录工时的时间记录写入工具——请参阅访问模式。

领域工具数工具名称
工作区3get_current_user、list_workspaces、get_workspace
用户3list_users、get_user_member_profile、find_user_team_manager
群组1list_user_groups
客户2list_clients、get_client
项目2list_projects、get_project
任务2list_tasks、get_task
标签2list_tags、get_tag
工时记录2list_time_entries、get_time_entry
报告6generate_detailed_report、generate_summary_report、generate_weekly_report、generate_attendance_report‡、generate_expense_report‡、export_report(将 PDF/CSV/XLSX 导出到文件)
共享报告2list_shared_reports、get_shared_report
休假†5list_time_off_policies、get_time_off_policy、list_time_off_balances_by_policy、list_time_off_balances_by_user、list_time_off_requests
节假日†2list_holidays、list_holidays_in_period
费用†4list_expenses、get_expense、list_expense_categories、download_expense_receipt
审批†1list_approval_requests
自定义字段†2list_workspace_custom_fields、list_project_custom_fields
排期†3list_scheduled_assignments、get_project_scheduling_totals、get_user_scheduling_totals
发票†3list_invoices、get_invoice、get_invoice_payments
Webhook†3list_webhooks、get_webhook、get_webhook_logs

† 休假、节假日、费用、审批、自定义字段、排期、发票和 Webhook 是 Clockify 的付费功能;对于不包含这些功能的套餐,这些工具会报错(HTTP 402/403/404)。 ‡ generate_attendance_report 和 generate_expense_report(以及针对这两种类型的 export_report)需要工作区的考勤/Expenses 附加功能;基于工时的报告(详细/摘要/每周)和共享报告可在免费套餐中使用。

写入工具(选择启用 — 设置 CLOCKIFY_ACCESS_MODE=full):

领域工具数工具名称
客户3create_client、update_client、delete_client
项目3create_project、update_project、delete_project
任务3create_task、update_task、delete_task
标签3create_tag、update_tag、delete_tag
工时记录7create_time_entry、update_time_entry、delete_time_entry、duplicate_time_entry、bulk_update_time_entries、create_time_entry_for_user、stop_running_timer
共享报告3create_shared_report、update_shared_report、delete_shared_report
休假†5create_time_off_policy、create_time_off_request、approve_time_off_request、reject_time_off_request、withdraw_time_off_request
节假日†3create_holiday、update_holiday、delete_holiday
费用†7create_expense、update_expense、delete_expense、create_expense_category、update_expense_category、delete_expense_category、archive_expense_category
审批†4submit_approval_request、submit_approval_request_for_user、resubmit_approval_entries、update_approval_request
自定义字段†5create_workspace_custom_field、update_workspace_custom_field、delete_workspace_custom_field、set_project_custom_field、remove_project_custom_field
排期†5create_scheduled_assignment、update_scheduled_assignment、delete_scheduled_assignment、publish_scheduled_assignment、copy_scheduled_assignment
发票†9create_invoice、update_invoice、change_invoice_status、duplicate_invoice、delete_invoice、create_invoice_item、update_invoice_item、delete_invoice_item、create_invoice_payment
Webhook†4create_webhook、update_webhook、delete_webhook、generate_webhook_token
† 休假、节假日、费用、审批、自定义字段、排班、发票和 Webhooks 是 Clockify 的付费功能——对于不包含这些功能的套餐,这些工具会报错(HTTP 402/403/404)。

create_expense 和 update_expense 可接收可选的本地收据文件,并通过 multipart 上传。

快速开始

1. 安装
pip install clockify-mcp

或者不安装直接运行(需要 uv):

uvx clockify-mcp

或者使用容器镜像(每次发布时都会推送到 GHCR):

docker run --rm -i -e CLOCKIFY_API_KEY=your-key ghcr.io/tracegazer/clockify-mcp:latest
2. 连接到 Claude Desktop

将以下内容添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "clockify": {
      "command": "uvx",
      "args": ["clockify-mcp"],
      "env": {
        "CLOCKIFY_API_KEY": "your-api-key"
      }
    }
  }
}

重启 Claude Desktop。提问:“我在 Clockify 中有哪些工作区?”

使用 pip install 而非 uvx
{
  "mcpServers": {
    "clockify": {
      "command": "clockify-mcp",
      "env": {
        "CLOCKIFY_API_KEY": "your-api-key"
      }
    }
  }
}
启用写入操作

默认情况下,服务为只读。通过 CLOCKIFY_ACCESS_MODE 启用写入操作:

模式读取写入
read(默认)全部无
time-tracking全部仅时间条目写入(记录和编辑工时)
full全部所有写入工具(客户、项目、发票,……)
{
  "mcpServers": {
    "clockify": {
      "command": "uvx",
      "args": ["clockify-mcp"],
      "env": {
        "CLOCKIFY_API_KEY": "your-api-key",
        "CLOCKIFY_ACCESS_MODE": "full"
      }
    }
  }
}

**兼容性:**旧版 CLOCKIFY_ENABLE_WRITES=true 仍然有效,并映射到 full。 如果两者都已设置,则以 CLOCKIFY_ACCESS_MODE 为准。在 time-tracking 模式下,duplicate/bulk 始终针对已通过身份验证的用户操作;对于按 ID 执行的 update/delete,助手会被要求在修改可能属于其他人的条目之前进行确认。

**警告:**写入模式允许已连接的 Agent 使用你的 Clockify 凭据创建、修改和删除真实数据。delete_* 工具和 withdraw_time_off_request 操作不可撤销。

3. 获取 API 密钥

登录 Clockify → 个人资料设置 → API → 复制你的 API 密钥。

配置

配置按以下顺序解析(优先级从高到低):

  1. 环境变量(始终优先)
  2. ~/.config/clockify-mcp/config.toml 中的 TOML 配置
环境变量TOML 键说明
CLOCKIFY_API_KEYapi_key你的 Clockify API 密钥(必填)
CLOCKIFY_REGIONregionglobal(默认)| euc1(欧盟)| use2(美国)| euw2(英国)| apse2(澳大利亚)
CLOCKIFY_BASE_URLbase_url为子域工作区设置覆盖值,例如 https://acme.clockify.me
CLOCKIFY_DEFAULT_WORKSPACE_IDdefault_workspace_id工具调用未提供 workspace_id 时使用的备用工作区
CLOCKIFY_ACCESS_MODEaccess_moderead(默认)| time-tracking(读取 + 记录工时)| full(所有写入操作)
CLOCKIFY_ENABLE_WRITESenable_writes向后兼容别名:true = access_mode=full。CLOCKIFY_ACCESS_MODE 优先。
CLOCKIFY_TELEMETRYtelemetry_enabled启用 OpenTelemetry——默认值为 false
CLOCKIFY_TELEMETRY_DETAILtelemetry_detailSpan 详细程度:metadata(默认)、ids 或 full

访问模式:read 仅开放读取工具。time-tracking 会额外开放时间条目写入工具(create/update/delete/duplicate/bulk),用于记录工时,除此之外不开放其他工具——duplicate/bulk 始终针对已通过身份验证的用户操作;对于按 ID 执行的 update/delete,助手会被要求在修改可能属于其他人的条目之前进行确认。full 会开放所有写入工具。此设置用于控制服务注册哪些 MCP 工具;它不能替代 API 密钥自身的权限。

请参阅 config.toml.example 获取可直接复制粘贴的模板。

# ~/.config/clockify-mcp/config.toml
api_key = "your-clockify-api-key"
# region = "global"
# default_workspace_id = ""
# access_mode = "read"   # read | time-tracking | full

**提示:**请先创建配置目录:mkdir -p ~/.config/clockify-mcp

运行服务

clockify-mcp                       # STDIO transport (default)
clockify-mcp --transport sse       # SSE/HTTP transport

**安全说明:**STDIO(默认传输方式)会将所有内容保留在本地。sse 和 streamable-http 传输方式没有内置身份验证——仅在绑定到环回地址或置于经过身份验证的反向代理之后使用。

说明

  • 工作区范围: 几乎所有 Clockify 操作都限定在某个工作区内(/workspaces/{workspaceId}/...)。工具接受可选的 workspace_id;如果省略,则使用 CLOCKIFY_DEFAULT_WORKSPACE_ID。如果两者都未设置,工具会先通过 list_workspaces 提示你选择一个工作区。
  • 分页: 列表工具接受可选的 page/page_size,并返回一页结果。高数据量列表(list_time_entries、list_projects、list_clients、list_tasks、list_tags、list_users)还接受 fetch_all=true,可遍历分页并拼接返回所有页面(可能会发起多次 API 调用)。
  • 错误: 失败时会附带错误类别——PLAN_REQUIRED、ACCESS_DENIED 或 AUTH,以便助手判断应提示你升级套餐、启用模块还是修复密钥。请参阅付费功能及在 Clockify 中启用方法。

付费功能及在 Clockify 中启用方法

许多功能领域受两个相互独立的条件限制——两者都满足,工具才能正常工作:

1. 工作区套餐必须包含该功能。 否则,API 会返回 402(或“subscription”消息),服务会抛出类别为 PLAN_REQUIRED 的 ClockifyAPIError。

功能最低套餐
报告(详细/摘要/每周)、共享报告Free
WebhooksFree(最多 3 个)——更多数量需付费
休假、节假日、发票、审批Standard
费用(包括费用报告)、自定义字段、排期Pro
出勤报告Pro(出勤/时间跟踪附加组件)

2. 必须在工作区中启用该模块。 即使套餐符合要求,管理员也必须在 Clockify → Workspace Settings 中启用以下模块:Time off、Expenses、Approval、Invoicing、Scheduling。启用前,API 会返回 403 "Access Denied",服务会抛出类别为 ACCESS_DENIED 的 ClockifyAPIError。(自定义字段、webhooks 和报告无需单独启用。)

操作失败时,错误类别会说明应采取的措施:

  • PLAN_REQUIRED — 升级工作区套餐(Standard/Pro)。
  • ACCESS_DENIED — 在 Workspace Settings 中启用该功能,或检查 API 密钥用户的角色/权限。
  • AUTH — API 密钥缺失、无效或已撤销。

可观测性(可选)

服务可以发送 OpenTelemetry 跟踪、指标和日志——完全由你选择启用,且与供应商无关。可导出到任何兼容 OTLP 的后端(Dynatrace、Grafana、Datadog、Jaeger 等)。禁用时,不会导入 opentelemetry。

pip install "clockify-mcp[telemetry]"

export CLOCKIFY_TELEMETRY=1

OTLP 端点和标头通过标准 OpenTelemetry 环境变量配置(不在 TOML 文件中)。CLOCKIFY_TELEMETRY_DETAIL 控制附加的参数/负载数据量(默认为 metadata → ids → full);API 密钥始终会被隐藏。

Dynatrace 设置
export OTEL_EXPORTER_OTLP_ENDPOINT="https://<your-env>.live.dynatrace.com/api/v2/otlp"
export OTEL_EXPORTER_OTLP_HEADERS="Authorization=Api-Token <YOUR_DT_TOKEN>"
export OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE=delta
export OTEL_SERVICE_NAME=clockify-mcp

所需令牌范围:openTelemetryTrace.ingest、metrics.ingest、logs.ingest。Dynatrace 的 OTLP 指标接收要求使用 delta 时间性;未设置该环境变量时,指标导出会因 400 Bad Request 而失败。

通用 OTLP 收集器
export OTEL_EXPORTER_OTLP_ENDPOINT="http://localhost:4318"
export OTEL_SERVICE_NAME=clockify-mcp

发送的信号:

  • 跟踪 — 每次 MCP 工具调用(execute_tool <name>)和每次 Clockify API 请求都会生成一个 span
  • 指标 — mcp.tool.duration、mcp.tool.errors,以及 Clockify 客户端请求耗时
  • 日志 — 工具错误和异常的 API 响应结构,并与跟踪关联(仅限 OTLP,绝不输出到 stdout)

开发

git clone https://github.com/tracegazer/clockify-mcp
cd clockify-mcp
uv sync --extra dev

CLOCKIFY_API_KEY=dummy uv run clockify-mcp --help
uv run pytest -q
uv run ruff check src/ tests/

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。