
Harvest Time Tracking MCP Server
MCP (Model Context Protocol) server for Harvest Time Tracking.
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?
- Tracking project time for teams using Harvest.
- Automating time entry for various tasks and projects.
- 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.
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
Tool | Description | Inputs | Output |
---|---|---|---|
get-company | Get company information | None | Company Information (Name, URL, ID and Currency) |
search-clients | Searches for clients | • name: string (optional) - Client name • isActive: boolean (optional) - Active status | List of clients with IDs and details |
get-client | Get client information | • clientId: string - Client ID | Detailed client information |
search-projects | Searches 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-project | Get project information | • projectId: string - Project ID | Detailed project information |
list-users | Lists all users | None | List of users with IDs and details |
get-user | Get user information | • userId: string - User ID | Detailed user information |
list-project-users | List project user assignments | • projectId: string - Project ID | List of users assigned to project |
list-project-tasks | List project task assignments | • projectId: string - Project ID | List of tasks assigned to project |
search-time-entries | Searches 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-entry | Get time entry details | • timeEntryId: string - Time Entry ID | Detailed time entry information |
create-time-entry | Create 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 undermcpServers
.{ "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 undermcpServers
.{ "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
-
Install dependencies:
npm install
-
Build the project:
npm run build
This will create a dist
directory containing the compiled JavaScript files.
-
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>" } } } }
-
Restart the client application (Claude, Cursor) to apply the changes and test the latest changes without publishing a new version.