# harvest MCP server

Read time entries, projects, clients, tasks and invoices; log and update tracked time.

## Links
- Registry page: https://www.getdrio.com/mcp/io-usefulapi-harvest
- Repository: https://github.com/m190/usefulapi-mcp

## Install
- Endpoint: https://harvest.usefulapi.io/mcp
- Auth: Not captured

## Setup notes
- Remote endpoint: https://harvest.usefulapi.io/mcp

## Tools
- harvest_list_time_entries (List time entries) - List time entries, optionally filtered by user, project, client, task, date range, running/billed status, or updated-since. Paginated. Harvest REST: GET /time_entries. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_get_time_entry (Get time entry) - Retrieve a single time entry by id. Harvest REST: GET /time_entries/{id}. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_list_projects (List projects) - List projects, optionally filtered by active status or client, or updated-since. Paginated. Harvest REST: GET /projects. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_get_project (Get project) - Retrieve a single project by id. Harvest REST: GET /projects/{id}. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_list_clients (List clients) - List clients, optionally filtered by active status or updated-since. Paginated. Harvest REST: GET /clients. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_get_client (Get client) - Retrieve a single client by id. Harvest REST: GET /clients/{id}. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_list_tasks (List tasks) - List tasks (the billable/non-billable work categories that can be assigned to projects), optionally filtered by active status or updated-since. Paginated. Harvest REST: GET /tasks. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_list_users (List users) - List users in the account, optionally filtered by active status or updated-since. Paginated. Harvest REST: GET /users. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_get_current_user (Get current user) - Retrieve the currently authenticated user (whom the access token belongs to). Harvest REST: GET /users/me. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_list_project_assignments (List my project assignments) - List the authenticated user's active project assignments — the projects and their assignable tasks the current user can log time against (use this to find the project_id + task_id for harvest_create_time_entry). Paginated. Harvest REST: GET /users/me/project_assignments. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_list_invoices (List invoices) - List invoices, optionally filtered by client, project, state, date range, or updated-since. Paginated. Harvest REST: GET /invoices. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_get_invoice (Get invoice) - Retrieve a single invoice by id, including its line items. Harvest REST: GET /invoices/{id}. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_list_estimates (List estimates) - List estimates, optionally filtered by client, state, date range, or updated-since. Paginated. Harvest REST: GET /estimates. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_list_expenses (List expenses) - List expenses, optionally filtered by user, client, project, date range, billed status, or updated-since. Paginated. Harvest REST: GET /expenses. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_get_company (Get company) - Retrieve the company/account settings for the authenticated account (name, currency, time/date formats, week start, feature flags). Harvest REST: GET /company. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_create_time_entry (Create time entry) - Create a time entry. Requires project_id, task_id and spent_date. Provide `hours` to log a specific duration; OR provide `started_time` (+ optional `ended_time`) for a timestamped entry; OR omit both to start a running timer (on a timestamp-tracking account). Use harvest_list_project_assignments to find valid project_id + task_id. Harvest REST: POST /time_entries. WRITE — creates data. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_update_time_entry (Update time entry) - Update an existing time entry's hours, notes, spent date, or project/task. Only the fields you provide are changed. Harvest REST: PATCH /time_entries/{id}. WRITE — modifies data. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_stop_time_entry (Stop running time entry) - Stop a currently running time entry (no-op error if it is already stopped). Harvest REST: PATCH /time_entries/{id}/stop. WRITE — modifies data. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_restart_time_entry (Restart stopped time entry) - Restart a previously stopped time entry, resuming its timer (error if it is already running). Harvest REST: PATCH /time_entries/{id}/restart. WRITE — modifies data. Endpoint: https://harvest.usefulapi.io/mcp
- harvest_delete_time_entry (Delete time entry) - Permanently delete a time entry by id. This cannot be undone. Harvest REST: DELETE /time_entries/{id}. WRITE — destroys data. Endpoint: https://harvest.usefulapi.io/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: io.usefulapi
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Aug 1, 2026
- Source: https://registry.modelcontextprotocol.io
