@ofocus/mcp 0.4.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.
@@ -0,0 +1,392 @@
1
+ import { z } from "zod";
2
+ import { createSubtask, querySubtasks, moveTaskToParent, listPerspectives, queryPerspective, queryForecast, focus, unfocus, getFocused, queryDeferred, quickCapture, getStats, getSyncStatus, triggerSync, saveTemplate, listTemplates, getTemplate, createFromTemplate, deleteTemplate, addAttachment, listAttachments, removeAttachment, archiveTasks, compactDatabase, exportTaskPaper, importTaskPaper, generateUrl, } from "@ofocus/sdk";
3
+ import { formatResult } from "../utils.js";
4
+ export function registerAdvancedTools(server) {
5
+ // Subtasks
6
+ server.registerTool("subtask_create", {
7
+ description: "Create a subtask under an existing task",
8
+ inputSchema: {
9
+ parentTaskId: z.string().describe("ID of the parent task"),
10
+ title: z.string().describe("Subtask title"),
11
+ note: z.string().optional().describe("Subtask note"),
12
+ due: z.string().optional().describe("Due date"),
13
+ defer: z.string().optional().describe("Defer date"),
14
+ flag: z.boolean().optional().describe("Flag the subtask"),
15
+ tags: z.array(z.string()).optional().describe("Tags to apply"),
16
+ estimatedMinutes: z.number().optional().describe("Estimated duration"),
17
+ },
18
+ }, async (params) => {
19
+ const result = await createSubtask(params.parentTaskId, params.title, {
20
+ note: params.note,
21
+ due: params.due,
22
+ defer: params.defer,
23
+ flag: params.flag,
24
+ tags: params.tags,
25
+ estimatedMinutes: params.estimatedMinutes,
26
+ });
27
+ return formatResult(result);
28
+ });
29
+ server.registerTool("subtasks_list", {
30
+ description: "List subtasks of a parent task",
31
+ inputSchema: {
32
+ parentTaskId: z.string().describe("ID of the parent task"),
33
+ completed: z
34
+ .boolean()
35
+ .optional()
36
+ .describe("Include completed subtasks"),
37
+ flagged: z.boolean().optional().describe("Filter by flagged status"),
38
+ },
39
+ }, async (params) => {
40
+ const result = await querySubtasks(params.parentTaskId, {
41
+ completed: params.completed,
42
+ flagged: params.flagged,
43
+ });
44
+ return formatResult(result);
45
+ });
46
+ server.registerTool("task_move", {
47
+ description: "Move a task to a new parent task (make it a subtask)",
48
+ inputSchema: {
49
+ taskId: z.string().describe("ID of the task to move"),
50
+ newParentId: z.string().describe("ID of the new parent task"),
51
+ },
52
+ }, async (params) => {
53
+ const result = await moveTaskToParent(params.taskId, params.newParentId);
54
+ return formatResult(result);
55
+ });
56
+ // Perspectives
57
+ server.registerTool("perspectives_list", {
58
+ description: "List all perspectives in OmniFocus",
59
+ inputSchema: {},
60
+ }, async () => {
61
+ const result = await listPerspectives();
62
+ return formatResult(result);
63
+ });
64
+ server.registerTool("perspective_query", {
65
+ description: "Query tasks from a specific perspective",
66
+ inputSchema: {
67
+ name: z.string().describe("Perspective name"),
68
+ limit: z.number().optional().describe("Maximum results to return"),
69
+ },
70
+ }, async (params) => {
71
+ const result = await queryPerspective(params.name, {
72
+ limit: params.limit,
73
+ });
74
+ return formatResult(result);
75
+ });
76
+ // Forecast
77
+ server.registerTool("forecast", {
78
+ description: "Query tasks by date range (forecast view)",
79
+ inputSchema: {
80
+ start: z.string().optional().describe("Start date (defaults to today)"),
81
+ end: z.string().optional().describe("End date"),
82
+ days: z
83
+ .number()
84
+ .int()
85
+ .min(1)
86
+ .optional()
87
+ .describe("Number of days from start (alternative to end, default: 7)"),
88
+ includeDeferred: z
89
+ .boolean()
90
+ .optional()
91
+ .describe("Include tasks deferred to the date range"),
92
+ },
93
+ }, async (params) => {
94
+ const result = await queryForecast({
95
+ start: params.start,
96
+ end: params.end,
97
+ days: params.days,
98
+ includeDeferred: params.includeDeferred,
99
+ });
100
+ return formatResult(result);
101
+ });
102
+ // Focus
103
+ server.registerTool("focus_set", {
104
+ description: "Focus on a specific project or folder by name or ID",
105
+ inputSchema: {
106
+ target: z.string().describe("Project or folder name or ID to focus on"),
107
+ byId: z
108
+ .boolean()
109
+ .optional()
110
+ .describe("If true, treat target as an ID instead of a name"),
111
+ },
112
+ }, async (params) => {
113
+ const result = await focus(params.target, { byId: params.byId });
114
+ return formatResult(result);
115
+ });
116
+ server.registerTool("focus_clear", {
117
+ description: "Clear the current focus in OmniFocus",
118
+ inputSchema: {},
119
+ }, async () => {
120
+ const result = await unfocus();
121
+ return formatResult(result);
122
+ });
123
+ server.registerTool("focus_get", {
124
+ description: "Get the currently focused project or folder",
125
+ inputSchema: {},
126
+ }, async () => {
127
+ const result = await getFocused();
128
+ return formatResult(result);
129
+ });
130
+ // Deferred
131
+ server.registerTool("deferred_list", {
132
+ description: "List deferred tasks",
133
+ inputSchema: {
134
+ deferredAfter: z
135
+ .string()
136
+ .optional()
137
+ .describe("Include tasks deferred until after this date"),
138
+ deferredBefore: z
139
+ .string()
140
+ .optional()
141
+ .describe("Include tasks deferred until before this date"),
142
+ blockedOnly: z
143
+ .boolean()
144
+ .optional()
145
+ .describe("Only show tasks currently blocked by defer date"),
146
+ },
147
+ }, async (params) => {
148
+ const result = await queryDeferred({
149
+ deferredAfter: params.deferredAfter,
150
+ deferredBefore: params.deferredBefore,
151
+ blockedOnly: params.blockedOnly,
152
+ });
153
+ return formatResult(result);
154
+ });
155
+ // Quick capture
156
+ server.registerTool("quick_add", {
157
+ description: "Add a task using natural language quick entry syntax",
158
+ inputSchema: {
159
+ input: z
160
+ .string()
161
+ .describe("Natural language input (e.g., 'Buy milk @errands #shopping ::tomorrow')"),
162
+ note: z.string().optional().describe("Additional note text to add"),
163
+ },
164
+ }, async (params) => {
165
+ const result = await quickCapture(params.input, {
166
+ note: params.note,
167
+ });
168
+ return formatResult(result);
169
+ });
170
+ // Statistics
171
+ server.registerTool("stats", {
172
+ description: "Get productivity statistics from OmniFocus",
173
+ inputSchema: {
174
+ period: z
175
+ .enum(["day", "week", "month", "year"])
176
+ .optional()
177
+ .describe("Time period for statistics"),
178
+ project: z.string().optional().describe("Filter by project name"),
179
+ since: z.string().optional().describe("Start date for custom period"),
180
+ until: z.string().optional().describe("End date for custom period"),
181
+ },
182
+ }, async (params) => {
183
+ const result = await getStats({
184
+ period: params.period,
185
+ project: params.project,
186
+ since: params.since,
187
+ until: params.until,
188
+ });
189
+ return formatResult(result);
190
+ });
191
+ // Sync
192
+ server.registerTool("sync_status", {
193
+ description: "Get the current sync status of OmniFocus",
194
+ inputSchema: {},
195
+ }, async () => {
196
+ const result = await getSyncStatus();
197
+ return formatResult(result);
198
+ });
199
+ server.registerTool("sync_trigger", {
200
+ description: "Trigger a sync in OmniFocus",
201
+ inputSchema: {},
202
+ }, async () => {
203
+ const result = await triggerSync();
204
+ return formatResult(result);
205
+ });
206
+ // Templates
207
+ server.registerTool("template_save", {
208
+ description: "Save a project as a reusable template",
209
+ inputSchema: {
210
+ name: z.string().describe("Name for the template"),
211
+ sourceProject: z
212
+ .string()
213
+ .describe("Project ID or name to save as template"),
214
+ description: z.string().optional().describe("Template description"),
215
+ },
216
+ }, async (params) => {
217
+ const result = await saveTemplate({
218
+ name: params.name,
219
+ sourceProject: params.sourceProject,
220
+ description: params.description,
221
+ });
222
+ return formatResult(result);
223
+ });
224
+ server.registerTool("templates_list", {
225
+ description: "List all saved templates",
226
+ inputSchema: {},
227
+ }, () => {
228
+ const result = listTemplates();
229
+ return formatResult(result);
230
+ });
231
+ server.registerTool("template_get", {
232
+ description: "Get details of a specific template",
233
+ inputSchema: {
234
+ templateName: z.string().describe("Name of the template"),
235
+ },
236
+ }, (params) => {
237
+ const result = getTemplate(params.templateName);
238
+ return formatResult(result);
239
+ });
240
+ server.registerTool("template_create_project", {
241
+ description: "Create a new project from a template",
242
+ inputSchema: {
243
+ templateName: z.string().describe("Name of the template to use"),
244
+ projectName: z.string().optional().describe("Name for the new project"),
245
+ folder: z.string().optional().describe("Folder to create project in"),
246
+ baseDate: z
247
+ .string()
248
+ .optional()
249
+ .describe("Base date for calculating offsets (defaults to today)"),
250
+ },
251
+ }, async (params) => {
252
+ const result = await createFromTemplate({
253
+ templateName: params.templateName,
254
+ projectName: params.projectName,
255
+ folder: params.folder,
256
+ baseDate: params.baseDate,
257
+ });
258
+ return formatResult(result);
259
+ });
260
+ server.registerTool("template_delete", {
261
+ description: "Delete a saved template",
262
+ inputSchema: {
263
+ templateName: z.string().describe("Name of the template to delete"),
264
+ },
265
+ }, (params) => {
266
+ const result = deleteTemplate(params.templateName);
267
+ return formatResult(result);
268
+ });
269
+ // Attachments
270
+ server.registerTool("attachment_add", {
271
+ description: "Add an attachment to a task",
272
+ inputSchema: {
273
+ taskId: z.string().describe("ID of the task"),
274
+ filePath: z.string().describe("Path to the file to attach"),
275
+ },
276
+ }, async (params) => {
277
+ const result = await addAttachment(params.taskId, params.filePath);
278
+ return formatResult(result);
279
+ });
280
+ server.registerTool("attachments_list", {
281
+ description: "List attachments on a task",
282
+ inputSchema: {
283
+ taskId: z.string().describe("ID of the task"),
284
+ },
285
+ }, async (params) => {
286
+ const result = await listAttachments(params.taskId);
287
+ return formatResult(result);
288
+ });
289
+ server.registerTool("attachment_remove", {
290
+ description: "Remove an attachment from a task",
291
+ inputSchema: {
292
+ taskId: z.string().describe("ID of the task"),
293
+ attachmentName: z.string().describe("Name of the attachment to remove"),
294
+ },
295
+ }, async (params) => {
296
+ const result = await removeAttachment(params.taskId, params.attachmentName);
297
+ return formatResult(result);
298
+ });
299
+ // Archive
300
+ server.registerTool("archive", {
301
+ description: "Archive completed tasks",
302
+ inputSchema: {
303
+ completedBefore: z
304
+ .string()
305
+ .optional()
306
+ .describe("Archive tasks completed before this date"),
307
+ droppedBefore: z
308
+ .string()
309
+ .optional()
310
+ .describe("Archive tasks dropped before this date"),
311
+ project: z
312
+ .string()
313
+ .optional()
314
+ .describe("Archive only from this project"),
315
+ dryRun: z
316
+ .boolean()
317
+ .optional()
318
+ .describe("Preview what would be archived without archiving"),
319
+ },
320
+ }, async (params) => {
321
+ const result = await archiveTasks({
322
+ completedBefore: params.completedBefore,
323
+ droppedBefore: params.droppedBefore,
324
+ project: params.project,
325
+ dryRun: params.dryRun,
326
+ });
327
+ return formatResult(result);
328
+ });
329
+ server.registerTool("compact_database", {
330
+ description: "Compact the OmniFocus database",
331
+ inputSchema: {},
332
+ }, async () => {
333
+ const result = await compactDatabase();
334
+ return formatResult(result);
335
+ });
336
+ // TaskPaper import/export
337
+ server.registerTool("export_taskpaper", {
338
+ description: "Export tasks/projects to TaskPaper format",
339
+ inputSchema: {
340
+ project: z
341
+ .string()
342
+ .optional()
343
+ .describe("Export specific project by name"),
344
+ includeCompleted: z
345
+ .boolean()
346
+ .optional()
347
+ .describe("Include completed tasks"),
348
+ includeDropped: z
349
+ .boolean()
350
+ .optional()
351
+ .describe("Include dropped tasks"),
352
+ },
353
+ }, async (params) => {
354
+ const result = await exportTaskPaper({
355
+ project: params.project,
356
+ includeCompleted: params.includeCompleted,
357
+ includeDropped: params.includeDropped,
358
+ });
359
+ return formatResult(result);
360
+ });
361
+ server.registerTool("import_taskpaper", {
362
+ description: "Import tasks from TaskPaper format",
363
+ inputSchema: {
364
+ content: z.string().describe("TaskPaper formatted content"),
365
+ defaultProject: z
366
+ .string()
367
+ .optional()
368
+ .describe("Target project for tasks without a project"),
369
+ createProjects: z
370
+ .boolean()
371
+ .optional()
372
+ .describe("Whether to create projects that do not exist"),
373
+ },
374
+ }, async (params) => {
375
+ const result = await importTaskPaper(params.content, {
376
+ defaultProject: params.defaultProject,
377
+ createProjects: params.createProjects,
378
+ });
379
+ return formatResult(result);
380
+ });
381
+ // URL generation
382
+ server.registerTool("generate_url", {
383
+ description: "Generate an OmniFocus URL scheme link for a task, project, folder, or tag",
384
+ inputSchema: {
385
+ id: z.string().describe("ID of the task, project, folder, or tag"),
386
+ },
387
+ }, async (params) => {
388
+ const result = await generateUrl(params.id);
389
+ return formatResult(result);
390
+ });
391
+ }
392
+ //# sourceMappingURL=advanced.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advanced.js","sourceRoot":"","sources":["../../src/tools/advanced.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerFolderTools(server: McpServer): void;
3
+ //# sourceMappingURL=folders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.d.ts","sourceRoot":"","sources":["../../src/tools/folders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAUzE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAmF3D"}
@@ -0,0 +1,69 @@
1
+ import { z } from "zod";
2
+ import { queryFolders, createFolder, updateFolder, deleteFolder, } from "@ofocus/sdk";
3
+ import { formatResult } from "../utils.js";
4
+ export function registerFolderTools(server) {
5
+ // folders_list - Query folders
6
+ server.registerTool("folders_list", {
7
+ description: "List folders from OmniFocus",
8
+ inputSchema: {
9
+ parent: z
10
+ .string()
11
+ .optional()
12
+ .describe("Filter by parent folder name or ID"),
13
+ },
14
+ }, async (params) => {
15
+ const result = await queryFolders({
16
+ parent: params.parent,
17
+ });
18
+ return formatResult(result);
19
+ });
20
+ // folder_create - Create a new folder
21
+ server.registerTool("folder_create", {
22
+ description: "Create a new folder in OmniFocus",
23
+ inputSchema: {
24
+ name: z.string().describe("Folder name"),
25
+ parentFolderId: z.string().optional().describe("Parent folder ID"),
26
+ parentFolderName: z.string().optional().describe("Parent folder name"),
27
+ },
28
+ }, async (params) => {
29
+ const result = await createFolder(params.name, {
30
+ parentFolderId: params.parentFolderId,
31
+ parentFolderName: params.parentFolderName,
32
+ });
33
+ return formatResult(result);
34
+ });
35
+ // folder_update - Update folder properties
36
+ server.registerTool("folder_update", {
37
+ description: "Update properties of an existing folder",
38
+ inputSchema: {
39
+ folderId: z.string().describe("The ID of the folder to update"),
40
+ name: z.string().optional().describe("New folder name"),
41
+ parentFolderId: z
42
+ .string()
43
+ .optional()
44
+ .describe("Move to parent folder by ID"),
45
+ parentFolderName: z
46
+ .string()
47
+ .optional()
48
+ .describe("Move to parent folder by name"),
49
+ },
50
+ }, async (params) => {
51
+ const result = await updateFolder(params.folderId, {
52
+ name: params.name,
53
+ parentFolderId: params.parentFolderId,
54
+ parentFolderName: params.parentFolderName,
55
+ });
56
+ return formatResult(result);
57
+ });
58
+ // folder_delete - Delete a folder permanently
59
+ server.registerTool("folder_delete", {
60
+ description: "Permanently delete a folder from OmniFocus",
61
+ inputSchema: {
62
+ folderId: z.string().describe("The ID of the folder to delete"),
63
+ },
64
+ }, async (params) => {
65
+ const result = await deleteFolder(params.folderId);
66
+ return formatResult(result);
67
+ });
68
+ }
69
+ //# sourceMappingURL=folders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"folders.js","sourceRoot":"","sources":["../../src/tools/folders.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ /**
3
+ * Register all OFocus MCP tools with the server.
4
+ */
5
+ export declare function registerAllTools(server: McpServer): void;
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAMxD"}
@@ -0,0 +1,16 @@
1
+ import { registerTaskTools } from "./tasks.js";
2
+ import { registerProjectTools } from "./projects.js";
3
+ import { registerTagTools } from "./tags.js";
4
+ import { registerFolderTools } from "./folders.js";
5
+ import { registerAdvancedTools } from "./advanced.js";
6
+ /**
7
+ * Register all OFocus MCP tools with the server.
8
+ */
9
+ export function registerAllTools(server) {
10
+ registerTaskTools(server);
11
+ registerProjectTools(server);
12
+ registerTagTools(server);
13
+ registerFolderTools(server);
14
+ registerAdvancedTools(server);
15
+ }
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAEtD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC1B,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7B,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACzB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC5B,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function registerProjectTools(server: McpServer): void;
3
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAezE,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2M5D"}