@ianaleck/harvest-mcp-server
v0.1.6
Published
Model Context Protocol server for Harvest API v2
Maintainers
Readme
🌾 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 Terms of Service
- 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!
