Skip to main content
Glama

OmniFocus MCP Server

by mdoel
setup.shโ€ข3.7 kB
#!/bin/bash # OmniFocus MCP Server Setup Script set -e echo "๐Ÿš€ Setting up OmniFocus MCP Server..." # Check if we're in the right directory if [ ! -f "package.json" ]; then echo "โŒ Error: package.json not found. Please run this script from the project root." exit 1 fi # Check Node.js version NODE_VERSION=$(node --version | sed 's/v//') REQUIRED_MAJOR=18 CURRENT_MAJOR=$(echo $NODE_VERSION | cut -d. -f1) if [ "$CURRENT_MAJOR" -lt "$REQUIRED_MAJOR" ]; then echo "โŒ Error: Node.js $REQUIRED_MAJOR+ required. Current version: $NODE_VERSION" exit 1 fi echo "โœ… Node.js version: $NODE_VERSION" # Install dependencies echo "๐Ÿ“ฆ Installing dependencies..." npm install # Add missing dependency echo "๐Ÿ“ฆ Adding zod for input validation..." npm install zod # Build the project echo "๐Ÿ”จ Building TypeScript..." npm run build # Check if OmniFocus is installed and accessible echo "๐Ÿ” Checking OmniFocus installation..." if ! osascript -e 'Application("OmniFocus").running()' 2>/dev/null; then echo "โš ๏ธ Warning: OmniFocus is not running. Please start OmniFocus for the server to work properly." else echo "โœ… OmniFocus is running and accessible" fi # Test the automation permissions echo "๐Ÿ” Testing OmniFocus automation permissions..." TEST_RESULT=$(osascript -l JavaScript -e 'const app = Application("OmniFocus"); app.defaultDocument.name();' 2>&1 || echo "PERMISSION_ERROR") if [[ "$TEST_RESULT" == *"PERMISSION_ERROR"* ]] || [[ "$TEST_RESULT" == *"not allowed"* ]]; then echo "โŒ Error: Automation permission denied for OmniFocus" echo " Please grant automation permissions:" echo " 1. Open System Preferences > Security & Privacy > Privacy" echo " 2. Select 'Automation' from the left sidebar" echo " 3. Find 'Terminal' or your shell and check 'OmniFocus'" echo " 4. Restart your terminal and try again" exit 1 else echo "โœ… OmniFocus automation permissions verified" fi # Get the current directory for the Claude config CURRENT_DIR=$(pwd) CLAUDE_CONFIG_DIR="$HOME/Library/Application Support/Claude" CLAUDE_CONFIG_FILE="$CLAUDE_CONFIG_DIR/claude_desktop_config.json" # Create Claude config directory if it doesn't exist mkdir -p "$CLAUDE_CONFIG_DIR" # Create or update Claude Desktop configuration echo "โš™๏ธ Configuring Claude Desktop..." if [ -f "$CLAUDE_CONFIG_FILE" ]; then echo " Backing up existing Claude config..." cp "$CLAUDE_CONFIG_FILE" "$CLAUDE_CONFIG_FILE.backup.$(date +%Y%m%d_%H%M%S)" fi # Create the configuration cat > "$CLAUDE_CONFIG_FILE" << EOF { "mcpServers": { "omnifocus": { "command": "node", "args": ["$CURRENT_DIR/dist/index.js"], "env": { "NODE_ENV": "production" } } } } EOF echo "โœ… Claude Desktop configuration updated" # Test the server echo "๐Ÿงช Testing MCP server..." if timeout 10s node dist/index.js <<< '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}' > /dev/null 2>&1; then echo "โœ… MCP server test passed" else echo "โš ๏ธ MCP server test timed out (this is normal - server is waiting for input)" fi echo "" echo "๐ŸŽ‰ Setup complete!" echo "" echo "Next steps:" echo "1. Restart Claude Desktop to load the new MCP server" echo "2. Open a new conversation in Claude Desktop" echo "3. Test the integration with: 'Get all my tasks from OmniFocus'" echo "" echo "Useful commands:" echo " npm run build - Rebuild after making changes" echo " npm run dev - Watch mode for development" echo " npm run start - Start the server manually" echo "" echo "Configuration files:" echo " Claude config: $CLAUDE_CONFIG_FILE" echo " Server path: $CURRENT_DIR/dist/index.js"

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/mdoel/omnifocus-mcp'

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