productivity
Harvest MCP Integration for Codex
Connect Harvest to Codex through the local KosmoKrator MCP gateway with scoped tools, credentials, and write policy.
Connect Harvest to Codex
Use KosmoKrator as a local MCP proxy for Codex so coding sessions can reach selected integrations with explicit write policy.
Register kosmo mcp:serve as a local stdio server and choose the integration allowlist. The gateway is local, scoped to this integration, and starts with
--write=deny so Codex can inspect read-capable tools without receiving write access by default.
Harvest MCP Config for Codex
Keep write access denied or ask-based unless the workspace is trusted.
{
"mcpServers": {
"kosmokrator-harvest": {
"type": "stdio",
"command": "kosmo",
"args": [
"mcp:serve",
"--integration=harvest",
"--write=deny"
]
}
}
} Run the Gateway Manually
kosmokrator mcp:serve --integration=harvest --write=deny Why Use KosmoKrator Here
Expose only Harvest instead of a broad multi-service tool list.
Reuse credentials already configured for the KosmoKrator CLI and Lua runtime.
Start read-only, then opt into ask or allow for trusted workspaces.
Harvest Tools Visible to Codex
Codex sees stable MCP tool names generated from the Harvest integration catalog.
| MCP tool | Source function | Type | Description |
|---|---|---|---|
integration__harvest__harvest_list_time_entries | harvest.harvest_list_time_entries | Read | List Harvest time entries with optional filters for user, client, project, and date range. |
integration__harvest__harvest_create_time_entry | harvest.harvest_create_time_entry | Write | Create a new Harvest time entry for a project and task. |
integration__harvest__harvest_get_time_entry | harvest.harvest_get_time_entry | Read | Get a single Harvest time entry by its ID. |
integration__harvest__harvest_update_time_entry | harvest.harvest_update_time_entry | Write | Update an existing Harvest time entry (hours, notes, or spent_date). |
integration__harvest__harvest_delete_time_entry | harvest.harvest_delete_time_entry | Write | Delete a Harvest time entry by its ID. |
integration__harvest__harvest_list_projects | harvest.harvest_list_projects | Read | List Harvest projects with optional filters for client and active status. |
integration__harvest__harvest_get_project | harvest.harvest_get_project | Read | Get a single Harvest project by its ID. |
integration__harvest__harvest_list_clients | harvest.harvest_list_clients | Read | List Harvest clients with optional active status filter. |
integration__harvest__harvest_list_tasks | harvest.harvest_list_tasks | Read | List Harvest tasks with optional active status filter. |
integration__harvest__harvest_list_users | harvest.harvest_list_users | Read | List Harvest users with optional active status filter. |
integration__harvest__harvest_get_user | harvest.harvest_get_user | Read | Get a single Harvest user by their ID. |
integration__harvest__harvest_get_current_user | harvest.harvest_get_current_user | Read | Get the currently authenticated Harvest user profile. |