@timesheetai/mcp 0.1.0-alpha.4 → 0.1.0-alpha.6
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 +17 -14
- package/dist/client.d.ts +32 -2
- package/dist/client.js +13 -1
- package/dist/client.js.map +1 -1
- package/dist/server.js +41 -4
- package/dist/server.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ A [Model Context Protocol](https://modelcontextprotocol.io) server for
|
|
|
10
10
|
on your behalf, without leaving your editor.
|
|
11
11
|
|
|
12
12
|
Motivating workflow: at the end of the day, ask your agent to summarize what it
|
|
13
|
-
worked on and have it call `
|
|
13
|
+
worked on and have it call `create_time_entry` to record the time directly.
|
|
14
14
|
|
|
15
15
|

|
|
16
16
|
|
|
@@ -18,28 +18,30 @@ worked on and have it call `add_time_entry` to record the time directly.
|
|
|
18
18
|
|
|
19
19
|
## Tools
|
|
20
20
|
|
|
21
|
-
| Tool
|
|
22
|
-
|
|
|
23
|
-
| `list_workspaces`
|
|
24
|
-
| `list_projects`
|
|
25
|
-
| `list_entries`
|
|
26
|
-
| `
|
|
27
|
-
| `
|
|
21
|
+
| Tool | What it does |
|
|
22
|
+
| --------------------- | ------------------------------------------------------------------------- |
|
|
23
|
+
| `list_workspaces` | List the workspaces your API key can access. |
|
|
24
|
+
| `list_projects` | List active projects and their active tasks (gives you `projectId`/`taskId`). Pass `search` to filter by approximate project name (handles typos/abbreviations). |
|
|
25
|
+
| `list_entries` | List your time entries for any date (defaults to today). |
|
|
26
|
+
| `create_project` | Create a new project. Check `list_projects` first — never create a duplicate. |
|
|
27
|
+
| `create_task` | Create a new task under an existing project. Check `list_projects` first. |
|
|
28
|
+
| `create_time_entry` | Log one entry: `projectId`, optional `taskId`, `date`, `start`, `end`, `description`. |
|
|
29
|
+
| `delete_time_entry` | Delete one of your own entries by its numeric `id`. |
|
|
28
30
|
|
|
29
31
|
Times are **wall-clock** (`HH:mm`), dates are `YYYY-MM-DD`. "Today" defaults to
|
|
30
32
|
this machine's local date.
|
|
31
33
|
|
|
32
|
-
`
|
|
34
|
+
`create_time_entry` is **idempotent** on an optional `clientRefId` (UUID). The
|
|
33
35
|
client generates one per call automatically; to make a retry of the *same*
|
|
34
36
|
logical add safe, pass the same `clientRefId` again — the backend returns the
|
|
35
37
|
existing entry instead of creating a duplicate.
|
|
36
38
|
|
|
37
|
-
`
|
|
39
|
+
`create_time_entry` also enforces an **overlap guard**: if the requested time span
|
|
38
40
|
overlaps an existing entry on the same date, the backend returns a `409 overlap`
|
|
39
41
|
error with a `conflicts` array listing the colliding entries. Exact-duplicate
|
|
40
42
|
retries (same `clientRefId`) bypass the overlap check and are idempotent.
|
|
41
43
|
|
|
42
|
-
`delete_time_entry` requires the numeric `id` returned by `
|
|
44
|
+
`delete_time_entry` requires the numeric `id` returned by `create_time_entry` or
|
|
43
45
|
`list_entries`. Entries in a locked (submitted/approved) week cannot be deleted.
|
|
44
46
|
|
|
45
47
|
## Configuration
|
|
@@ -139,9 +141,10 @@ TimesheetAI backend
|
|
|
139
141
|
**Typical agent flow:**
|
|
140
142
|
|
|
141
143
|
1. `list_projects` (optionally with `search`) → get `projectId` and `taskId`
|
|
142
|
-
2. `
|
|
143
|
-
3. `
|
|
144
|
-
4. `
|
|
144
|
+
2. If not found: `create_project` then `create_task` to set them up first
|
|
145
|
+
3. `create_time_entry` → log the entry (idempotent on `clientRefId`)
|
|
146
|
+
4. `list_entries` → verify what was logged
|
|
147
|
+
5. `delete_time_entry` → correct a mistake
|
|
145
148
|
|
|
146
149
|
**Time format:** all times are wall-clock (`HH:mm`), dates `YYYY-MM-DD`.
|
|
147
150
|
The agent resolves "today" to an explicit date — the server never infers timezones.
|
package/dist/client.d.ts
CHANGED
|
@@ -42,7 +42,16 @@ export type TimeEntry = {
|
|
|
42
42
|
isBillable: boolean;
|
|
43
43
|
description: string;
|
|
44
44
|
};
|
|
45
|
-
export type
|
|
45
|
+
export type CreateProjectInput = {
|
|
46
|
+
name: string;
|
|
47
|
+
workspace?: string;
|
|
48
|
+
};
|
|
49
|
+
export type CreateTaskInput = {
|
|
50
|
+
projectId: number;
|
|
51
|
+
name: string;
|
|
52
|
+
workspace?: string;
|
|
53
|
+
};
|
|
54
|
+
export type CreateTimeEntryInput = {
|
|
46
55
|
projectId: number;
|
|
47
56
|
taskId?: number;
|
|
48
57
|
date: string;
|
|
@@ -76,7 +85,28 @@ export declare class TimesheetClient {
|
|
|
76
85
|
date: string;
|
|
77
86
|
entries: TimeEntry[];
|
|
78
87
|
}>;
|
|
79
|
-
|
|
88
|
+
createProject(input: CreateProjectInput): Promise<{
|
|
89
|
+
workspace: {
|
|
90
|
+
id: string;
|
|
91
|
+
name: string;
|
|
92
|
+
};
|
|
93
|
+
project: {
|
|
94
|
+
id: number;
|
|
95
|
+
name: string;
|
|
96
|
+
};
|
|
97
|
+
}>;
|
|
98
|
+
createTask(input: CreateTaskInput): Promise<{
|
|
99
|
+
workspace: {
|
|
100
|
+
id: string;
|
|
101
|
+
name: string;
|
|
102
|
+
};
|
|
103
|
+
task: {
|
|
104
|
+
id: number;
|
|
105
|
+
name: string;
|
|
106
|
+
projectId: number;
|
|
107
|
+
};
|
|
108
|
+
}>;
|
|
109
|
+
createTimeEntry(input: CreateTimeEntryInput): Promise<{
|
|
80
110
|
workspace: {
|
|
81
111
|
id: string;
|
|
82
112
|
name: string;
|
package/dist/client.js
CHANGED
|
@@ -61,7 +61,19 @@ export class TimesheetClient {
|
|
|
61
61
|
listEntries(date, workspace) {
|
|
62
62
|
return this.request(`/api/mcp/v1/entries${queryString({ date, workspace })}`);
|
|
63
63
|
}
|
|
64
|
-
|
|
64
|
+
createProject(input) {
|
|
65
|
+
return this.request("/api/mcp/v1/projects", {
|
|
66
|
+
method: "POST",
|
|
67
|
+
body: JSON.stringify(input),
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
createTask(input) {
|
|
71
|
+
return this.request("/api/mcp/v1/tasks", {
|
|
72
|
+
method: "POST",
|
|
73
|
+
body: JSON.stringify(input),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
createTimeEntry(input) {
|
|
65
77
|
// Stable idempotency key per logical add: reuse a caller-supplied id, else
|
|
66
78
|
// generate one here (before the request) so a transport-level retry of THIS
|
|
67
79
|
// body hits the backend's idempotency path instead of duplicating.
|
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;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -34,6 +34,43 @@ export function createServer(config = loadConfig()) {
|
|
|
34
34
|
name: "timesheetai",
|
|
35
35
|
version: "0.1.0",
|
|
36
36
|
});
|
|
37
|
+
server.registerTool("create_project", {
|
|
38
|
+
title: "Create project",
|
|
39
|
+
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
|
+
inputSchema: {
|
|
41
|
+
name: z.string().describe("Project name. Must be unique within the workspace."),
|
|
42
|
+
workspace: z.string().describe(WORKSPACE_DESC).optional(),
|
|
43
|
+
},
|
|
44
|
+
}, async ({ name, workspace }) => {
|
|
45
|
+
try {
|
|
46
|
+
const result = await client.createProject({ name, workspace });
|
|
47
|
+
return ok(result, `Created project "${result.project.name}".`);
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
return fail(err);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
server.registerTool("create_task", {
|
|
54
|
+
title: "Create task",
|
|
55
|
+
description: "Creates a new task under an existing project. IMPORTANT: Always call list_projects first to check whether the task already exists under the target project. Only call this tool if the task is confirmed to not exist yet — never create a duplicate.",
|
|
56
|
+
inputSchema: {
|
|
57
|
+
projectId: z
|
|
58
|
+
.number()
|
|
59
|
+
.int()
|
|
60
|
+
.positive()
|
|
61
|
+
.describe("ID of the project to add the task to. Obtain from list_projects."),
|
|
62
|
+
name: z.string().describe("Task name. Must be unique within the project."),
|
|
63
|
+
workspace: z.string().describe(WORKSPACE_DESC).optional(),
|
|
64
|
+
},
|
|
65
|
+
}, async ({ projectId, name, workspace }) => {
|
|
66
|
+
try {
|
|
67
|
+
const result = await client.createTask({ projectId, name, workspace });
|
|
68
|
+
return ok(result, `Created task "${result.task.name}".`);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
return fail(err);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
37
74
|
server.registerTool("list_workspaces", {
|
|
38
75
|
title: "List workspaces",
|
|
39
76
|
description: "List the TimesheetAI workspaces your API key can access. Use when a tool reports that a workspace must be specified.",
|
|
@@ -48,7 +85,7 @@ export function createServer(config = loadConfig()) {
|
|
|
48
85
|
});
|
|
49
86
|
server.registerTool("list_projects", {
|
|
50
87
|
title: "List projects",
|
|
51
|
-
description: "List active projects and their active tasks. Call this first to get the projectId and taskId needed by
|
|
88
|
+
description: "List active projects and their active tasks. Call this first to get the projectId and taskId needed by create_time_entry. Pass search to filter by approximate name — matches project names first; if no project matches, falls back to task names across all projects.",
|
|
52
89
|
inputSchema: {
|
|
53
90
|
workspace: z.string().describe(WORKSPACE_DESC).optional(),
|
|
54
91
|
search: z
|
|
@@ -84,7 +121,7 @@ export function createServer(config = loadConfig()) {
|
|
|
84
121
|
return fail(err);
|
|
85
122
|
}
|
|
86
123
|
});
|
|
87
|
-
server.registerTool("
|
|
124
|
+
server.registerTool("create_time_entry", {
|
|
88
125
|
title: "Add a time entry",
|
|
89
126
|
description: "Log a single time entry. Resolve projectId/taskId via list_projects first. Time is wall-clock; the date defaults to today.",
|
|
90
127
|
inputSchema: {
|
|
@@ -129,7 +166,7 @@ export function createServer(config = loadConfig()) {
|
|
|
129
166
|
},
|
|
130
167
|
}, async ({ projectId, taskId, date, start, end, description, isBillable, workspace, clientRefId }) => {
|
|
131
168
|
try {
|
|
132
|
-
const result = await client.
|
|
169
|
+
const result = await client.createTimeEntry({
|
|
133
170
|
projectId,
|
|
134
171
|
taskId,
|
|
135
172
|
date: date ?? localToday(),
|
|
@@ -150,7 +187,7 @@ export function createServer(config = loadConfig()) {
|
|
|
150
187
|
});
|
|
151
188
|
server.registerTool("delete_time_entry", {
|
|
152
189
|
title: "Delete a time entry",
|
|
153
|
-
description: "Delete one of your own time entries by its numeric id. The id is returned by
|
|
190
|
+
description: "Delete one of your own time entries by its numeric id. The id is returned by create_time_entry and list_entries. Entries in a locked (submitted/approved) week cannot be deleted.",
|
|
154
191
|
inputSchema: {
|
|
155
192
|
entryId: z
|
|
156
193
|
.number()
|
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,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAW,GAAa,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,EAAE;SAC3E;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED,MAAM,SAAS,GAAG,8CAA8C,CAAC;AACjE,MAAM,cAAc,GAClB,iFAAiF,CAAC;AAEpF,MAAM,UAAU,YAAY,CAAC,SAAiB,UAAU,EAAE;IACxD,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,MAAM,CAAC,YAAY,CACjB,iBAAiB,EACjB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EACT,sHAAsH;QACxH,WAAW,EAAE,EAAE;KAChB,EACD,KAAK,IAAI,EAAE;QACT,IAAI,CAAC;YACH,OAAO,EAAE,CAAC,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;QACnB,CAAC;IACH,CAAC,CACF,CAAC;IAEF,MAAM,CAAC,YAAY,CACjB,eAAe,EACf;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EACT,
|
|
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.6",
|
|
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`.",
|