Skip to main content

harvest-forecast-mcp

An MCP server for the Harvest and Forecast APIs — let AI agents like Claude track time, list projects, and manage assignments and scheduling.

What it does

harvest-forecast-mcp exposes Harvest (time tracking) and Forecast (resource scheduling) operations as Model Context Protocol tools. Once configured, an AI agent can:

  • Track time — list, create, and delete time entries in Harvest
  • Browse projects — list projects, clients, tasks, and users
  • Manage scheduling — list and create Forecast assignments, milestones, and holidays

The server speaks stdio MCP, so it drops cleanly into Claude Desktop, Claude Code, or any MCP-compatible client.

Installation

# Run instantly without installing (recommended)
uvx harvest-forecast-mcp

# Or install with pip
pip install harvest-forecast-mcp

Configuration

The server reads credentials from environment variables. Harvest and Forecast use separate access tokens and account IDs, so you can configure one or both depending on which tools you need.

Variable Required Description
HARVEST_ACCESS_TOKEN Harvest tools Personal access token for the Harvest API
HARVEST_ACCOUNT_ID Harvest tools Harvest account ID (numeric)
FORECAST_ACCESS_TOKEN Forecast tools Personal access token for the Forecast API
FORECAST_ACCOUNT_ID Forecast tools Forecast account ID (numeric)
HARVEST_USER_AGENT Yes Identifying string for API requests (e.g. your-app (you@example.com))

Tip: Harvest requires a descriptive User-Agent header. Set HARVEST_USER_AGENT to your app name and contact email.

Claude Desktop configuration

Add the server to your claude_desktop_config.json:

{
  "mcpServers": {
    "harvest-forecast": {
      "command": "uvx",
      "args": ["harvest-forecast-mcp"],
      "env": {
        "HARVEST_ACCESS_TOKEN": "your-harvest-token",
        "HARVEST_ACCOUNT_ID": "123456",
        "FORECAST_ACCESS_TOKEN": "your-forecast-token",
        "FORECAST_ACCOUNT_ID": "123456",
        "HARVEST_USER_AGENT": "my-claude-agent (you@example.com)"
      }
    }
  }
}

Tools

The server exposes 28 tools across the Harvest and Forecast APIs, including cross-API combinations:

Harvest — time tracking & project management

Tool Description
list_harvest_projects List all projects with client info, optionally filtered by active status
list_harvest_users List all users, optionally filtered by active status
list_harvest_clients List all clients, optionally filtered by active status
list_harvest_tasks List all tasks available for time tracking
list_time_entries List time entries filtered by user, project, and date range (defaults to last 30 days)
create_time_entry Log hours against a project + task with optional notes
list_project_assignments List users assigned to a Harvest project with rates and budgets
harvest_whoami Get the current authenticated Harvest user's identity and permissions

Forecast — scheduling & staffing

Tool Description
list_forecast_projects List all Forecast projects (for scheduling)
list_forecast_people List all schedulable people with roles and teams
list_forecast_placeholders List all placeholders (role-based slots)
list_forecast_roles List all roles with their assigned people and placeholders
list_forecast_milestones List all milestones across all projects
get_forecast_project Get details for a single Forecast project by ID
get_forecast_person Get details for a single Forecast person by ID
list_assignments List scheduled assignments filtered by date range, project, or person
create_assignment Schedule a person on a project with allocation and dates
update_assignment Update an existing assignment
delete_assignment Delete an assignment
get_remaining_budgeted_hours Get remaining budgeted hours for all projects
get_future_scheduled_hours Get future scheduled hours from a date
get_future_scheduled_hours_for_project Same, filtered to a single project
get_assigned_people Get a mapping of project IDs to assigned person IDs
get_project_heatmap Scheduling load heatmap for a project
get_person_heatmap Scheduling load heatmap for a person
get_placeholder_heatmap Scheduling load heatmap for a placeholder
forecast_whoami Get current Forecast user identity and account IDs

Cross-API — manager insights

Tool Description
person_schedule A person's complete schedule: Forecast assignments + Harvest time entries for the period
project_overview Comprehensive project view: Harvest details + Forecast project + budget + recent time entries
team_utilization Scheduled hours (Forecast) vs logged hours (Harvest) per person, with utilization %
who_is_available Find people with capacity (not fully scheduled) in a date range
time_summary Summarize time entries grouped by project, user, or client
budget_status Budget burn-down: remaining budgeted hours vs logged hours last 30 days per project
all_projects_schedule Per-project scheduling overview: people, assignments, milestones for a date range

Development

# Install dependencies
uv sync --group dev

# Run tests
uv run pytest

# Type check
uv run pyright src/harvest_forecast_mcp

# Lint
uv run ruff check .

# Format
uv run ruff format .

See CONTRIBUTING.md for full development guidelines.

License

MIT

Disclaimer

This project is unofficial and not affiliated with, endorsed by, or sponsored by Harvest Inc. or its subsidiaries. "Harvest" and "Forecast" are trademarks of their respective owners. This software is provided "as-is", without any warranty express or implied.

MIT — Copyright (c) 2025 AZX, PBC.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

harvest_forecast_mcp-0.1.1.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

harvest_forecast_mcp-0.1.1-py3-none-any.whl (11.8 kB view details)

Uploaded Python 3

File details

Details for the file harvest_forecast_mcp-0.1.1.tar.gz.

File metadata

  • Download URL: harvest_forecast_mcp-0.1.1.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for harvest_forecast_mcp-0.1.1.tar.gz
Algorithm Hash digest
SHA256 9559f6b505912c1d86c0266b13d2f74c04cb2e509b35caf00058f97f37df6a7a
MD5 e9b032cb842928ae9243ade2930c9138
BLAKE2b-256 4706383917acd5f63e52b99a05551b1aef66ad71c7b5ee5a10a02a41d87984d4

See more details on using hashes here.

File details

Details for the file harvest_forecast_mcp-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for harvest_forecast_mcp-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a8e412042a98b623f4c007d41752b6f39c5ebae8ccc702a060fc361392799ff5
MD5 ee7a443086b32e372ca52bd146bd98f9
BLAKE2b-256 f6b2f34c7a8a65187f8cf33c9dc074f2fadd94a57374b96974f25b15d246bb66

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page