@davidwoods/skylight-mcp 1.7.0 → 1.8.0
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/LICENSE +22 -22
- package/README.md +633 -584
- package/THIRD_PARTY_NOTICES.md +38 -38
- package/dist/api/credential-store.d.ts.map +1 -1
- package/dist/api/credential-store.js +2 -1
- package/dist/api/credential-store.js.map +1 -1
- package/dist/api/endpoints/categories.d.ts +6 -6
- package/dist/api/endpoints/categories.d.ts.map +1 -1
- package/dist/api/endpoints/categories.js +6 -13
- package/dist/api/endpoints/categories.js.map +1 -1
- package/dist/api/endpoints/chores.d.ts +8 -0
- package/dist/api/endpoints/chores.d.ts.map +1 -1
- package/dist/api/endpoints/chores.js +9 -0
- package/dist/api/endpoints/chores.js.map +1 -1
- package/dist/api/endpoints/taskbox.d.ts +8 -0
- package/dist/api/endpoints/taskbox.d.ts.map +1 -1
- package/dist/api/endpoints/taskbox.js +17 -0
- package/dist/api/endpoints/taskbox.js.map +1 -1
- package/dist/api/types.d.ts +14 -0
- package/dist/api/types.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +9 -8
- package/dist/cli.js.map +1 -1
- package/dist/config.js +23 -23
- package/dist/doctor.d.ts +10 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +23 -7
- package/dist/doctor.js.map +1 -1
- package/dist/tools/calendar.d.ts +5 -0
- package/dist/tools/calendar.d.ts.map +1 -1
- package/dist/tools/calendar.js +107 -71
- package/dist/tools/calendar.js.map +1 -1
- package/dist/tools/chores.d.ts.map +1 -1
- package/dist/tools/chores.js +53 -81
- package/dist/tools/chores.js.map +1 -1
- package/dist/tools/family.js +17 -17
- package/dist/tools/lists.js +85 -85
- package/dist/tools/meals.js +102 -102
- package/dist/tools/messages.d.ts.map +1 -1
- package/dist/tools/messages.js +37 -49
- package/dist/tools/messages.js.map +1 -1
- package/dist/tools/misc.js +14 -14
- package/dist/tools/photos.js +6 -6
- package/dist/tools/planning.d.ts.map +1 -1
- package/dist/tools/planning.js +24 -23
- package/dist/tools/planning.js.map +1 -1
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +1 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/rewards.d.ts.map +1 -1
- package/dist/tools/rewards.js +74 -90
- package/dist/tools/rewards.js.map +1 -1
- package/dist/tools/tasks.d.ts.map +1 -1
- package/dist/tools/tasks.js +45 -10
- package/dist/tools/tasks.js.map +1 -1
- package/dist/utils/errors.js +16 -16
- package/package.json +78 -78
package/dist/tools/tasks.js
CHANGED
|
@@ -1,17 +1,52 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
-
import { createTaskBoxItem } from "../api/endpoints/taskbox.js";
|
|
2
|
+
import { createTaskBoxItem, listTaskBoxItems } from "../api/endpoints/taskbox.js";
|
|
3
3
|
import { formatErrorForMcp } from "../utils/errors.js";
|
|
4
4
|
export function registerTaskTools(server) {
|
|
5
|
+
// get_task_box tool
|
|
6
|
+
server.tool("get_task_box", `List the Skylight task box.
|
|
7
|
+
|
|
8
|
+
The task box is a library of reusable chore and routine templates (for example "Take out trash" or "Brush teeth"), not scheduled work. Items have no assignee and no date; scheduling one creates a chore, which get_chores and get_week_overview show.
|
|
9
|
+
|
|
10
|
+
Use this when the user asks what is in the task box, or before adding a task to avoid a duplicate.`, {}, async () => {
|
|
11
|
+
try {
|
|
12
|
+
const items = await listTaskBoxItems();
|
|
13
|
+
if (items.length === 0) {
|
|
14
|
+
return { content: [{ type: "text", text: "The task box is empty." }] };
|
|
15
|
+
}
|
|
16
|
+
const line = (item) => {
|
|
17
|
+
const a = item.attributes;
|
|
18
|
+
const extras = [];
|
|
19
|
+
if (a.reward_points)
|
|
20
|
+
extras.push(`${a.reward_points} points`);
|
|
21
|
+
const emoji = a.emoji_icon ? `${a.emoji_icon} ` : "";
|
|
22
|
+
return `- ${emoji}${a.summary}${extras.length ? ` (${extras.join(", ")})` : ""}`;
|
|
23
|
+
};
|
|
24
|
+
const chores = items.filter((i) => !i.attributes.routine);
|
|
25
|
+
const routines = items.filter((i) => i.attributes.routine);
|
|
26
|
+
const parts = [`Task box: ${items.length} items`];
|
|
27
|
+
if (chores.length)
|
|
28
|
+
parts.push("", "Chores:", ...chores.map(line));
|
|
29
|
+
if (routines.length)
|
|
30
|
+
parts.push("", "Routines:", ...routines.map(line));
|
|
31
|
+
return { content: [{ type: "text", text: parts.join("\n") }] };
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
return {
|
|
35
|
+
content: [{ type: "text", text: formatErrorForMcp(error) }],
|
|
36
|
+
isError: true,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
});
|
|
5
40
|
// create_task tool
|
|
6
|
-
server.tool("create_task", `Add a task to the Skylight task box.
|
|
7
|
-
|
|
8
|
-
The task box holds unscheduled tasks that can later be assigned to specific dates.
|
|
9
|
-
|
|
10
|
-
Use this when the user says:
|
|
11
|
-
- "Add XYZ to my task list"
|
|
12
|
-
- "Remind me to do ABC" (without a specific date)
|
|
13
|
-
- "Put 'clean garage' on the task box"
|
|
14
|
-
|
|
41
|
+
server.tool("create_task", `Add a task to the Skylight task box.
|
|
42
|
+
|
|
43
|
+
The task box holds unscheduled tasks that can later be assigned to specific dates.
|
|
44
|
+
|
|
45
|
+
Use this when the user says:
|
|
46
|
+
- "Add XYZ to my task list"
|
|
47
|
+
- "Remind me to do ABC" (without a specific date)
|
|
48
|
+
- "Put 'clean garage' on the task box"
|
|
49
|
+
|
|
15
50
|
The task will appear on the Skylight display in the task box.`, {
|
|
16
51
|
summary: z.string().describe("Task description"),
|
|
17
52
|
emoji: z
|
package/dist/tools/tasks.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"tasks.js","sourceRoot":"","sources":["../../src/tools/tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/errors.js
CHANGED
|
@@ -64,31 +64,31 @@ export class ParseError extends SkylightError {
|
|
|
64
64
|
*/
|
|
65
65
|
export function formatErrorForMcp(error) {
|
|
66
66
|
if (error instanceof AuthenticationError) {
|
|
67
|
-
return `Authentication Error: ${error.message}
|
|
68
|
-
|
|
69
|
-
Your Skylight token may have expired. To fix this:
|
|
70
|
-
1. If using email/password auth, retry with valid SKYLIGHT_EMAIL and SKYLIGHT_PASSWORD
|
|
71
|
-
2. If using a manual token, capture fresh API traffic using a proxy tool
|
|
72
|
-
3. Update your SKYLIGHT_TOKEN environment variable if you are using manual token auth
|
|
73
|
-
|
|
67
|
+
return `Authentication Error: ${error.message}
|
|
68
|
+
|
|
69
|
+
Your Skylight token may have expired. To fix this:
|
|
70
|
+
1. If using email/password auth, retry with valid SKYLIGHT_EMAIL and SKYLIGHT_PASSWORD
|
|
71
|
+
2. If using a manual token, capture fresh API traffic using a proxy tool
|
|
72
|
+
3. Update your SKYLIGHT_TOKEN environment variable if you are using manual token auth
|
|
73
|
+
|
|
74
74
|
See the auth documentation for detailed steps.`;
|
|
75
75
|
}
|
|
76
76
|
if (error instanceof NotFoundError) {
|
|
77
|
-
return `Not Found: ${error.message}
|
|
78
|
-
|
|
79
|
-
This could mean:
|
|
80
|
-
- The requested item doesn't exist
|
|
81
|
-
- Your frame ID is incorrect
|
|
77
|
+
return `Not Found: ${error.message}
|
|
78
|
+
|
|
79
|
+
This could mean:
|
|
80
|
+
- The requested item doesn't exist
|
|
81
|
+
- Your frame ID is incorrect
|
|
82
82
|
- The item was deleted from Skylight`;
|
|
83
83
|
}
|
|
84
84
|
if (error instanceof RateLimitError) {
|
|
85
|
-
return `Rate Limited: ${error.message}
|
|
86
|
-
|
|
85
|
+
return `Rate Limited: ${error.message}
|
|
86
|
+
|
|
87
87
|
The Skylight API is temporarily limiting requests. Please wait a moment and try again.`;
|
|
88
88
|
}
|
|
89
89
|
if (error instanceof ConfigurationError) {
|
|
90
|
-
return `Configuration Error: ${error.message}
|
|
91
|
-
|
|
90
|
+
return `Configuration Error: ${error.message}
|
|
91
|
+
|
|
92
92
|
Please check your environment variables are set correctly.`;
|
|
93
93
|
}
|
|
94
94
|
if (error instanceof SkylightError) {
|
package/package.json
CHANGED
|
@@ -1,78 +1,78 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@davidwoods/skylight-mcp",
|
|
3
|
-
"version": "1.
|
|
4
|
-
"description": "Unofficial MCP server for Skylight Calendar: local (stdio) and hosted (Cloudflare Workers), with browser-paste OAuth sign-in and an encrypted credential store",
|
|
5
|
-
"type": "module",
|
|
6
|
-
"main": "dist/index.js",
|
|
7
|
-
"bin": {
|
|
8
|
-
"skylight-mcp": "dist/index.js"
|
|
9
|
-
},
|
|
10
|
-
"files": [
|
|
11
|
-
"dist",
|
|
12
|
-
"README.md",
|
|
13
|
-
"LICENSE",
|
|
14
|
-
"THIRD_PARTY_NOTICES.md"
|
|
15
|
-
],
|
|
16
|
-
"scripts": {
|
|
17
|
-
"build": "tsc",
|
|
18
|
-
"start": "node dist/index.js",
|
|
19
|
-
"dev": "tsx watch src/index.ts",
|
|
20
|
-
"test": "vitest",
|
|
21
|
-
"test:coverage": "vitest --coverage",
|
|
22
|
-
"lint": "eslint src/",
|
|
23
|
-
"typecheck": "tsc --noEmit",
|
|
24
|
-
"prepare": "npm run build",
|
|
25
|
-
"generate:types": "openapi-typescript ../skylight-api/docs/openapi/openapi.yaml -o src/api/generated-types.ts",
|
|
26
|
-
"typecheck:worker": "tsc -p tsconfig.worker.json",
|
|
27
|
-
"worker:dev": "wrangler dev",
|
|
28
|
-
"worker:deploy": "wrangler deploy",
|
|
29
|
-
"worker:deploy:local": "wrangler deploy -c wrangler.local.jsonc",
|
|
30
|
-
"worker:setup": "node scripts/setup-worker.mjs",
|
|
31
|
-
"prepublishOnly": "npm run typecheck && npm run lint && vitest run && npm run build",
|
|
32
|
-
"test:live": "vitest run --config vitest.live.config.ts"
|
|
33
|
-
},
|
|
34
|
-
"keywords": [
|
|
35
|
-
"mcp",
|
|
36
|
-
"skylight",
|
|
37
|
-
"calendar",
|
|
38
|
-
"model-context-protocol",
|
|
39
|
-
"claude",
|
|
40
|
-
"ai",
|
|
41
|
-
"family",
|
|
42
|
-
"chores"
|
|
43
|
-
],
|
|
44
|
-
"author": "David Woods",
|
|
45
|
-
"license": "MIT",
|
|
46
|
-
"repository": {
|
|
47
|
-
"type": "git",
|
|
48
|
-
"url": "git+https://github.com/dwooods/skylight-mcp.git"
|
|
49
|
-
},
|
|
50
|
-
"dependencies": {
|
|
51
|
-
"@cloudflare/workers-oauth-provider": "^1.2.4",
|
|
52
|
-
"@modelcontextprotocol/sdk": "^1.32.2",
|
|
53
|
-
"zod": "^4.6.7"
|
|
54
|
-
},
|
|
55
|
-
"devDependencies": {
|
|
56
|
-
"@cloudflare/workers-types": "^5.20261029.1",
|
|
57
|
-
"@types/node": "^22.20.5",
|
|
58
|
-
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
59
|
-
"@typescript-eslint/parser": "^7.0.0",
|
|
60
|
-
"eslint": "^8.57.0",
|
|
61
|
-
"openapi-typescript": "^7.0.0",
|
|
62
|
-
"tsx": "^4.7.0",
|
|
63
|
-
"typescript": "^5.4.5",
|
|
64
|
-
"vite": "^8.3.5",
|
|
65
|
-
"vitest": "^5.0.5",
|
|
66
|
-
"wrangler": "^4.156.0"
|
|
67
|
-
},
|
|
68
|
-
"publishConfig": {
|
|
69
|
-
"access": "public"
|
|
70
|
-
},
|
|
71
|
-
"engines": {
|
|
72
|
-
"node": ">=20.0.0"
|
|
73
|
-
},
|
|
74
|
-
"homepage": "https://github.com/dwooods/skylight-mcp#readme",
|
|
75
|
-
"bugs": {
|
|
76
|
-
"url": "https://github.com/dwooods/skylight-mcp/issues"
|
|
77
|
-
}
|
|
78
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@davidwoods/skylight-mcp",
|
|
3
|
+
"version": "1.8.0",
|
|
4
|
+
"description": "Unofficial MCP server for Skylight Calendar: local (stdio) and hosted (Cloudflare Workers), with browser-paste OAuth sign-in and an encrypted credential store",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"skylight-mcp": "dist/index.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist",
|
|
12
|
+
"README.md",
|
|
13
|
+
"LICENSE",
|
|
14
|
+
"THIRD_PARTY_NOTICES.md"
|
|
15
|
+
],
|
|
16
|
+
"scripts": {
|
|
17
|
+
"build": "tsc",
|
|
18
|
+
"start": "node dist/index.js",
|
|
19
|
+
"dev": "tsx watch src/index.ts",
|
|
20
|
+
"test": "vitest",
|
|
21
|
+
"test:coverage": "vitest --coverage",
|
|
22
|
+
"lint": "eslint src/",
|
|
23
|
+
"typecheck": "tsc --noEmit",
|
|
24
|
+
"prepare": "npm run build",
|
|
25
|
+
"generate:types": "openapi-typescript ../skylight-api/docs/openapi/openapi.yaml -o src/api/generated-types.ts",
|
|
26
|
+
"typecheck:worker": "tsc -p tsconfig.worker.json",
|
|
27
|
+
"worker:dev": "wrangler dev",
|
|
28
|
+
"worker:deploy": "wrangler deploy",
|
|
29
|
+
"worker:deploy:local": "wrangler deploy -c wrangler.local.jsonc",
|
|
30
|
+
"worker:setup": "node scripts/setup-worker.mjs",
|
|
31
|
+
"prepublishOnly": "npm run typecheck && npm run lint && vitest run && npm run build",
|
|
32
|
+
"test:live": "vitest run --config vitest.live.config.ts"
|
|
33
|
+
},
|
|
34
|
+
"keywords": [
|
|
35
|
+
"mcp",
|
|
36
|
+
"skylight",
|
|
37
|
+
"calendar",
|
|
38
|
+
"model-context-protocol",
|
|
39
|
+
"claude",
|
|
40
|
+
"ai",
|
|
41
|
+
"family",
|
|
42
|
+
"chores"
|
|
43
|
+
],
|
|
44
|
+
"author": "David Woods",
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"repository": {
|
|
47
|
+
"type": "git",
|
|
48
|
+
"url": "git+https://github.com/dwooods/skylight-mcp.git"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@cloudflare/workers-oauth-provider": "^1.2.4",
|
|
52
|
+
"@modelcontextprotocol/sdk": "^1.32.2",
|
|
53
|
+
"zod": "^4.6.7"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"@cloudflare/workers-types": "^5.20261029.1",
|
|
57
|
+
"@types/node": "^22.20.5",
|
|
58
|
+
"@typescript-eslint/eslint-plugin": "^7.0.0",
|
|
59
|
+
"@typescript-eslint/parser": "^7.0.0",
|
|
60
|
+
"eslint": "^8.57.0",
|
|
61
|
+
"openapi-typescript": "^7.0.0",
|
|
62
|
+
"tsx": "^4.7.0",
|
|
63
|
+
"typescript": "^5.4.5",
|
|
64
|
+
"vite": "^8.3.5",
|
|
65
|
+
"vitest": "^5.0.5",
|
|
66
|
+
"wrangler": "^4.156.0"
|
|
67
|
+
},
|
|
68
|
+
"publishConfig": {
|
|
69
|
+
"access": "public"
|
|
70
|
+
},
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">=20.0.0"
|
|
73
|
+
},
|
|
74
|
+
"homepage": "https://github.com/dwooods/skylight-mcp#readme",
|
|
75
|
+
"bugs": {
|
|
76
|
+
"url": "https://github.com/dwooods/skylight-mcp/issues"
|
|
77
|
+
}
|
|
78
|
+
}
|