@iiinigence/harvest-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| READ_ONLY | No | true = reports and entries readable, all writing blocked (default false) | false |
| HARVEST_ACCOUNT_ID | Yes | Numeric account id shown next to the token | |
| HARVEST_ACCESS_TOKEN | Yes | Personal Access Token from id.getharvest.com/developers |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_meA | Get the authenticated Harvest user (name, email, id, roles, timezone). Useful to resolve 'my' time entries and check the connection. |
| list_clientsB | List clients in the Harvest account. Returns id, name, active state. |
| list_projectsA | List projects with their client, code, and budget info. Filter by client_id or include archived projects. |
| list_project_tasksA | List the task assignments for a project (task_id + name). You need a task_id to log time or start a timer on that project. |
| list_time_entriesA | List time entries, newest first. Filter by date range (from/to, YYYY-MM-DD), project_id, user_id, or only_running. Use mine=true to limit to the authenticated user. Returns up to 300 entries per call. |
| get_time_reportA | Aggregated hours for a date range, grouped by clients, projects, tasks, or team members. Includes billable vs total hours and billable amounts (when permitted). Perfect for 'how many hours did we spend on X this month?' |
| log_timeA | Create a completed time entry: project, task, date, and duration in hours (e.g. 1.5). Use list_projects and list_project_tasks first to get ids. Add a short note describing the work. |
| start_timerA | Start a running timer on a project + task for today (authenticated user). Any other running timer for the user is stopped automatically by Harvest. Use list_project_tasks to get the task_id. |
| stop_timerA | Stop a running timer. If time_entry_id is omitted, finds and stops the authenticated user's currently running timer. |
| update_time_entryA | Edit an existing time entry's hours, notes, date, project, or task. Only provided fields are changed. (This server intentionally has no delete tool — set hours or move entries instead, and delete in Harvest itself if truly needed.) |
| list_usersA | List users in the Harvest account (id, name, email, roles). Needed for per-person filters and team reports. Requires admin/manager access. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 11 tools
Each tool targets a distinct resource or action. The only potential overlap is between log_time and start_timer, but descriptions clearly separate completed entries from running timers. list_time_entries and get_time_report serve different purposes (raw vs aggregated).
All tool names follow a consistent verb_noun pattern using snake_case. Read operations use list_ for collections and get_ for single entities (get_me, get_time_report), which is a predictable and logical variation. No mixed naming conventions are present.
11 tools is well within the ideal 3-15 range. Each tool addresses a core time-tracking workflow: listing entities, logging/editing entries, managing timers, and generating reports. No tool seems redundant or unnecessary.
The surface covers the essential lifecycle of time entries: create (log_time, start_timer), read (list_time_entries, get_time_report), and update (update_time_entry). Delete is intentionally omitted with a clear rationale, making it a minor gap. Project/client/task management is limited to listing, but that is suitable for a time-tracking integration.