npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@iflow-mcp/mdoel-omnifocus-mcp

v1.0.0

Published

MCP server for OmniFocus integration using Omni Automation

Readme

OmniFocus MCP Server

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.

Features

  • 🎯 OmniFocus Integration - Access tasks and projects from OmniFocus
  • 🔧 Active Task Filtering - Get only uncompleted tasks, excluding templates and system items
  • 🚀 TypeScript + MCP SDK - Type-safe and maintainable
  • 🔒 Secure Automation - Uses official Omni Automation JavaScript API
  • 📱 Claude Desktop Ready - Works seamlessly with Claude Desktop

Current Tools

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:

  • Tasks from "Templates" folders
  • Tasks containing template placeholders («, »)
  • Tasks with synced preferences markers (⚙️)

omnifocus:get_projects

Retrieve all active projects from OmniFocus.

Prerequisites

  • macOS with OmniFocus installed
  • Node.js 23.10.0 or higher
  • Claude Desktop application
  • Automation permissions for OmniFocus

Installation

  1. Clone the repository:

    git clone https://github.com/mdoel/omnifocus-mcp
    cd omnifocus-mcp
  2. Install dependencies:

    npm install
  3. Build the project:

    npm run build
  4. 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.

  5. 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.

  6. Restart Claude Desktop to load the new MCP server.

Usage

Once configured, you can ask Claude to:

  • "Get all my active tasks from OmniFocus"
  • "Show me my projects"
  • "What tasks do I have for today?"
  • "Help me with my weekly review"

Architecture

Core Components

  • OmniFocusClient - Handles communication with OmniFocus via Omni Automation
  • OmniFocusJXA - Utility for building and executing JXA scripts
  • OmniFocusMCPServer - Main MCP server implementation

Directory Structure

src/
├── 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

Development

Building

# Build the project
npm run build

# Watch mode for development
npm run dev

Testing

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

Testing OmniFocus Automation

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');
"

Troubleshooting

Server Connection Issues

If Claude Desktop can't connect to the server:

  1. Check the script path in your Claude Desktop configuration
  2. Verify permissions - ensure the run-server.sh script is executable:
    chmod +x run-server.sh
  3. Check Node.js installation - ensure Node.js 23.10.0+ is installed
  4. Review logs - check Claude Desktop's MCP server logs for error messages

Permission Issues

If you get automation permission errors:

  1. Open System Preferences > Security & Privacy > Privacy
  2. Select Automation from the left sidebar
  3. Find your terminal/shell and check OmniFocus
  4. Restart your terminal and try again

OmniFocus Not Found

  • Ensure OmniFocus is installed and running
  • Verify the app name is "OmniFocus" (not "OmniFocus 3" or something similar)
  • Check that OmniFocus is not in the trash or disabled

Performance Issues

If the server is slow or times out:

  • The server may take time to process large OmniFocus databases
  • Consider using the limit parameter to reduce the number of tasks returned
  • Ensure OmniFocus is not performing other operations

Contributing

This project is designed to be extensible. To add new functionality:

  1. Add new tools in the src/omnifocus/ directory
  2. Update the server to register new tools
  3. Test thoroughly with your OmniFocus data
  4. Submit a pull request with clear documentation

License

MIT License - see LICENSE file for details.

Support

For issues and questions:

  • Check the troubleshooting section above
  • Review the Claude Desktop MCP documentation
  • Open an issue in this repository