{"name":"io.github.tracegazer/clockify-mcp","slug":"tracegazer-clockify-mcp","title":"Clockify Time Tracking","description":"Clockify time-tracking MCP: 112 tools across 18 domains, read-only by default with opt-in writes.","url":"https://mcp.market/server/tracegazer-clockify-mcp","rating":null,"grade":"B","score":75,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":16,"stars":1,"forks":1,"downloads_week":null,"last_push_at":"2026-07-20T19:55:41.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"mixed","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/tracegazer/clockify-mcp","website":"https://github.com/tracegazer/clockify-mcp","version":"0.3.2","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"clockify-mcp","version":"0.3.2","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Clockify API key (Profile Settings -> API).","isRequired":true,"isSecret":true,"name":"CLOCKIFY_API_KEY"},{"description":"Write access mode: read (default, read-only) | time-tracking (time-entry writes only) | full (all writes)","default":"read","name":"CLOCKIFY_ACCESS_MODE"},{"description":"Default workspace id used when a tool call omits workspace_id.","name":"CLOCKIFY_DEFAULT_WORKSPACE_ID"}]},{"registryType":"oci","identifier":"ghcr.io/tracegazer/clockify-mcp:0.3.2","transport":{"type":"stdio"},"environmentVariables":[{"description":"Clockify API key (Profile Settings -> API).","isRequired":true,"isSecret":true,"name":"CLOCKIFY_API_KEY"},{"description":"Write access mode: read (default, read-only) | time-tracking (time-entry writes only) | full (all writes)","default":"read","name":"CLOCKIFY_ACCESS_MODE"},{"description":"Default workspace id used when a tool call omits workspace_id.","name":"CLOCKIFY_DEFAULT_WORKSPACE_ID"}]}],"tools":[{"name":"add_invoice_item","description":"Add a line item to an invoice.","write_action":false,"price_micros":0,"input_schema":null},{"name":"add_invoice_payment","description":"Record a payment against an invoice (amount in minor units; payment_date ISO-8601).","write_action":false,"price_micros":0,"input_schema":null},{"name":"approve_time_off_request","description":"Approve a time-off request (sets status APPROVED).","write_action":false,"price_micros":0,"input_schema":null},{"name":"archive_expense_category","description":"Archive (archived=True) or restore (archived=False) an expense category.","write_action":false,"price_micros":0,"input_schema":null},{"name":"bulk_update_time_entries","description":"Bulk-edit a user's time entries. Each entry dict MUST include its 'id'.","write_action":true,"price_micros":0,"input_schema":null},{"name":"change_invoice_status","description":"Change an invoice's status: UNSENT/SENT/PAID/PARTIALLY_PAID/VOID/OVERDUE.","write_action":false,"price_micros":0,"input_schema":null},{"name":"copy_assignment","description":"Copy an assignment to another user (user_id required).","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_assignment","description":"Create a scheduled assignment. Pass weeks (and repeat) to make it recurring.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_client","description":"Create a client on the workspace.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_expense","description":"Create an expense; receipt_path optionally attaches a local receipt file.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_expense_category","description":"Create an expense category.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_holiday","description":"Create a holiday on the workspace.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_invoice","description":"Create an invoice (empty — add items separately).","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_project","description":"Create a project on the workspace. client_id links it to a client.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_shared_report","description":"Create a shared report. type is DETAILED/WEEKLY/SUMMARY/EXPENSE_DETAILED/ ATTENDANCE/etc.; the filter needs a date range and the type's sub-filter (a default is added for DETAILED/SUMMARY/WEEKLY/ATTENDANCE; pass report_filter to customize or for other types). is_public=True shares it publicly; otherwise scope with visible_to_users / visible_to_user_groups.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_tag","description":"Create a tag on the workspace.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_task","description":"Create a task on a project. status is ACTIVE or DONE.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_time_entry","description":"Create a time entry for the authenticated user. Omit end for a running timer.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_time_entry_for_user","description":"Create a time entry for another user (admin). Resolve user_id with list_users.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_time_off_policy","description":"Create a time-off policy on the workspace.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_time_off_request","description":"Create a time-off request for the authenticated user under a policy.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_workspace_custom_field","description":"Create a workspace custom field. type is TXT, NUMBER, DROPDOWN_SINGLE, DROPDOWN_MULTIPLE, CHECKBOX, or LINK; entity_type is TIMEENTRY or USER.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_assignment","description":"Delete an assignment. IRREVERSIBLE. series_update_option is THIS_ONE/THIS_AND_FOLLOWING/ALL for recurring series.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_client","description":"Delete a client. IRREVERSIBLE. The client must be archived first (update_client archived=True); the API rejects deleting an active client.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_expense","description":"Delete an expense. IRREVERSIBLE — the expense is permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_expense_category","description":"Delete an expense category. IRREVERSIBLE — permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_holiday","description":"Delete a holiday. IRREVERSIBLE — the holiday is permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_invoice","description":"Delete an invoice. IRREVERSIBLE — permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_invoice_payment","description":"Delete a recorded invoice payment. IRREVERSIBLE.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_project","description":"Delete a project. IRREVERSIBLE. The project must be archived first (update_project archived=True); the API rejects deleting an active project.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_shared_report","description":"Delete a shared report. IRREVERSIBLE — the saved report and share link are permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_tag","description":"Delete a tag. IRREVERSIBLE — the tag is permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_task","description":"Delete a task. IRREVERSIBLE — the task is permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_time_entry","description":"Delete a time entry. IRREVERSIBLE — the entry is permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"delete_workspace_custom_field","description":"Delete a workspace custom field. IRREVERSIBLE — the field and its values are permanently removed.","write_action":true,"price_micros":0,"input_schema":null},{"name":"download_expense_receipt","description":"Download an expense's receipt file to a local path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"duplicate_invoice","description":"Duplicate an invoice (creates a new draft copy).","write_action":false,"price_micros":0,"input_schema":null},{"name":"duplicate_time_entry","description":"Duplicate a user's time entry. Resolve user_id with get_current_user.","write_action":false,"price_micros":0,"input_schema":null},{"name":"export_report","description":"Export a report as a file (PDF/CSV/XLSX). report_type is detailed/summary/ weekly/attendance/expenses; fmt is PDF/CSV/XLSX; bytes are written to save_path.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_attendance_report","description":"Generate an attendance report (per user/day: work, break, capacity, overtime, time off) for a date range. Requires the attendance/time-tracking add-on.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_detailed_report","description":"Generate a detailed report (one row per time entry) for a date range.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_expense_report","description":"Generate a detailed expense report ({\"expenses\": [...], \"totals\": {...}}) for a date range. Requires the Expenses add-on.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_summary_report","description":"Generate a summary report (totals grouped by one or more keys) for a date range.","write_action":false,"price_micros":0,"input_schema":null},{"name":"generate_weekly_report","description":"Generate a weekly report for a date range.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_client","description":"Get a single client by id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_expense","description":"Get a single expense by id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_invoice","description":"Get a single invoice by id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_invoice_payments","description":"List an invoice's payments (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project","description":"Get a single project by id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_project_scheduling_totals","description":"Get scheduled-assignment totals per project (POST filter body).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_shared_report","description":"Generate (fetch the data of) a shared report by id. Optional params override the saved range/sort/format; export_type is JSON/PDF/CSV/XLSX/ZIP.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_tag","description":"Get a single tag by id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_task","description":"Get a single task by id (within its project).","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_time_entry","description":"Get a single time entry by id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_time_off_policy","description":"Get a single time-off policy by id.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_user_scheduling_totals","description":"Get users' scheduling capacity totals (POST filter body).","write_action":false,"price_micros":0,"input_schema":null},{"name":"import_invoice_items","description":"Import time entries (and optionally expenses) into an invoice as items.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_approval_requests","description":"List approval requests (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_clients","description":"List clients on the workspace, optionally filtered by name (paginated). fetch_all=True follows pagination and returns every page concatenated.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_expense_categories","description":"List expense categories (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_expenses","description":"List expenses on the workspace (paginated), optionally for one user.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_holidays","description":"List holidays on the workspace, optionally filtered to a user.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_holidays_in_period","description":"List holidays overlapping a date range for a user.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_invoices","description":"List invoices (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_project_custom_fields","description":"List a project's custom fields (status INACTIVE/VISIBLE/INVISIBLE).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_projects","description":"List projects on the workspace with optional filters (paginated). fetch_all=True follows pagination and returns every page concatenated.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_scheduled_assignments","description":"List scheduled assignments in a date range (start/end ISO-8601, required).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_shared_reports","description":"List the workspace's shared reports. shared_reports_filter is ALL (default), CREATED_BY_ME, or SHARED_WITH_ME.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tags","description":"List tags on the workspace, optionally filtered by name (paginated). fetch_all=True follows pagination and returns every page concatenated.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_tasks","description":"List tasks on a project, optionally filtered by name/active state (paginated). fetch_all=True follows pagination and returns every page concatenated.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_time_entries","description":"List a user's time entries on the workspace (paginated). fetch_all=True follows pagination and returns every page concatenated.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_time_off_balances_by_policy","description":"List per-user time-off balances for a policy (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_time_off_balances_by_user","description":"List a user's time-off balances across policies (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_time_off_policies","description":"List time-off policies on the workspace (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_time_off_requests","description":"List/filter time-off requests (filter sent as a POST body).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_user_groups","description":"List user groups on the workspace, optionally filtered by name (paginated).","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_users","description":"List workspace users, optionally filtered by name/email/status (paginated). fetch_all=True follows pagination and returns every page concatenated.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_workspace_custom_fields","description":"List workspace custom fields (status INACTIVE/VISIBLE/INVISIBLE).","write_action":false,"price_micros":0,"input_schema":null},{"name":"publish_assignments","description":"Publish scheduled assignments in a date range (start/end required).","write_action":true,"price_micros":0,"input_schema":null},{"name":"reject_time_off_request","description":"Reject a time-off request (sets status REJECTED).","write_action":false,"price_micros":0,"input_schema":null},{"name":"remove_project_custom_field","description":"Remove a custom field's project-level override (the workspace field itself is unaffected).","write_action":true,"price_micros":0,"input_schema":null},{"name":"resubmit_approval_entries","description":"Resubmit rejected/withdrawn entries for approval (authenticated user).","write_action":false,"price_micros":0,"input_schema":null},{"name":"set_project_custom_field","description":"Apply or override a workspace custom field on a project (sets its project-level default value and/or status).","write_action":false,"price_micros":0,"input_schema":null},{"name":"stop_running_timer","description":"Stop a user's currently running timer by setting its end (ISO-8601).","write_action":false,"price_micros":0,"input_schema":null},{"name":"submit_approval_request","description":"Submit an approval request for the authenticated user.","write_action":true,"price_micros":0,"input_schema":null},{"name":"submit_approval_request_for_user","description":"Submit an approval request on behalf of another user (manager action).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_approval_request","description":"Change an approval request's state (APPROVED/REJECTED/PENDING/WITHDRAWN_*).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_assignment","description":"Update an assignment (start/end required).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_client","description":"Update a client. name is required by the Clockify API (pass the current name if unchanged). Pass archived=True/False to archive or restore it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_expense","description":"Update an expense (multipart; changeFields derived from passed fields).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_expense_category","description":"Update an expense category (name required).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_holiday","description":"Update a holiday (full replace; occurs_annually required).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_invoice","description":"Update an invoice (full replace).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_project","description":"Update a project. Pass archived=True/False to archive or restore it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_shared_report","description":"Update a shared report's metadata/visibility (name required). type and filter are fixed at creation — delete and recreate to change them.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_tag","description":"Update a tag. Pass archived=True/False to archive or restore it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_task","description":"Update a task. name is required by the API. status is ACTIVE or DONE.","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_time_entry","description":"Update a time entry. start is required by the API (pass the existing start if unchanged).","write_action":true,"price_micros":0,"input_schema":null},{"name":"update_workspace_custom_field","description":"Update a workspace custom field. name and type are required by the API (pass current values if unchanged).","write_action":true,"price_micros":0,"input_schema":null},{"name":"withdraw_time_off_request","description":"Withdraw/cancel a time-off request. IRREVERSIBLE — the request is deleted.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":75,"grade":"B","scanned_at":"2026-09-27T12:13:14.089Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-27T12:13:14.148Z","components":{"code":{"score":25,"max":25,"notes":["32 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":12,"max":15,"notes":["last push 69 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"clockify-mcp","version":"0.3.2","found":true,"license":"MIT","dependencyCount":10,"publishedAt":"2026-06-09T15:56:34.033901Z","repositoryUrl":"https://github.com/tracegazer/clockify-mcp"}],"repo":{"found":true,"owner":"tracegazer","repo":"clockify-mcp","archived":false,"pushedAt":"2026-07-20T19:55:41Z","stars":1,"forks":1,"openIssues":2,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/290559778?v=4","ownerCreatedAt":"2026-06-04T01:03:41Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/290559778?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-07-20T19:55:41.000Z","score":16}}}},"grade_history":[],"reviews":[]}