๐พ Harvest MCP Server
Unofficial Model Context Protocol (MCP) server for seamless integration with the Harvest time tracking API
โ ๏ธ Disclaimer: This is an unofficial, third-party integration with the Harvest API. This project is not affiliated with, endorsed by, or sponsored by Harvest or Forecast (the company behind Harvest).
โจ Features
- ๐ Complete Harvest API v2 Coverage - 40+ tools covering all major endpoints
- ๐ก๏ธ Type-Safe - Full TypeScript support with Zod validation
- โก High Performance - Built with async/await and proper rate limiting
- ๐งช Thoroughly Tested - Comprehensive unit, integration, and contract tests
- ๐ Rich Logging - Structured logging for debugging and monitoring
- ๐ Auto-Retry - Intelligent retry logic with exponential backoff
- ๐ MCP Compliant - Works with Claude Desktop and other MCP clients
๐ Quick Start
Prerequisites
- Node.js 18+
- Harvest account with API access
- MCP-compatible client (like Claude Desktop)
Installation
# Install globally
npm install -g @ianaleck/harvest-mcp-server
# Or install locally
npm install @ianaleck/harvest-mcp-server
Configuration
Get your Harvest API credentials:
- Go to Harvest โ Settings โ Developers โ Personal Access Tokens
- Create a new token
- Note your Account ID (visible in URL or settings)
Configure your MCP client (e.g., Claude Desktop):
{
"mcpServers": {
"harvest": {
"command": "npx",
"args": ["-y", "@ianaleck/harvest-mcp-server"],
"env": {
"HARVEST_ACCESS_TOKEN": "your_harvest_personal_access_token",
"HARVEST_ACCOUNT_ID": "your_harvest_account_id"
}
}
}
}
- Start using with Claude!
๐ฏ What You Can Do
Once connected, you can ask Claude to help with:
โฑ๏ธ Time Tracking
- "Show me all my time entries for this week"
- "Start a timer for the 'Development' task on the 'Website Project'"
- "How many hours did I work on Project X last month?"
๐ Project Management
- "List all active projects for client Acme Corp"
- "Create a new project called 'Mobile App' for client TechStart"
- "Show me project budget vs actual time spent"
๐ฅ Team Management
- "Who are all the users in our Harvest account?"
- "Show me John's time entries for last week"
๐ฐ Financial Tracking
- "Generate an expense report for Q4"
- "Show me all unpaid invoices"
- "What's our total billable hours this month?"
๐ ๏ธ Available Tools
๐ Company & Account (1 tool)
get_company- Get company information and settings
โฐ Time Entries (8 tools)
list_time_entries- List time entries with filteringget_time_entry- Get specific time entry detailscreate_time_entry- Create new time entryupdate_time_entry- Update existing time entrydelete_time_entry- Delete time entrystart_timer- Start a timer for a taskstop_timer- Stop running timerrestart_timer- Restart a previous time entry
๐๏ธ Projects (7 tools)
list_projects- List all projects with filteringget_project- Get specific project detailscreate_project- Create new projectupdate_project- Update project detailsdelete_project- Delete projectlist_project_task_assignments- List task assignments for projectcreate_project_task_assignment- Assign task to projectupdate_project_task_assignment- Update task assignmentdelete_project_task_assignment- Remove task assignment
๐ Tasks (5 tools)
list_tasks- List all tasksget_task- Get specific task detailscreate_task- Create new taskupdate_task- Update task detailsdelete_task- Delete task
๐ข Clients (5 tools)
list_clients- List all clientsget_client- Get specific client detailscreate_client- Create new
Tools 26
get_companyGet company information and settingslist_time_entriesList time entries with filteringget_time_entryGet specific time entry detailscreate_time_entryCreate new time entryupdate_time_entryUpdate existing time entrydelete_time_entryDelete time entrystart_timerStart a timer for a taskstop_timerStop running timerrestart_timerRestart a previous time entrylist_projectsList all projects with filteringget_projectGet specific project detailscreate_projectCreate new projectupdate_projectUpdate project detailsdelete_projectDelete projectlist_project_task_assignmentsList task assignments for projectcreate_project_task_assignmentAssign task to projectupdate_project_task_assignmentUpdate task assignmentdelete_project_task_assignmentRemove task assignmentlist_tasksList all tasksget_taskGet specific task detailscreate_taskCreate new taskupdate_taskUpdate task detailsdelete_taskDelete tasklist_clientsList all clientsget_clientGet specific client detailscreate_clientCreate new clientEnvironment Variables
HARVEST_ACCESS_TOKENrequiredPersonal access token for Harvest API authenticationHARVEST_ACCOUNT_IDrequiredHarvest account ID associated with the API access