harvest-mcp-server

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.

Category
Visit Server

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

# 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

<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 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 </details>

<details> <summary><strong>๐Ÿ—๏ธ Projects (7 tools)</strong></summary>

  • 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 </details>

<details> <summary><strong>๐Ÿ“ Tasks (5 tools)</strong></summary>

  • 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 </details>

<details> <summary><strong>๐Ÿข Clients (5 tools)</strong></summary>

  • 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 </details>

<details> <summary><strong>๐Ÿ‘ค Users (6 tools)</strong></summary>

  • 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 </details>

<details> <summary><strong>๐Ÿ’ธ Expenses (6 tools)</strong></summary>

  • 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 </details>

<details> <summary><strong>๐Ÿงพ Invoices (5 tools)</strong></summary>

  • 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 </details>

<details> <summary><strong>๐Ÿ“‹ Estimates (5 tools)</strong></summary>

  • 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 </details>

<details> <summary><strong>๐Ÿ“ˆ Reports (4 tools)</strong></summary>

  • 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 </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:

๐Ÿค 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


<div align="center">

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

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

</div>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured