harvest
An MCP server for natural language time entry in Harvest
claude mcp add --transport stdio adrian-dotco-harvest-mcp-server node path/to/server.js \ --env TIMEZONE="Your timezone (default: Australia/Perth)" \ --env HARVEST_ACCOUNT_ID="Your Harvest account ID" \ --env HARVEST_ACCESS_TOKEN="Your Harvest personal access token" \ --env STANDARD_WORK_DAY_HOURS="Default hours for a full work day (default: 7.5)"
How to use
This MCP server enables natural language time entry against Harvest and includes special handling for leave requests. It can parse everyday work entries like "2 hours on Project X" as well as more complex phrases such as leaving for sick days or holidays. In addition to logging time, it provides commands to generate time reports, list projects and tasks, and view recent entries. The built-in natural language parsing (via chrono-node) makes it easier to describe work time without manual data entry, and it can automatically match projects and tasks when possible, helping you keep Harvest data consistent and up to date.
Available tools:
- log_time: Enter time entries using natural language. Examples include regular work entries and leave requests (e.g., "I'm off sick today", "Taking annual leave next week").
- get_time_report: Retrieve time reports described in natural language, with options to summarize by project, client, task, or team member and to specify a date range (yesterday, last week, this month, Q1, etc.).
- list_projects: List all Harvest projects to help you choose the right context for your logs and reports.
- list_tasks: List tasks for a given project to ensure correct task mapping when logging time.
- list_entries: View your recent Harvest time entries to verify recent activity before running reports or adding new logs.
By using these tools together, you can translate natural language directly into Harvest actions, create meaningful reports, and keep project, client, and task associations accurate with minimal manual effort.
How to install
Prerequisites
- Node.js installed
- A Harvest account
- Personal access token from Harvest Developer Tools
- Harvest Account ID
Installation steps:
- Install Claude app (if required by your setup) and clone the repository:
# Optional: if you use Claude integration with local builds
# Install Claude desktop app if needed
- Clone the MCP server repository and install dependencies:
git clone https://github.com/adrian-dotco/harvest-mcp-server.git
cd harvest-mcp-server
npm install
- Build the project (if the project requires a build step):
npm run build
- Run the setup script to configure Harvest credentials and defaults:
node build/setup.js
- Enter required information when prompted:
- Harvest Personal Access Token (from https://id.getharvest.com/developers)
- Harvest Account ID
- Standard work day hours (default: 7.5)
- Timezone (default: Australia/Perth)
- Restart Claude desktop app (if using Claude integration) to apply the local server build.
Update the server later with:
git pull
npm install
npm run build
Additional notes
Environment variables control how the server authenticates with Harvest and how it formats default work days and time zones. Common issues include invalid Harvest tokens, incorrect account IDs, or misconfigured time zone settings. If you encounter authentication errors, re-run the setup script to re-enter credentials. Ensure your HARVEST_ACCESS_TOKEN has the required permissions for time entries and reports. If you update the build, make sure Claude (or your integration) points to the latest local server build. The server uses chrono-node for date parsing, so phrases like "yesterday" or "last Friday" will be interpreted relative to the current date. For large date ranges in reports, consider specifying explicit dates to avoid ambiguity.
Related MCP Servers
zen
Selfhosted notes app. Single golang binary, notes stored as markdown within SQLite, full-text search, very low resource usage
MCP -Deepseek_R1
A Model Context Protocol (MCP) server implementation connecting Claude Desktop with DeepSeek's language models (R1/V3)
mcp-fhir
A Model Context Protocol implementation for FHIR
mcp
Inkdrop Model Context Protocol Server
mcp-appium-gestures
This is a Model Context Protocol (MCP) server providing resources and tools for Appium mobile gestures using Actions API..
dubco -npm
The (Unofficial) dubco-mcp-server enables AI assistants to manage Dub.co short links via the Model Context Protocol. It provides three MCP tools: create_link for generating new short URLs, update_link for modifying existing links, and delete_link for removing short links.