harvest-mcp-server
The Harvest MCP Server provides comprehensive integration with the Harvest time tracking API, enabling AI assistants like Claude to manage time tracking, projects, clients, finances, and reporting through 40+ tools via natural language commands.
β±οΈ Time Tracking
List, get, create, update, and delete time entries with rich filtering (by user, client, project, task, date range, billing status)
Start, stop, and restart timers in real-time
ποΈ Project Management
List, get, create, update, and delete projects with full configuration (budget, billing, rates, timelines)
Manage task assignments on projects
π Task Management
List, get, create, update, and delete tasks with billing defaults and hourly rates
π’ Client Management
List, get, create, update, and delete clients with address, contact, and currency support
π₯ User Management
List, get, create, update, and delete users with role and permission control
Get the current authenticated user's profile
πΈ Expense Tracking
List, get, create, update, and delete expenses with category and billing details
Manage expense categories
π§Ύ Invoice Management
List, get, create, update, and delete invoices with tax, discount, and payment term support
Filter by state (draft, open, paid, closed)
π Estimate Management
List, get, create, update, and delete estimates with tax, discount, and currency support
Filter by state (draft, sent, accepted, declined)
π Reporting
Time reports β filter and group by user, client, project, task, or date
Expense reports β filter and group by user, client, project, category, or date
Project budget reports β track spending vs. budget, filter by over-budget projects
Uninvoiced reports β identify billable time and expenses not yet invoiced
π’ Company Info
Retrieve company settings, billing configuration, and feature flags
Additional features include pagination support, date/status filtering, rate limiting compliance, and comprehensive input validation.
πΎ 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-serverConfiguration
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
get_company- Get company information and settings
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
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
list_tasks- List all tasksget_task- Get specific task detailscreate_task- Create new taskupdate_task- Update task detailsdelete_task- Delete task
list_clients- List all clientsget_client- Get specific client detailscreate_client- Create new clientupdate_client- Update client detailsdelete_client- Delete client
list_users- List all users in accountget_user- Get specific user detailsget_current_user- Get current authenticated usercreate_user- Create new userupdate_user- Update user detailsdelete_user- Delete user
list_expenses- List expenses with filteringget_expense- Get specific expense detailscreate_expense- Create new expenseupdate_expense- Update expense detailsdelete_expense- Delete expenselist_expense_categories- List all expense categories
list_invoices- List invoices with filteringget_invoice- Get specific invoice detailscreate_invoice- Create new invoiceupdate_invoice- Update invoice detailsdelete_invoice- Delete invoice
list_estimates- List estimates with filteringget_estimate- Get specific estimate detailscreate_estimate- Create new estimateupdate_estimate- Update estimate detailsdelete_estimate- Delete estimate
get_time_report- Generate time reports with filteringget_expense_report- Generate expense reportsget_project_budget_report- Get project budget analysisget_uninvoiced_report- Get uninvoiced time and expenses
π§ͺ Development
Setup
git clone https://github.com/ianaleck/harvest-mcp-server.git
cd harvest-mcp-server
npm installEnvironment Configuration
cp .env.example .env
# Edit .env with your Harvest API credentialsTesting
# Run all tests
npm test
# Run with coverage
npm run test:coverage
# Run specific test suites
npm run test:unit
npm run test:integration
npm run test:contractBuilding
# Build for production
npm run build
# Start development server
npm run devπ API Requirements
This server requires a Harvest account with API access. Users must comply with:
Harvest API Rate Limits (100 requests per 15 seconds)
π€ Contributing
We welcome contributions! Please see our Contributing Guidelines for details.
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Make your changes with tests
Ensure all tests pass (
npm test)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
π License
This project is licensed under the MIT License - see the LICENSE file for details.
π Acknowledgments
Harvest for providing an excellent time tracking API
Model Context Protocol team for the MCP specification
Anthropic for Claude and the MCP SDK
π Support
π Bug Reports: GitHub Issues
π‘ Feature Requests: GitHub Discussions
π Documentation: MCP Documentation
Made with β€οΈ for the MCP community
β Star this project if you find it useful!
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/ianaleck/harvest-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server