@timesheetai/mcp 0.1.0-alpha.6 → 0.1.0-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -49
- package/dist/client.d.ts +2 -1
- package/dist/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/config.js +3 -1
- package/dist/config.js.map +1 -1
- package/dist/server.js +22 -13
- package/dist/server.js.map +1 -1
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -1,16 +1,10 @@
|
|
|
1
1
|
# @timesheetai/mcp
|
|
2
2
|
|
|
3
|
-
> **Alpha:** TimesheetAI is currently in early access at
|
|
4
|
-
> [alpha.timesheetai.app](https://alpha.timesheetai.app). Sign up there to get
|
|
5
|
-
> an account, then create an API key from **Account Portal → API Keys**.
|
|
3
|
+
> **Alpha:** TimesheetAI is currently in early access at [alpha.timesheetai.app](https://alpha.timesheetai.app). Sign up there to get an account, then create an API key from **Account Portal → API Keys**.
|
|
6
4
|
|
|
7
|
-
A [Model Context Protocol](https://modelcontextprotocol.io) server for
|
|
8
|
-
**TimesheetAI** — a timesheet app built for developers. It lets AI agents
|
|
9
|
-
(Codex, Claude Code, Claude Desktop, Cursor, …) read your projects and log time
|
|
10
|
-
on your behalf, without leaving your editor.
|
|
5
|
+
A [Model Context Protocol](https://modelcontextprotocol.io) server for **TimesheetAI** — a timesheet app built for developers. It lets AI agents (Codex, Claude Code, Claude Desktop, Cursor, …) read your projects and log time on your behalf, without leaving your editor.
|
|
11
6
|
|
|
12
|
-
Motivating workflow: at the end of the day, ask your agent to summarize what it
|
|
13
|
-
worked on and have it call `create_time_entry` to record the time directly.
|
|
7
|
+
Motivating workflow: at the end of the day, ask your agent to summarize what it worked on and have it call `create_time_entry` to record the time directly.
|
|
14
8
|
|
|
15
9
|

|
|
16
10
|
|
|
@@ -18,45 +12,44 @@ worked on and have it call `create_time_entry` to record the time directly.
|
|
|
18
12
|
|
|
19
13
|
## Tools
|
|
20
14
|
|
|
21
|
-
| Tool
|
|
22
|
-
|
|
|
23
|
-
| `list_workspaces`
|
|
24
|
-
| `list_projects`
|
|
25
|
-
| `list_entries`
|
|
26
|
-
| `create_project`
|
|
27
|
-
| `create_task`
|
|
28
|
-
| `create_time_entry`
|
|
29
|
-
| `delete_time_entry`
|
|
15
|
+
| Tool | What it does |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| `list_workspaces` | List the workspaces your API key can access. |
|
|
18
|
+
| `list_projects` | List active projects and their active tasks (gives you `projectId`/`taskId`). Pass `search` to filter by approximate project name (handles typos/abbreviations). |
|
|
19
|
+
| `list_entries` | List your time entries for any date (defaults to today), or an inclusive date range up to 7 days by adding `endDate`. |
|
|
20
|
+
| `create_project` | Create a new project. Check `list_projects` first — never create a duplicate. |
|
|
21
|
+
| `create_task` | Create a new task under an existing project. Check `list_projects` first. |
|
|
22
|
+
| `create_time_entry` | Log one entry: `projectId`, optional `taskId`, `date`, `start`, `end`, `description`. |
|
|
23
|
+
| `delete_time_entry` | Delete one of your own entries by its numeric `id`. |
|
|
30
24
|
|
|
31
|
-
Times are **wall-clock** (`HH:mm`), dates are `YYYY-MM-DD`. "Today" defaults to
|
|
32
|
-
this machine's local date.
|
|
25
|
+
Times are **wall-clock** (`HH:mm`), dates are `YYYY-MM-DD`. "Today" defaults to this machine's local date.
|
|
33
26
|
|
|
34
|
-
`create_time_entry` is **idempotent** on an optional `clientRefId` (UUID). The
|
|
35
|
-
client generates one per call automatically; to make a retry of the *same*
|
|
36
|
-
logical add safe, pass the same `clientRefId` again — the backend returns the
|
|
37
|
-
existing entry instead of creating a duplicate.
|
|
27
|
+
`create_time_entry` is **idempotent** on an optional `clientRefId` (UUID). The client generates one per call automatically; to make a retry of the _same_ logical add safe, pass the same `clientRefId` again — the backend returns the existing entry instead of creating a duplicate.
|
|
38
28
|
|
|
39
|
-
`create_time_entry` also enforces an **overlap guard**: if the requested time span
|
|
40
|
-
overlaps an existing entry on the same date, the backend returns a `409 overlap`
|
|
41
|
-
error with a `conflicts` array listing the colliding entries. Exact-duplicate
|
|
42
|
-
retries (same `clientRefId`) bypass the overlap check and are idempotent.
|
|
29
|
+
`create_time_entry` also enforces an **overlap guard**: if the requested time span overlaps an existing entry on the same date, the backend returns a `409 overlap` error with a `conflicts` array listing the colliding entries. Exact-duplicate retries (same `clientRefId`) bypass the overlap check and are idempotent.
|
|
43
30
|
|
|
44
|
-
`delete_time_entry` requires the numeric `id` returned by `create_time_entry` or
|
|
45
|
-
|
|
31
|
+
`delete_time_entry` requires the numeric `id` returned by `create_time_entry` or `list_entries`. Entries in a locked (submitted/approved) week cannot be deleted.
|
|
32
|
+
|
|
33
|
+
`list_entries` fetches a single day by default (today when `date` is omitted). To pull a whole work week in one call, pass both `date` (start) and `endDate` (inclusive end), up to a 7-day span:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
list_entries({ date: "2026-08-24", endDate: "2026-08-28" })
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
A range longer than 7 days, or an `endDate` before `date`, is rejected with an `invalid_date_range` error.
|
|
46
40
|
|
|
47
41
|
## Configuration
|
|
48
42
|
|
|
49
43
|
The server needs two settings:
|
|
50
44
|
|
|
51
|
-
| Setting
|
|
52
|
-
|
|
|
53
|
-
| API key
|
|
54
|
-
| Backend base URL
|
|
45
|
+
| Setting | Env var | Default |
|
|
46
|
+
| ---------------- | ---------------------- | ------------------------------- |
|
|
47
|
+
| API key | `TIMESHEETAI_API_KEY` | _(required)_ |
|
|
48
|
+
| Backend base URL | `TIMESHEETAI_BASE_URL` | `https://alpha.timesheetai.app` |
|
|
55
49
|
|
|
56
50
|
Create an API key at [alpha.timesheetai.app](https://alpha.timesheetai.app) under **Account Portal → API Keys**.
|
|
57
51
|
|
|
58
|
-
Set them via your MCP host's `env` block (recommended), or in
|
|
59
|
-
`~/.config/timesheetai/config.json`:
|
|
52
|
+
Set them via your MCP host's `env` block (recommended), or in `~/.config/timesheetai/config.json`:
|
|
60
53
|
|
|
61
54
|
```json
|
|
62
55
|
{
|
|
@@ -69,10 +62,7 @@ Environment variables take precedence over the config file.
|
|
|
69
62
|
|
|
70
63
|
## Host setup
|
|
71
64
|
|
|
72
|
-
> **Alpha release:** the package is published under the `alpha` npm dist-tag while it
|
|
73
|
-
> targets the alpha backend, so install it as **`@timesheetai/mcp@alpha`** (a plain
|
|
74
|
-
> `@timesheetai/mcp` has no `latest` yet). The alpha endpoint is the built-in default,
|
|
75
|
-
> so `TIMESHEETAI_BASE_URL` is optional below.
|
|
65
|
+
> **Alpha release:** the package is published under the `alpha` npm dist-tag while it targets the alpha backend, so install it as **`@timesheetai/mcp@alpha`** (a plain `@timesheetai/mcp` has no `latest` yet). The alpha endpoint is the built-in default, so `TIMESHEETAI_BASE_URL` is optional below.
|
|
76
66
|
|
|
77
67
|
### Claude Desktop
|
|
78
68
|
|
|
@@ -86,10 +76,10 @@ Environment variables take precedence over the config file.
|
|
|
86
76
|
"args": ["-y", "@timesheetai/mcp@alpha"],
|
|
87
77
|
"env": {
|
|
88
78
|
"TIMESHEETAI_API_KEY": "ak_...",
|
|
89
|
-
"TIMESHEETAI_BASE_URL": "https://alpha.timesheetai.app"
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
79
|
+
"TIMESHEETAI_BASE_URL": "https://alpha.timesheetai.app",
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
},
|
|
93
83
|
}
|
|
94
84
|
```
|
|
95
85
|
|
|
@@ -124,9 +114,7 @@ TIMESHEETAI_API_KEY=ak_... \
|
|
|
124
114
|
|
|
125
115
|
## How it works
|
|
126
116
|
|
|
127
|
-
This package is a thin **stdio MCP server** that proxies tool calls to the
|
|
128
|
-
TimesheetAI backend over authenticated HTTP. No database credentials or secrets
|
|
129
|
-
are ever exposed to the agent.
|
|
117
|
+
This package is a thin **stdio MCP server** that proxies tool calls to the TimesheetAI backend over authenticated HTTP. No database credentials or secrets are ever exposed to the agent.
|
|
130
118
|
|
|
131
119
|
```
|
|
132
120
|
Agent (Claude, Codex, …)
|
|
@@ -146,5 +134,4 @@ TimesheetAI backend
|
|
|
146
134
|
4. `list_entries` → verify what was logged
|
|
147
135
|
5. `delete_time_entry` → correct a mistake
|
|
148
136
|
|
|
149
|
-
**Time format:** all times are wall-clock (`HH:mm`), dates `YYYY-MM-DD`.
|
|
150
|
-
The agent resolves "today" to an explicit date — the server never infers timezones.
|
|
137
|
+
**Time format:** all times are wall-clock (`HH:mm`), dates `YYYY-MM-DD`. The agent resolves "today" to an explicit date — the server never infers timezones.
|
package/dist/client.d.ts
CHANGED
|
@@ -77,12 +77,13 @@ export declare class TimesheetClient {
|
|
|
77
77
|
};
|
|
78
78
|
projects: Project[];
|
|
79
79
|
}>;
|
|
80
|
-
listEntries(date: string, workspace?: string): Promise<{
|
|
80
|
+
listEntries(date: string, endDate?: string, workspace?: string): Promise<{
|
|
81
81
|
workspace: {
|
|
82
82
|
id: string;
|
|
83
83
|
name: string;
|
|
84
84
|
};
|
|
85
85
|
date: string;
|
|
86
|
+
endDate?: string;
|
|
86
87
|
entries: TimeEntry[];
|
|
87
88
|
}>;
|
|
88
89
|
createProject(input: CreateProjectInput): Promise<{
|
package/dist/client.js
CHANGED
|
@@ -58,8 +58,8 @@ export class TimesheetClient {
|
|
|
58
58
|
listProjects(workspace, search) {
|
|
59
59
|
return this.request(`/api/mcp/v1/projects${queryString({ workspace, search })}`);
|
|
60
60
|
}
|
|
61
|
-
listEntries(date, workspace) {
|
|
62
|
-
return this.request(`/api/mcp/v1/entries${queryString({ date, workspace })}`);
|
|
61
|
+
listEntries(date, endDate, workspace) {
|
|
62
|
+
return this.request(`/api/mcp/v1/entries${queryString({ date, endDate, workspace })}`);
|
|
63
63
|
}
|
|
64
64
|
createProject(input) {
|
|
65
65
|
return this.request("/api/mcp/v1/projects", {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAIzC,MAAM,OAAO,QAAS,SAAQ,KAAK;IAEf;IACA;IAEA;IAJlB,YACkB,MAAc,EACd,IAAY,EAC5B,OAAe,EACC,OAAiB;QAEjC,KAAK,CAAC,OAAO,CAAC,CAAC;QALC,WAAM,GAAN,MAAM,CAAQ;QACd,SAAI,GAAJ,IAAI,CAAQ;QAEZ,YAAO,GAAP,OAAO,CAAU;QAGjC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAyDD,SAAS,WAAW,CAAC,MAA0C;IAC7D,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,CAC1C,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,EAAE,CACvC,CAAC;IACF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnC,MAAM,EAAE,GAAG,IAAI,eAAe,EAAE,CAAC;IACjC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM;QAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAW,CAAC,CAAC;IACpD,OAAO,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,OAAO,eAAe;IACG;IAA7B,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEvC,KAAK,CAAC,OAAO,CAAI,IAAY,EAAE,IAAkB;QACvD,IAAI,GAAa,CAAC;QAClB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,EAAE,EAAE;gBACjD,GAAG,IAAI;gBACP,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC7C,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC7D,GAAG,IAAI,EAAE,OAAO;iBACjB;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,QAAQ,CAChB,CAAC,EACD,eAAe,EACf,kCAAkC,IAAI,CAAC,MAAM,CAAC,OAAO,KAClD,KAAe,EAAE,OAAO,IAAI,KAC/B,EAAE,CACH,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAExC,CAAC;QAET,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,IAAI,EAAE,KAAK,CAAC;YACxB,MAAM,IAAI,QAAQ,CAChB,GAAG,CAAC,MAAM,EACV,GAAG,EAAE,IAAI,IAAI,OAAO,EACpB,GAAG,EAAE,OAAO,IAAI,4BAA4B,GAAG,CAAC,MAAM,EAAE,EACxD,GAAG,CACJ,CAAC;QACJ,CAAC;QACD,OAAO,IAAS,CAAC;IACnB,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAChD,CAAC;IAED,YAAY,CACV,SAAkB,EAClB,MAAe;QAEf,OAAO,IAAI,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -29,7 +29,9 @@ export function describeEndpoint(baseUrl) {
|
|
|
29
29
|
if (host === `alpha.${PRODUCTION_HOST}`) {
|
|
30
30
|
return { production: false, label: "ALPHA test endpoint" };
|
|
31
31
|
}
|
|
32
|
-
if (host === "localhost" ||
|
|
32
|
+
if (host === "localhost" ||
|
|
33
|
+
host.startsWith("localhost:") ||
|
|
34
|
+
host.startsWith("127.0.0.1")) {
|
|
33
35
|
return { production: false, label: "local dev endpoint" };
|
|
34
36
|
}
|
|
35
37
|
return { production: false, label: "non-production endpoint" };
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAEjD,kDAAkD;AAClD,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAI9C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,OAAO,eAAe,EAAE,EAAE,CAAC;QAClE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,eAAe,EAAE,EAAE,CAAC;QACxC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC7D,CAAC;IACD,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAOjC,iFAAiF;AACjF,MAAM,CAAC,MAAM,gBAAgB,GAAG,+BAA+B,CAAC;AAEhE;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,iBAAiB,CAAC;AAEjD,kDAAkD;AAClD,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAI9C,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;IACrD,CAAC;IACD,IAAI,IAAI,KAAK,eAAe,IAAI,IAAI,KAAK,OAAO,eAAe,EAAE,EAAE,CAAC;QAClE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IACnD,CAAC;IACD,IAAI,IAAI,KAAK,SAAS,eAAe,EAAE,EAAE,CAAC;QACxC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC;IAC7D,CAAC;IACD,IACE,IAAI,KAAK,WAAW;QACpB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAC5B,CAAC;QACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,yBAAyB,EAAE,CAAC;AACjE,CAAC;AAED,SAAS,cAAc;IACrB,OAAO,CACL,OAAO,CAAC,GAAG,CAAC,kBAAkB;QAC9B,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,CAAC,CACzD,CAAC;AACJ,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;QAClE,OAAO;YACL,MAAM,EAAE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;YACrE,OAAO,EAAE,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;SACzE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC,CAAC,mBAAmB;IAChC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAC;IAE9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC,MAAM,CAAC;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CACb,kFAAkF;YAChF,iCAAiC,cAAc,EAAE,GAAG,CACvD,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,oBAAoB;QAChC,IAAI,CAAC,OAAO;QACZ,gBAAgB,CACjB,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAEtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU;IACxB,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;IACrB,MAAM,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1B,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;AAC5B,CAAC"}
|
package/dist/server.js
CHANGED
|
@@ -21,7 +21,10 @@ function fail(err) {
|
|
|
21
21
|
}
|
|
22
22
|
return {
|
|
23
23
|
content: [
|
|
24
|
-
{
|
|
24
|
+
{
|
|
25
|
+
type: "text",
|
|
26
|
+
text: `Error: ${err?.message ?? String(err)}`,
|
|
27
|
+
},
|
|
25
28
|
],
|
|
26
29
|
isError: true,
|
|
27
30
|
};
|
|
@@ -38,7 +41,9 @@ export function createServer(config = loadConfig()) {
|
|
|
38
41
|
title: "Create project",
|
|
39
42
|
description: "Creates a new project. IMPORTANT: Always call list_projects first with the intended name as the search term. Only call this tool if no matching active project is found — never create a duplicate.",
|
|
40
43
|
inputSchema: {
|
|
41
|
-
name: z
|
|
44
|
+
name: z
|
|
45
|
+
.string()
|
|
46
|
+
.describe("Project name. Must be unique within the workspace."),
|
|
42
47
|
workspace: z.string().describe(WORKSPACE_DESC).optional(),
|
|
43
48
|
},
|
|
44
49
|
}, async ({ name, workspace }) => {
|
|
@@ -59,7 +64,9 @@ export function createServer(config = loadConfig()) {
|
|
|
59
64
|
.int()
|
|
60
65
|
.positive()
|
|
61
66
|
.describe("ID of the project to add the task to. Obtain from list_projects."),
|
|
62
|
-
name: z
|
|
67
|
+
name: z
|
|
68
|
+
.string()
|
|
69
|
+
.describe("Task name. Must be unique within the project."),
|
|
63
70
|
workspace: z.string().describe(WORKSPACE_DESC).optional(),
|
|
64
71
|
},
|
|
65
72
|
}, async ({ projectId, name, workspace }) => {
|
|
@@ -102,20 +109,25 @@ export function createServer(config = loadConfig()) {
|
|
|
102
109
|
}
|
|
103
110
|
});
|
|
104
111
|
server.registerTool("list_entries", {
|
|
105
|
-
title: "List
|
|
106
|
-
description: "List your own time entries for
|
|
112
|
+
title: "List time entries",
|
|
113
|
+
description: "List your own time entries for a date or an inclusive date range (max 7 days). Defaults to today (this machine's local date) when no date is given. Provide both date (start) and endDate to fetch a range such as a work week in one call.",
|
|
107
114
|
inputSchema: {
|
|
108
115
|
date: z
|
|
109
116
|
.string()
|
|
110
117
|
.regex(/^\d{4}-\d{2}-\d{2}$/)
|
|
111
|
-
.describe("
|
|
118
|
+
.describe("Start day to list, YYYY-MM-DD. Defaults to today. Range start when endDate is given.")
|
|
119
|
+
.optional(),
|
|
120
|
+
endDate: z
|
|
121
|
+
.string()
|
|
122
|
+
.regex(/^\d{4}-\d{2}-\d{2}$/)
|
|
123
|
+
.describe("Optional inclusive end day, YYYY-MM-DD. Must be on or after date and within 6 days of it (max 7-day span). Omit to list a single day.")
|
|
112
124
|
.optional(),
|
|
113
125
|
workspace: z.string().describe(WORKSPACE_DESC).optional(),
|
|
114
126
|
},
|
|
115
|
-
}, async ({ date, workspace }) => {
|
|
127
|
+
}, async ({ date, endDate, workspace }) => {
|
|
116
128
|
try {
|
|
117
129
|
const day = date ?? localToday();
|
|
118
|
-
return ok(await client.listEntries(day, workspace));
|
|
130
|
+
return ok(await client.listEntries(day, endDate, workspace));
|
|
119
131
|
}
|
|
120
132
|
catch (err) {
|
|
121
133
|
return fail(err);
|
|
@@ -149,10 +161,7 @@ export function createServer(config = loadConfig()) {
|
|
|
149
161
|
.string()
|
|
150
162
|
.regex(/^([01]\d|2[0-3]):[0-5]\d$/)
|
|
151
163
|
.describe(`End ${TIME_DESC} Must be after start.`),
|
|
152
|
-
description: z
|
|
153
|
-
.string()
|
|
154
|
-
.describe("What was worked on.")
|
|
155
|
-
.optional(),
|
|
164
|
+
description: z.string().describe("What was worked on.").optional(),
|
|
156
165
|
isBillable: z
|
|
157
166
|
.boolean()
|
|
158
167
|
.describe("Override billable flag. Defaults to the task/project default.")
|
|
@@ -164,7 +173,7 @@ export function createServer(config = loadConfig()) {
|
|
|
164
173
|
.describe("Idempotency key (UUID). Reuse the SAME value when retrying the same logical add so it is not duplicated. Omit to auto-generate (no retry protection).")
|
|
165
174
|
.optional(),
|
|
166
175
|
},
|
|
167
|
-
}, async ({ projectId, taskId, date, start, end, description, isBillable, workspace, clientRefId }) => {
|
|
176
|
+
}, async ({ projectId, taskId, date, start, end, description, isBillable, workspace, clientRefId, }) => {
|
|
168
177
|
try {
|
|
169
178
|
const result = await client.createTimeEntry({
|
|
170
179
|
projectId,
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,UAAU,EAAE,UAAU,EAAe,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAOxD,SAAS,EAAE,CAAC,IAAa,EAAE,OAAgB;IACzC,MAAM,IAAI,GAAG,OAAO;QAClB,CAAC,CAAC,GAAG,OAAO,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAClD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAClC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAC/C,CAAC;AAED,SAAS,IAAI,CAAC,GAAY;IACxB,IAAI,GAAG,YAAY,QAAQ,EAAE,CAAC;QAC5B,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;YACxE,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,OAAO;QACL,OAAO,EAAE;YACP,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@timesheetai/mcp",
|
|
3
|
-
"version": "0.1.0-alpha.
|
|
3
|
+
"version": "0.1.0-alpha.7",
|
|
4
4
|
"description": "MCP server for TimesheetAI (alpha) — connect AI agents (Claude, Codex, Cursor) to your timesheet. Sign up at alpha.timesheetai.app.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"comment:dist-tag": "Published under the `alpha` npm dist-tag while DEFAULT_BASE_URL points at alpha. Install with `@timesheetai/mcp@alpha`. At production launch: flip DEFAULT_BASE_URL to production, bump to a stable version, and publish to `latest`.",
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"node": ">=20"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
25
|
-
"zod": "^4.3
|
|
24
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
25
|
+
"zod": "^4.4.3"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/node": "^22.10.0",
|