Unofficial Model Context Protocol (MCP) server for the Harvest time tracking API
๐พ 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 accessConfiguration
{"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"}}}}