Harvest Time Tracking MCP Server

Harvest Time Tracking MCP Server

By mayank2424 GitHub

MCP (Model Context Protocol) server for Harvest Time Tracking.

Overview

what is mcp-server-harvest?

MCP-server-harvest is a server implementation of the Model Context Protocol designed for tracking time using the Harvest application.

how to use mcp-server-harvest?

To use mcp-server-harvest, set up the server by following the installation instructions in the GitHub repository, and then integrate it with your Harvest account to start tracking time.

key features of mcp-server-harvest?

  • Seamless integration with Harvest for time tracking.
  • Supports Model Context Protocol for efficient data handling.
  • Easy setup and configuration through provided documentation.

use cases of mcp-server-harvest?

  1. Tracking project time for teams using Harvest.
  2. Automating time entry for various tasks and projects.
  3. Analyzing time spent on different activities for better productivity.

FAQ from mcp-server-harvest?

  • What is the Model Context Protocol?

The Model Context Protocol is a framework that allows for efficient communication and data handling between applications.

  • Is mcp-server-harvest free to use?

Yes! mcp-server-harvest is open-source and free to use.

  • How can I contribute to mcp-server-harvest?

You can contribute by submitting issues, feature requests, or pull requests on the GitHub repository.

Content

Harvest Time Tracking MCP Server

A TypeScript based MCP (Model Context Protocol) server for Harvest time tracking app enabling LLM clients to interact with Harvest account.

Prerequisites

  • Bun Runtime
  • Harvest account with API access
  • API Personal Access Token from Harvest
  • Account ID from Harvest

More details on how to create a Personal Access Token can be found in the Harvest API documentation.

Tools

Available Tools

ToolDescriptionInputsOutput
get-companyGet company informationNoneCompany Information (Name, URL, ID and Currency)
search-clientsSearches for clients• name: string (optional) - Client name
• isActive: boolean (optional) - Active status
List of clients with IDs and details
get-clientGet client information• clientId: string - Client IDDetailed client information
search-projectsSearches for projects• name: string (optional) - Project name
• clientId: string (optional) - Client ID
• isActive: boolean (optional) - Active status
List of projects with IDs and details
get-projectGet project information• projectId: string - Project IDDetailed project information
list-usersLists all usersNoneList of users with IDs and details
get-userGet user information• userId: string - User IDDetailed user information
list-project-usersList project user assignments• projectId: string - Project IDList of users assigned to project
list-project-tasksList project task assignments• projectId: string - Project IDList of tasks assigned to project
search-time-entriesSearches for time entries• from: string (optional) - Start date (YYYY-MM-DD)
• to: string (optional) - End date (YYYY-MM-DD)
• userId: string (optional) - User ID
• projectId: string (optional) - Project ID
• clientId: string (optional) - Client ID
List of time entries with details
get-time-entryGet time entry details• timeEntryId: string - Time Entry IDDetailed time entry information
create-time-entryCreate a new time entry• projectId: string - Project ID
• taskId: string - Task ID
• userId: string - User ID
• hours: number - Hours spent
• notes: string (optional) - Additional notes
Created time entry details

Note: More tools coming soon.

Usage

Claude Desktop

  • Open the Claude desktop config file claude-desktop-config.json and set the following details under mcpServers.

    {
      "mcpServers": {
        "Harvest": {
          "command": "npx",
          "args": [
            "@harvest/mcp-server-typescript",
            // Or use the path to the local build
            // "path/to/local/build/dist/index.js"
          ],
          "env": {
            "HARVEST_ACCOUNT_ID": "<Harvest Account ID>",
            "HARVEST_ACCESS_TOKEN": "<Harvest Personal Access Token>",
            "HARVEST_BASE_URL": "<Harvest Base URL>"
          }
        }
      }
    }
    

Cursor IDE

  • Open the Cursor IDE config file ~/.cursor/mcp.json or <project-root>/.cursor/mcp.json and set the following details under mcpServers.

    {
      "mcpServers": {
        "Harvest": {
          "command": "npx",
          "args": [
            "@harvest/mcp-server-typescript",
            // Or use the path to the local build
            // "path/to/local/build/dist/index.js"
          ],
          "env": {
            "HARVEST_ACCOUNT_ID": "<Harvest Account ID>",
            "HARVEST_ACCESS_TOKEN": "<Harvest Personal Access Token>",
            "HARVEST_BASE_URL": "<Harvest Base URL>"
          }
        }
      }
    }
    

Local Installation And Development

  1. Install dependencies:

    npm install
    
  2. Build the project:

    npm run build
    

This will create a dist directory containing the compiled JavaScript files.

  1. To use the local development version of MCP server instead of the published version, you can run the server directly from the local build:

    npm run build
    

    Modify the MCP server configuration file in any of the clients (Claude, Cursor)

     {
       "mcpServers": {
         "Harvest": {
           "command": "node",
           "args": [
             "path/to/local/build/dist/index.js"
           ],
           "env": {
             "HARVEST_ACCOUNT_ID": "<Harvest Account ID>",
             "HARVEST_ACCESS_TOKEN": "<Harvest Personal Access Token>",
             "HARVEST_BASE_URL": "<Harvest Base URL>"
           }
         }
       }
     } 
    
  2. Restart the client application (Claude, Cursor) to apply the changes and test the latest changes without publishing a new version.

No tools information available.
No content found.