UNPKG

omnifocus-mcp

Version:

Model Context Protocol (MCP) server that integrates with OmniFocus for AI assistant interaction

42 lines (41 loc) 1.44 kB
import { queryOmnifocus } from '../tools/primitives/queryOmnifocus.js'; export async function readProject(uri, variables, logger) { const name = String(variables.name); logger.debug("resource:project", `Reading project: ${name}`); const result = await queryOmnifocus({ entity: 'tasks', filters: { projectName: name }, fields: ['id', 'name', 'flagged', 'dueDate', 'deferDate', 'taskStatus', 'tagNames', 'parentId', 'note', 'estimatedMinutes'] }); const data = result.success ? result.items ?? [] : { error: result.error }; return { contents: [{ uri: uri.href, mimeType: "application/json", text: JSON.stringify(data, null, 2) }] }; } export async function listProjects() { const result = await queryOmnifocus({ entity: 'projects', fields: ['name'] }); if (!result.success || !result.items) return []; return result.items.map((p) => ({ uri: `omnifocus://project/${encodeURIComponent(p.name)}`, name: p.name })); } export async function completeProjectName(value) { const result = await queryOmnifocus({ entity: 'projects', fields: ['name'] }); if (!result.success || !result.items) return []; return result.items .map((p) => p.name) .filter((name) => name.toLowerCase().includes(value.toLowerCase())); }