Skip to main content
Glama

OmniFocus-MCP

server.ts3.46 kB
#!/usr/bin/env node import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; // Import tool definitions import * as dumpDatabaseTool from './tools/definitions/dumpDatabase.js'; import * as addOmniFocusTaskTool from './tools/definitions/addOmniFocusTask.js'; import * as addProjectTool from './tools/definitions/addProject.js'; import * as removeItemTool from './tools/definitions/removeItem.js'; import * as editItemTool from './tools/definitions/editItem.js'; import * as batchAddItemsTool from './tools/definitions/batchAddItems.js'; import * as batchRemoveItemsTool from './tools/definitions/batchRemoveItems.js'; import * as queryOmniFocusTool from './tools/definitions/queryOmnifocus.js'; import * as listPerspectivesTool from './tools/definitions/listPerspectives.js'; import * as getPerspectiveViewTool from './tools/definitions/getPerspectiveView.js'; // Create an MCP server const server = new McpServer({ name: "OmniFocus MCP", version: "1.0.0" }); // Register tools server.tool( "dump_database", "Gets the current state of your OmniFocus database", dumpDatabaseTool.schema.shape, dumpDatabaseTool.handler ); server.tool( "add_omnifocus_task", "Add a new task to OmniFocus", addOmniFocusTaskTool.schema.shape, addOmniFocusTaskTool.handler ); server.tool( "add_project", "Add a new project to OmniFocus", addProjectTool.schema.shape, addProjectTool.handler ); server.tool( "remove_item", "Remove a task or project from OmniFocus", removeItemTool.schema.shape, removeItemTool.handler ); server.tool( "edit_item", "Edit a task or project in OmniFocus", editItemTool.schema.shape, editItemTool.handler ); server.tool( "batch_add_items", "Add multiple tasks or projects to OmniFocus in a single operation", batchAddItemsTool.schema.shape, batchAddItemsTool.handler ); server.tool( "batch_remove_items", "Remove multiple tasks or projects from OmniFocus in a single operation", batchRemoveItemsTool.schema.shape, batchRemoveItemsTool.handler ); server.tool( "query_omnifocus", "Efficiently query OmniFocus database with powerful filters. Get specific tasks, projects, or folders without loading the entire database. Supports filtering by project, tags, status, due dates, and more. Much faster than dump_database for targeted queries.", queryOmniFocusTool.schema.shape, queryOmniFocusTool.handler ); server.tool( "list_perspectives", "List all available perspectives in OmniFocus, including built-in perspectives (Inbox, Projects, Tags, etc.) and custom perspectives (Pro feature)", listPerspectivesTool.schema.shape, listPerspectivesTool.handler ); server.tool( "get_perspective_view", "Get the items visible in a specific OmniFocus perspective. Shows what tasks and projects are displayed when viewing that perspective", getPerspectiveViewTool.schema.shape, getPerspectiveViewTool.handler ); // Start the MCP server const transport = new StdioServerTransport(); // Use await with server.connect to ensure proper connection (async function() { try { console.error("Starting MCP server..."); await server.connect(transport); console.error("MCP Server connected and ready to accept commands from Claude"); } catch (err) { console.error(`Failed to start MCP server: ${err}`); } })(); // For a cleaner shutdown if the process is terminated

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/themotionmachine/OmniFocus-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server