Harvest MCP Server logo

Harvest MCP Server

by ianaleck

Unofficial MCP server providing full Harvest API v2 access for time tracking, projects, clients, tasks, users, expenses, and invoices.

Install Harvest MCP Server

Pick your client, then add it in one click or paste the config.

STDIONode.js
~/Library/Application Support/Claude/claude_desktop_config.json
claude_desktop_config.json
{
  "mcpServers": {
    "ianaleck-harvest-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "@ianaleck/harvest-mcp-server"
      ],
      "env": {
        "HARVEST_ACCESS_TOKEN": "YOUR_VALUE_HERE",
        "HARVEST_ACCOUNT_ID": "YOUR_VALUE_HERE"
      }
    }
  }
}

Settings → Developer → Edit Config, merge this into mcpServers, then fully quit and reopen Claude Desktop.

Values are written into the snippet above so you can paste it as is. They never leave your browser.

We couldn’t confirm it starts correctly

We ran the install command but it didn't respond within our test window — this can mean a slow first-time install rather than a real problem.

npx -y @ianaleck/harvest-mcp-server

No response to initialize.

This is an experimental automated check and can have false negatives — missing environment variables, a slow cold install, etc. It doesn’t necessarily mean something’s wrong. Last checked 1mo ago.

Overview

This MCP server offers comprehensive integration with the Harvest time tracking API v2, exposing over 40 tools for managing time entries, projects, clients, tasks, users, expenses, and invoices. It supports full TypeScript type safety, rate limiting, retry logic, and structured logging. Use this server to enable AI agents to interact programmatically with Harvest data for workplace productivity and financial tracking. It is compatible with MCP clients like Claude Desktop and requires a Harvest personal access token and account ID.

Use cases

  • Query and manage time entries and timers
  • Create, update, and delete projects and tasks
  • List and manage clients and users
  • Generate and review expense and invoice reports
  • Track project budgets and billable hours

Key features

  • Complete Harvest API v2 coverage with 40+ tools
  • Type-safe with TypeScript and Zod validation
  • Async/await with rate limiting and auto-retry
  • Structured logging for debugging and monitoring
  • MCP compliant for integration with AI clients

Security & health

What it can reach and how reliably it runs — from our own checks, not the maintainer’s claims.

ActiveLast checked 3d ago

Recent health check succeeded.

19/19 checks healthy over the last 80d

Supply-chain signal

No high-severity advisories surfaced by our automated scan.

Critical 0High 0Medium 0Low 0

Scanned 10d ago via OSV.dev · @ianaleck/harvest-mcp-server (npm)

Adoption & maintenance

Factual signals from GitHub, npm, and our automated checks — not a rating.

GitHub stars8Stargazers on the source repository.
npm downloads328Package downloads in the last 30 days.
Last commit3mo agoMost recent push to the default branch.
Install checkInconclusiveDidn't respond in our test window — often a slow first install.
Directory activity4 viewsConfig copies, upvotes, and views on AllMCPs.

From the project README

🌾 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).

harvest-mcp-server MCP server

✨ 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

bash
# 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):

config.json
{
  "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

bash
git clone https://github.com/ianaleck/harvest-mcp-server.git
cd harvest-mcp-server
npm install

Environment Configuration

bash
cp .env.example .env
# Edit .env with your Harvest API credentials

Testing

bash
# 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

bash
# 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 Contributing Guidelines 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 LICENSE file for details.

🙏 Acknowledgments

📞 Support


Made with ❤️ for the MCP community

⭐ Star this project if you find it useful!

Reviews

No reviews yet — be the first to share how it worked for you.

Frequently Asked Questions about Harvest MCP Server

No, this is an unofficial third-party integration not affiliated with or endorsed by Harvest.

You need a Harvest personal access token and your Harvest account ID.

It works with MCP-compatible clients such as Claude Desktop.

Node.js version 18 or higher is required.

It covers all major Harvest API v2 endpoints with over 40 tools.

Related MCP servers

Add a badge to your READMEShow it’s listed — live SVG, Markdown or HTML.

AllMCPs Directory Badge

Full Badge Customizer

Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.

Badge Style:
Live Dynamic SVG PreviewHarvest MCP Server AllMCPs Directory Badge
Markdown (GitHub README)
[![AllMCPs](https://allmcps.com/api/badge/ianaleck-harvest-mcp-server?style=directory)](https://allmcps.com/mcp/ianaleck-harvest-mcp-server)
HTML Embed
<a href="https://allmcps.com/mcp/ianaleck-harvest-mcp-server"><img src="https://allmcps.com/api/badge/ianaleck-harvest-mcp-server?style=directory" alt="Harvest MCP Server on AllMCPs" /></a>