MCP server for connecting to OmniFocus, a MacOS based GTD and task management application. Written with Cline+ClaudeAI, not polished yet, but works on my machine.
An MCP (Model Context Protocol) server implementation that provides programmatic access to the OmniFocus task management application on macOS. This server enables AI assistants to interact with a user's OmniFocus data through natural language commands.
git clone https://github.com/yourusername/omnifocus-mcp-server.git
cd omnifocus-mcp-server
npm install
npm run build
Add the following to your MCP settings file:
{
"mcpServers": {
"omnifocus": {
"command": "node",
"args": ["/path/to/omnifocus-mcp-server/build/index.js"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
For Claude Desktop integration, use:
{
"mcpServers": {
"omnifocus": {
"command": "node",
"args": ["/path/to/omnifocus-mcp-server/scripts/real-mcp-server.js"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
You can use the provided installation script for automatic setup:
./scripts/install-claude-desktop.sh
For Docker deployment, use:
{
"mcpServers": {
"omnifocus": {
"command": "docker",
"args": ["exec", "-i", "omnifocus-mcp", "node", "/app/build/index.js"],
"env": {},
"disabled": false,
"autoApprove": []
}
}
}
The OmniFocus MCP Server provides the following tools and resources:
get_tasks
: Retrieve tasks based on specified criteriacreate_task
: Create a new task with specified attributesupdate_task
: Modify an existing taskcomplete_task
: Mark a task as completedelete_task
: Delete a specified taskget_projects
: Retrieve projects and their structurecreate_project
: Create a new projectupdate_project
: Modify an existing projectget_tags
: Retrieve available tagscreate_tag
: Create a new tagcheck_omnifocus_status
: Check if OmniFocus is runningget_forecast
: Get tasks due in the coming daysomnifocus://tasks/{id}
: Access specific task detailsomnifocus://projects/{id}
: Access specific project detailsomnifocus://tags/{id}
: Access specific tag detailsomnifocus://perspectives/{id}
: Access specific perspective detailsomnifocus://daily
: Access daily task summaryomnifocus://forecast
: Access forecast view dataomnifocus://flagged
: Access flagged itemsomnifocus://search?q={query}
: Search tasks with a query stringomnifocus://due/{date}
: Access tasks due on a specific dateThe OmniFocus MCP Server includes robust locale-independent date handling:
For more details, see the Date Handling Documentation.
omnifocus-mcp-server/
├── src/ # Source code
│ ├── index.ts # Entry point
│ ├── server.ts # Server implementation
│ ├── tools/ # Tool implementations
│ ├── resources/ # Resource implementations
│ ├── applescript/ # AppleScript utilities
│ ├── utils/ # Utility functions
│ │ └── dateUtils.js # Date handling utilities
│ └── types/ # TypeScript type definitions
├── build/ # Compiled JavaScript
├── tests/ # Test files
├── scripts/ # Utility scripts
│ ├── real-mcp-server.js # Claude Desktop integration
│ ├── test-date-utils.js # Date utilities testing
│ └── ... # Other utility scripts
├── docs/ # Documentation
├── docker/ # Docker configuration
├── tsconfig.json # TypeScript configuration
├── package.json # Project metadata and dependencies
└── README.md # Project documentation
npm run build
npm start
npm test
npm run lint
Docker support is fully implemented. See Docker Setup for detailed instructions on running the OmniFocus MCP Server in a Docker container.
The OmniFocus MCP Server includes special integration with Claude Desktop. See Claude Desktop Integration for detailed instructions.
This project is licensed under the MIT License - see the LICENSE file for details.
Copyright (c) 2025 Björn Schotte bjoern.schotte@mayflower.de
BjoernSchotte/mcp-omnifocus
March 29, 2025
June 30, 2025
TypeScript