harvest-mcp-server

ianaleck/harvest-mcp-server

3.3

If you are the rightful owner of harvest-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

Harvest MCP Server is an unofficial Model Context Protocol server designed for seamless integration with the Harvest time tracking API.

Tools
5
Resources
0
Prompts
0

๐ŸŒพ Harvest MCP Server

npm version TypeScript MCP License: MIT Tests Buy Me A Coffee

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

  1. 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)
  2. 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"
      }
    }
  }
}
  1. 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 filtering
  • get_time_entry - Get specific time entry details
  • create_time_entry - Create new time entry
  • update_time_entry - Update existing time entry
  • delete_time_entry - Delete time entry
  • start_timer - Start a timer for a task
  • stop_timer - Stop running timer
  • restart_timer - Restart a previous time entry
๐Ÿ—๏ธ Projects (7 tools)
  • list_projects - List all projects with filtering
  • get_project - Get specific project details
  • create_project - Create new project
  • update_project - Update project details
  • delete_project - Delete project
  • list_project_task_assignments - List task assignments for project
  • create_project_task_assignment - Assign task to project
  • update_project_task_assignment - Update task assignment
  • delete_project_task_assignment - Remove task assignment
๐Ÿ“ Tasks (5 tools)
  • list_tasks - List all tasks
  • get_task - Get specific task details
  • create_task - Create new task
  • update_task - Update task details
  • delete_task - Delete task
๐Ÿข Clients (5 tools)
  • list_clients - List all clients
  • get_client - Get specific client details
  • create_client - Create new client
  • update_client - Update client details
  • delete_client - Delete client
๐Ÿ‘ค Users (6 tools)
  • list_users - List all users in account
  • get_user - Get specific user details
  • get_current_user - Get current authenticated user
  • create_user - Create new user
  • update_user - Update user details
  • delete_user - Delete user
๐Ÿ’ธ Expenses (6 tools)
  • list_expenses - List expenses with filtering
  • get_expense - Get specific expense details
  • create_expense - Create new expense
  • update_expense - Update expense details
  • delete_expense - Delete expense
  • list_expense_categories - List all expense categories
๐Ÿงพ Invoices (5 tools)
  • list_invoices - List invoices with filtering
  • get_invoice - Get specific invoice details
  • create_invoice - Create new invoice
  • update_invoice - Update invoice details
  • delete_invoice - Delete invoice
๐Ÿ“‹ Estimates (5 tools)
  • list_estimates - List estimates with filtering
  • get_estimate - Get specific estimate details
  • create_estimate - Create new estimate
  • update_estimate - Update estimate details
  • delete_estimate - Delete estimate
๐Ÿ“ˆ Reports (4 tools)
  • get_time_report - Generate time reports with filtering
  • get_expense_report - Generate expense reports
  • get_project_budget_report - Get project budget analysis
  • get_uninvoiced_report - Get uninvoiced time and expenses

๐Ÿงช 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:

๐Ÿค Contributing

We welcome contributions! Please see our for details.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes with tests
  4. Ensure all tests pass (npm test)
  5. Commit your changes (git commit -m 'Add amazing feature')
  6. Push to the branch (git push origin feature/amazing-feature)
  7. Open a Pull Request

๐Ÿ“„ License

This project is licensed under the MIT License - see the file for details.

๐Ÿ™ Acknowledgments

๐Ÿ“ž Support


Made with โค๏ธ for the MCP community

โญ Star this project if you find it useful!