Metadata-Version: 2.4
Name: harvest-mcp
Version: 0.1.0
Summary: Harvest MCP Server for managing Harvest via the Model Context Protocol
Author-email: Barie <support@barie.ai>
License: MIT
Keywords: harvest,mcp,model-context-protocol,project-management,time-tracking
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Requires-Dist: httpx>=0.28.1
Requires-Dist: mcp>=1.4.1
Description-Content-Type: text/markdown

# Harvest MCP Server

A Model Context Protocol (MCP) server for interacting with Harvest time tracking and project management APIs.

## Installation

After publishing to PyPI, run the installed CLI with `uvx` (same pattern as other Barie MCP servers):

```bash
uvx harvest-mcp-server --help
```

For a **local wheel** (absolute path to the built `.whl`):

```bash
uvx --from /absolute/path/to/harvest_mcp-0.1.0-py3-none-any.whl harvest-mcp-server --help
```

Editable install for development:

```bash
pip install -e .
```

## Usage

**Recommended (stdio MCP):** use `uvx` so `--from` applies to the tool environment, not to the `python` interpreter.

```bash
uvx harvest-mcp-server \
  --account-id "<harvest_account_id>" \
  --api-key "<harvest_api_key>" \
  --read-only "false"
```

If the package is installed in the current environment (`pip install -e .` or `pip install .`):

```bash
python -m harvest_mcp_server \
  --account-id "<harvest_account_id>" \
  --api-key "<harvest_api_key>" \
  --read-only "false"
```

### Required arguments

- `--account-id`: Harvest account ID
- `--api-key`: Harvest API key

### Optional arguments

- `--read-only`: Enable read-only mode (`true`/`false`), default `false`

## Features

- Users (list, detail)
- Time entries (list, create, start/stop timers, details, unsubmitted)
- Projects, clients, and tasks lookup
- Estimates lifecycle (list/detail/lookup/create/update/state-change/send/delete)
- Optional read-only mode for safe operation

## MCP Configuration Example

**Using `uvx` and a local wheel** (note: `harvest-mcp-server` after `--from` is the console script name, not a `python` argument):

```json
{
  "mcpServers": {
    "harvest": {
      "command": "uvx",
      "args": [
        "--from",
        "/absolute/path/to/harvest_mcp-0.1.0-py3-none-any.whl",
        "harvest-mcp-server",
        "--account-id",
        "YOUR_HARVEST_ACCOUNT_ID",
        "--api-key",
        "YOUR_HARVEST_API_KEY",
        "--read-only",
        "true"
      ]
    }
  }
}
```

**Using `python -m`** when the package is installed in the interpreter you launch:

```json
{
  "mcpServers": {
    "harvest": {
      "command": "python",
      "args": [
        "-m",
        "harvest_mcp_server",
        "--account-id",
        "YOUR_HARVEST_ACCOUNT_ID",
        "--api-key",
        "YOUR_HARVEST_API_KEY",
        "--read-only",
        "true"
      ]
    }
  }
}
```

## Development

From the `harvest-mcp-server` directory:

```bash
pip install -e .
harvest-mcp-server --help
```

Build a wheel:

```bash
python -m build
```
