harvest-mcp-server
MCP server for Harvest time tracking. Manage time entries, start/stop timers, handle projects, clients, tasks, and generate time and expense reports via the Harvest API v2.
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-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
<details> <summary><strong>📊 Company & Account (1 tool)</strong></summary>
get_company- Get company information and settings </details>
<details> <summary><strong>⏰ Time Entries (8 tools)</strong></summary>
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 </details>
<details> <summary><strong>🏗️ Projects (7 tools)</strong></summary>
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 </details>
<details> <summary><strong>📝 Tasks (5 tools)</strong></summary>
list_tasks- List all tasksget_task- Get specific task detailscreate_task- Create new taskupdate_task- Update task detailsdelete_task- Delete task </details>
<details> <summary><strong>🏢 Clients (5 tools)</strong></summary>
list_clients- List all clientsget_client- Get specific client detailscreate_client- Create new clientupdate_client- Update client detailsdelete_client- Delete client </details>
<details> <summary><strong>👤 Users (6 tools)</strong></summary>
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 </details>
<details> <summary><strong>💸 Expenses (6 tools)</strong></summary>
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 </details>
<details> <summary><strong>🧾 Invoices (5 tools)</strong></summary>
list_invoices- List invoices with filteringget_invoice- Get specific invoice detailscreate_invoice- Create new invoiceupdate_invoice- Update invoice detailsdelete_invoice- Delete invoice </details>
<details> <summary><strong>📋 Estimates (5 tools)</strong></summary>
list_estimates- List estimates with filteringget_estimate- Get specific estimate detailscreate_estimate- Create new estimateupdate_estimate- Update estimate detailsdelete_estimate- Delete estimate </details>
<details> <summary><strong>📈 Reports (4 tools)</strong></summary>
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 </details>
🧪 Development
Setup
git clone https://github.com/ianaleck/harvest-mcp-server.git
cd harvest-mcp-server
npm install
Environment Configuration
cp .env.example .env
# Edit .env with your Harvest API credentials
Testing
# 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:contract
Building
# 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
<div align="center">
Made with ❤️ for the MCP community
⭐ Star this project if you find it useful!
</div>
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。