Skip to main content

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

Metadata

Release files for productive-time-mcp 0.2.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for productive-time-mcp 0.2.1
File Size Uploaded Provenance
productive_time_mcp-0.2.1.tar.gz 71.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for productive-time-mcp 0.2.1
File Interpreter ABI Platform
productive_time_mcp-0.2.1-py3-none-any.whl Python 3 none any Details

Total release size: 83.3 kB

Release files / productive_time_mcp-0.2.1.tar.gz

Download URL productive_time_mcp-0.2.1.tar.gz
Size 71.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6e9bbd12f7eff6f5b8c7186a94d5ef5b8cbb0e8a645f9ebac4cb5a9f6e1ff56c
BLAKE2b-256 checksum
How to use checksums
67409ad04b516967e1a6766275686ea95fa98f46e71edbd15552e205421f8d8c
Upload date
Uploaded using Trusted Publishing?
What is 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}

Release files / productive_time_mcp-0.2.1-py3-none-any.whl

Download URL productive_time_mcp-0.2.1-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5af857b069a85999e44803b3faab53489702a1de93b9bf5aadeace3628e3521d
BLAKE2b-256 checksum
How to use checksums
e9f72a8d3417c53f185fc8150ee6e6731c01791c524099da3aec138f8910a76f
Upload date
Uploaded using Trusted Publishing?
What is 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}

Security for productive-time-mcp 0.2.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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