
OmniFocus
STDIOMCP server providing Claude with access to OmniFocus tasks and projects for AI-powered task management.
MCP server providing Claude with access to OmniFocus tasks and projects for AI-powered task management.
A Model Context Protocol (MCP) server for integrating OmniFocus with Claude Desktop. This server provides Claude with access to your OmniFocus tasks and projects, enabling AI-powered task management and weekly reviews.
omnifocus:get_all_tasks
Retrieve all tasks from OmniFocus with filtering options:
includeCompleted
(boolean) - Include completed tasks (default: false)limit
(number) - Maximum number of tasks to return (default: 100)omnifocus:get_active_tasks
Retrieve only active (uncompleted) tasks, automatically filtering out:
«
, »
)⚙️
)omnifocus:get_projects
Retrieve all active projects from OmniFocus.
Clone the repository:
git clone https://github.com/mdoel/omnifocus-mcp cd omnifocus-mcp
Install dependencies:
npm install
Build the project:
npm run build
Configure Claude Desktop:
Add this to your Claude Desktop MCP configuration:
{ "mcpServers": { "omnifocus": { "command": "/path/to/omnifocus/run-server.sh", "args": [] } } }
Important: Replace /path/to/omnifocus/
with the actual path to your project directory.
Grant automation permissions:
The first time you run the server, macOS will prompt you to grant automation permissions for OmniFocus. Click "Allow" when prompted.
Note: If you encounter permission issues, you may need to temporarily uncomment the osascript
lines in run-server.sh
to trigger the permission dialog. After granting permissions, comment those lines out again to avoid the dialog on every startup.
Restart Claude Desktop to load the new MCP server.
Once configured, you can ask Claude to:
OmniFocusClient
- Handles communication with OmniFocus via Omni AutomationOmniFocusJXA
- Utility for building and executing JXA scriptsOmniFocusMCPServer
- Main MCP server implementationsrc/
├── index.ts # Main entry point
├── server.ts # MCP server implementation
├── omnifocus/
│ ├── client.ts # OmniFocus automation client
│ └── omnifocus-jxa.ts # JXA script utilities
└── types/
└── omnifocus.ts # TypeScript definitions
# Build the project npm run build # Watch mode for development npm run dev
You can test the server locally:
# Test with command line arguments node dist/index.js all # Get all tasks node dist/index.js active # Get active tasks only node dist/index.js projects # Get projects only
Test OmniFocus automation directly:
# Test basic connection osascript -l JavaScript -e "Application('OmniFocus').running()" # Test task retrieval osascript -l JavaScript -e " const app = Application('OmniFocus'); const doc = app.defaultDocument; const tasks = doc.flattenedTasks(); console.log('Found ' + tasks.length + ' tasks'); "
If Claude Desktop can't connect to the server:
run-server.sh
script is executable:
chmod +x run-server.sh
If you get automation permission errors:
If the server is slow or times out:
limit
parameter to reduce the number of tasks returnedThis project is designed to be extensible. To add new functionality:
src/omnifocus/
directoryMIT License - see LICENSE file for details.
For issues and questions: