Labsco
MCP SERVER

Harvest MCP Server

by taiste

Run your Harvest timesheets, projects and estimates from the conversation instead of the web app.

ERP & Vertical Business Systems
Summary
Full write access to Harvest, with one switch that turns it into a read-only reporting tool.

Timers, estimates and project changes all go through, which is what makes it worth wiring in — and also why HARVEST_READ_ONLY matters: flip it and every write tool refuses with an explanation instead of you having to trust the model. Deleting a project takes its time entries and expenses with it, so archiving is the safer move the docs point to.

What it is

A FastMCP server over the Harvest time tracking and project management API, covering time entries, projects, assignments, clients, tasks and estimates.

What you get
  • Time entries — list with filters, create new ones, start and stop timers, and pull unsubmitted timesheets that have not gone for approval
  • Projects — list and filter by client, active state or updated_since, read details, create, update, and archive by setting is_active to False
  • Task assignments — list account-wide or per project, create, update, and delete when no time is logged against them
  • User assignments — the same lifecycle for linking people to projects
  • Clients and tasks — list with filters and read details
  • Estimates — list and filter by client, state or date range, look one up by its user-facing number, read its messages, create with line items, change state between send, accept, decline and re-open, and email it to recipients
  • HARVEST_READ_ONLY disables every write operation while leaving all reads working
Requirements

A Harvest account with API access, plus HARVEST_ACCOUNT_ID and HARVEST_API_KEY in the client's environment block. Python 3.10 or higher and uv, which launches harvest-mcp-server.py from the project directory. The maintainers suggest a dedicated API key with limited permissions.

Setup effort

Build from source — clone the repository and build it, then point your client at the binary