ehour-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| EHOUR_URL | Yes | Your eHour timesheet page (required). Can also be set as `url` in ehour.config.json. | |
| EHOUR_HOST | No | Host used to find the eHour tab. Default taken from `url`. | |
| EHOUR_CONFIG | No | Path to a different config file. | |
| EHOUR_CDP_PORT | No | Chrome remote-debugging port. | 9237 |
| EHOUR_GIT_REPO | No | Repository `draft_month` reads by default. | |
| EHOUR_CDP_BROWSER | No | Browser binary. Default: Google Chrome on macOS. | |
| EHOUR_CDP_PROFILE | No | Chrome profile folder. | ~/.ehour-cdp-profile |
| EHOUR_PROJECT_CODE | Yes | The project code shown on your timesheet row (required). Can also be set as `projectCode` in ehour.config.json. | |
| EHOUR_TICKET_PREFIXES | No | Ticket keys to recognise in commit subjects as a comma list, e.g. PROJ,OPS. Default: any UPPERCASE-123 key. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| check_loginA | Check whether the dedicated eHour Chrome is running and logged in. Returns { loggedIn, currentUrl, message }. Call this before apply_month/patch_day; if loggedIn is false, tell the user to sign in to the dedicated Chrome window. |
| draft_monthA | Draft a timesheet from git commit messages (read-only, touches no eHour page). One entry per weekday in the range, 8h each: "[8] TICKET: Title" then " - bullet" lines from the commit subjects, ASCII-only. Weekend commits move to the nearest empty weekday. Writes the entries JSON to |
| apply_monthA | Fill and SAVE eHour timesheet entries for the configured project, one working day per entry. Groups entries by week, navigates each week, fills hours + the day comment, and saves per week (persisted as it goes), then reads the range back and compares it. Pass entriesFile (the draft_month file) instead of inline entries. Returns { weeks: [{ weekOf, savedDates, warnings, error?, filledButUnsaved? }], stoppedAt?, verification: { ok, checked, mismatches, unexpected } }. If a week fails, earlier weeks stay saved and stoppedAt names the failed week. Review the entries with the user BEFORE calling this — it commits to the timesheet. |
| verify_entriesA | Compare an entries file with what eHour holds for its date range (read-only). Returns { ok, checked, mismatches: [{ date, field, expected?, actual? }], unexpected: [dates saved but not in the file] }. |
| patch_dayA | Correct a single already-saved day for the configured project: navigate to its week, update hours and/or comment, save. Does NOT touch any other day. Returns { date, saved, error?, before, after }. Provide at least one of hours/comment. |
| read_timesheetA | Read back the currently-saved project hours + comments for a date range (inclusive). Read-only. Returns { days: [{ date, hours, comment }] } for days that have any hours or comment. Use to show the live state before/after a patch. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool has a clearly distinct role in a single linear workflow: check_login (session state), draft_month (offline generation from git), apply_month (bulk write), verify_entries (file vs. server diff), patch_day (single-day correction), read_timesheet (live read). The only near-neighbor pair, verify_entries and read_timesheet, is separated by description (file comparison vs. raw live state).
All six tools follow a strict verb_noun snake_case pattern (check_login, draft_month, apply_month, verify_entries, patch_day, read_timesheet) with no stylistic deviations. The verb choices (draft/apply/verify/patch/read/check) meaningfully encode the read-only vs. write vs. check semantics.
Six tools is well-scoped for a focused timesheet-automation server; each tool maps to a necessary stage (preflight, draft, commit, verify, correct, inspect) with no filler. Nothing appears redundant or missing at the structural level.
The draft → apply → verify → patch → read lifecycle is covered end to end, but there is no explicit way to delete or clear an already-saved day (patch_day only updates hours/comment), nor any tool to discover projects or tickets the server is configured for. These are workaroundable gaps rather than dead ends, since hours could presumably be zeroed via patch_day.