Releases: baspenny/harvest-mcp
Release list
v1.2.0 - Compact Project List Format
What's New
Optimized list_active_projects Output
The list_active_projects tool now returns a compact, readable format by default, reducing context usage by 80-90% compared to the previous full JSON output.
Compact Format (Default)
Client: Acme Corp
→ Website Redesign (project_id: 14308070)
Tasks: Design (8083367), Development (8083368), Testing (8083369)
Client: 123 Industries
→ Online Store - Phase 1 (project_id: 14308069)
Tasks: Graphic Design (8083365), Programming (8083366)
Full Format (Optional)
Users who need the complete JSON response can specify format: 'full' to get the previous behavior.
Benefits
- Faster responses: Less data to process and transmit
- Better readability: Easy to scan and identify project/task IDs
- Reduced context usage: More efficient token usage for AI assistants
- Backward compatibility: Full JSON still available via format parameter
Changes
- Added
formatparameter tolist_active_projects('compact'or'full') - Implemented
formatCompactProjects()helper function - Updated documentation in README.md and CLAUDE.md
- Version bumped to 1.2.0
Breaking Changes
format: 'full' to your tool calls.
Installation
After updating, remember to:
- Run
npm installto ensure dependencies are up to date - Run
npm run buildto compile the TypeScript - Restart your MCP client (e.g., Claude Desktop) to pick up the changes
Full Changelog: v1.1.0...v1.2.0
v1.1.0 - Timer Management & Error Handling
New Features
Timer Management
- start_timer: Create a running timer without specifying hours (automatically starts tracking time)
- stop_timer: Stop a running timer using Harvest's dedicated
/stopendpoint - restart_timer: Restart a previously stopped timer using the
/restartendpoint - get_running_timer: Check if a timer is running and display elapsed time
Error Handling
- Added comprehensive error handling to all tool handlers with try-catch blocks
- Improved error messages to include Harvest API response details for better debugging
Improvements
- Fixed
stop_timerto use the correct Harvest API v2 endpoint (PATCH /time_entries/{id}/stop) - Enhanced
stop_timeroutput to show project name, task name, total hours, and date - All tools now provide detailed error messages when operations fail
Documentation
- Updated CLAUDE.md with new timer tools
- Added detailed README.md sections for all timer operations
- Updated API reference to reflect correct Harvest API v2 endpoints
- Added example interactions for timer workflows
Breaking Changes
None - all existing functionality remains backward compatible.
Installation
npm install
npm run buildConfigure in your MCP client (e.g., Claude Desktop):
{
"mcpServers": {
"harvest": {
"command": "node",
"args": ["/path/to/harvest-mcp/build/index.js"],
"env": {
"HARVEST_ACCESS_TOKEN": "your-token-here",
"HARVEST_ACCOUNT_ID": "your-account-id"
}
}
}
}v1.0.0 - Initial Release
Harvest MCP Server v1.0.0
First stable release of the Harvest MCP server - a Model Context Protocol integration for Harvest time tracking.
Features
✅ Verify credentials and retrieve authenticated user information
✅ List active projects with their associated tasks
✅ Retrieve time entries for any date or date range with optional project/user filtering
✅ Log time entries for specific projects and tasks
✅ Delete time entries to correct mistakes
✅ Flexible authentication: Supports both environment variables and per-call credentials
✅ Relative date parsing: Use natural language like "today", "yesterday", "last monday", "3 days ago"
Available Tools
get_my_profile- Verify credentials and get user infolist_active_projects- Get assigned projects with tasksget_time_entries- Retrieve time entries with flexible filteringlog_time- Create new time entriesdelete_time_entry- Remove time entries
Installation
- Clone the repository
- Run
npm install - Run
npm run build - Configure in your MCP client (see README for details)
Requirements
- Node.js v16 or higher
- Harvest account with API access
- Personal Access Token and Account ID
See the README for full documentation and usage examples.