m2avc/harvest-mcp
v0.3.0MIT
Harvest official remote MCP plus one REST stdio server for invoice update/messages/payments and user/assignment billable rates. Never commit tokens.
Changelog
All notable changes to this Marketplace plugin are documented here.
The format follows Keep a Changelog.
Version fields that must stay equal: root package.json, plugin.json, and
servers/harvest-rest/package.json. Default Harvest User-Agent is
m2avc-harvest-mcp/<semver> (mn@m2avc.com) from the root package.json semver.
Do not put tokens, Account IDs, person names, or exact live rates in this file.
[0.3.0] - 2026-09-09
Marketplace republish prep. harvest-rest remains the plugin’s single REST
stdio entrypoint. Official remote MCP is unchanged (35 tools at
https://api.harvestapp.com/mcp).
harvest-rest tools
- Invoice update/delete, messages (including preview), and payments
list_contactshelper to resolve invoice email recipients- User billable rates (list/get/create) and project assignment hourly-rate PATCH
- User cost rates (list/get/create) and invoice item categories (list/get/create)
- Read-only estimates (
list_estimates,get_estimate)
Marketplace security gate
DANGEROUS_SENDdefault unset/off; email,event_type=send, and payment thank-you stay Mike-GO only- Default User-Agent
m2avc-harvest-mcp/0.3.0 (mn@m2avc.com)from rootpackage.json;HARVEST_USER_AGENTstill overrides - CI: typecheck, unit tests with send paths disabled, public-safe scan
- CoS runbook: throwaway-draft smoke, PAT vs OAuth least privilege, no secrets
in committed
mcp.json
Harden follow-ups
- MCP cancellation / AbortSignal wiring on Harvest HTTP waits
- Shared ISO date schemas for rate and payment dates
- Administrator-only docs for cost-rate tools
- Finite, positive payment amounts
- Equal
start_dateon cost-rate create requiresconfirm_replacement
CoS pre-publish smoke
- Expanded live smoke matrix in
servers/harvest-rest/COS-RUNBOOK.mdandVERIFY.mdcovering all 22REST_TOOL_NAMES(Required live / Optional live / Unit-only gated) - Automated
e2e-liveremains a subset; it does not replace the matrix