Skip to main content

MCP server for Productive.io time tracking

Project description

productive-time-mcp

MCP (Model Context Protocol) server for Productive.io time tracking operations.

This is a companion MCP to berwickgeek/productive-mcp that adds time tracking capabilities not included in the original.

Features

  • Time Entry Management: Create, read, update, and delete time entries
  • Time Reports: Get hours summaries (worked, client, internal, holidays)
  • Employee Hours: Search employees by name and get their workload
  • Billing Cutoff Logic: Configurable automatic period selection for invoice workflows

Installation

Using uvx (recommended)

uvx --from git+https://github.com/adamchrabaszcz/productive-time-mcp productive-time-mcp

Using pip

pip install git+https://github.com/adamchrabaszcz/productive-time-mcp

Configuration

Environment Variables

Variable Required Description
PRODUCTIVE_API_TOKEN Yes Your Productive.io API token
PRODUCTIVE_ORG_ID Yes Your organization ID
PRODUCTIVE_USER_ID No Your person ID (enables "me" references)
PRODUCTIVE_BILLING_CUTOFF_DAY No Day of month when billing period switches (default: 10)

Billing Cutoff Day

The PRODUCTIVE_BILLING_CUTOFF_DAY controls automatic period selection for invoice processing:

  • Before cutoff day: Defaults to previous month (still processing invoices)
  • From cutoff day onwards: Defaults to current month

Example with PRODUCTIVE_BILLING_CUTOFF_DAY=10:

Feb 28 → February (after cutoff, in Feb's billing window)
Mar 1-9 → February (before cutoff, still in Feb's billing window)
Mar 10+ → March (new billing period)

This is useful when processing invoices that arrive at month boundaries.

Getting Your IDs

Organization ID:

  • Go to Productive.io Settings
  • The org ID is visible in API requests or can be found via the API

Person ID:

curl -H "X-Auth-Token: YOUR_TOKEN" \
     -H "X-Organization-Id: YOUR_ORG_ID" \
     "https://api.productive.io/api/v2/people?filter[email]=your.email@company.com"

API Token:

  1. Go to Productive > Settings > API Integrations
  2. Create a new token or use existing

Usage with Claude Code

Add to your .mcp.json:

{
  "mcpServers": {
    "productive-time": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/adamchrabaszcz/productive-time-mcp", "productive-time-mcp"],
      "env": {
        "PRODUCTIVE_API_TOKEN": "${PRODUCTIVE_API_TOKEN}",
        "PRODUCTIVE_ORG_ID": "${PRODUCTIVE_ORG_ID}",
        "PRODUCTIVE_USER_ID": "${PRODUCTIVE_USER_ID}"
      }
    }
  }
}

Available Tools

Read Operations

Tool Description
get_person Find a person by name or email
get_time_reports Get hours summary for a period
get_time_entries List time entries for a period
get_time_entry Get single time entry with details
get_my_hours Get current user's hours summary
get_employee_hours Get any employee's hours by name

Write Operations

Tool Description
create_time_entry Log time to a service/task
update_time_entry Modify existing time entry
delete_time_entry Remove a time entry

Examples

Get My Hours This Month

"Show my hours for this month"

Check Employee Hours

"How many hours did John Doe work this month?"
"Get Maria's worklog for January 2024"

Log Time

"Log 2 hours on API integration today"

Development

# Clone and install
git clone https://github.com/adamchrabaszcz/productive-time-mcp
cd productive-time-mcp
pip install -e ".[dev]"

# Run tests
pytest

# Run locally
export PRODUCTIVE_API_TOKEN="your-token"
export PRODUCTIVE_ORG_ID="your-org-id"
python -m productive_time_mcp

License

MIT License - see LICENSE for details.

Related Projects

Project details


Download files

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

Source Distribution

productive_time_mcp-0.1.0.tar.gz (71.3 kB view details)

Uploaded Source

Built Distribution

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

productive_time_mcp-0.1.0-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file productive_time_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: productive_time_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 71.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for productive_time_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 191418522e9315ee9100ffddeee166aebb0daeffda5c1610e2e066c2fdae272d
MD5 d84008c7db1a2e574c4d29e1a96cbdf2
BLAKE2b-256 1eb1a2b45b3cb71e34be55539aba077d62bf671e226946f7491bc1b55feee783

See more details on using hashes here.

File details

Details for the file productive_time_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: productive_time_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for productive_time_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 644fd89491d4abab157269ed745092fa3df327ceb1de853ebe31169dbe227f76
MD5 8cb937cab60955eacfb8842cd1e17bdf
BLAKE2b-256 03d300495bbedb84bf1650262c8dceb79d50a3995f7a375824f24fb97d01d079

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page