Skip to main content
Glama
addTaskManager MCP Server

addTaskManager MCP Server

by dragosroua

addTaskManager MCP Server

An MCP (Model Context Protocol) server that integrates with the addTaskManager iOS/macOS app, implementing the ADD (Assess-Decide-Do) framework created by Dragos Roua.

Overview

This MCP server provides AI assistance for your addTaskManager productivity workflow while respecting the strict realm-based restrictions of the ADD framework:

  • Assess Realm: Create and edit tasks/projects/ideas, but cannot assign contexts or due dates

  • Decide Realm: Assign contexts, due dates, and alerts, but cannot edit content

  • Do Realm: Mark items as complete only (read-only otherwise)

Related MCP server: OmniFocus MCP Server

Features

Authentication

  • Secure Apple Sign-In integration

  • CloudKit.js authentication for personal data access

  • User-specific data isolation

Assess Realm Operations

  • assess_create_task - Create new tasks with editable content

  • assess_edit_task - Edit task content

  • assess_create_project - Create new projects

  • assess_edit_project - Edit project title

  • assess_create_idea - Capture new ideas

  • assess_create_collection - Create new collection

  • assess_create_context - Create new context

  • assess_edit_idea - Edit idea title

  • assess_add_task_to_project - Add an existing task to a project

  • assess_add_task_to_idea - Add an existing task to an idea

  • assess_remove_task_from_project - Remove a task assigned to a project

  • assess_remove_task_from_idea - Remove a task assigned to an idea

  • assess_archive_task_to_collection - Archive a task to an existing collection

  • assess_archive_project_to_collection - Archive a project to an existing collection

Decide Realm Operations

  • decide_assign_context - Assign contexts to tasks/projects

  • decide_set_project_interval - Set a project interval (start date and end date)

  • decide_set_task_due_date - Set due date to a task

  • decide_set_task_alert - Set task alerts

  • decide_move_task_to_do - Move task to Do realm

  • decide_move_task_to_assess_from_decide - Move task to Assess realm

  • decide_move_project_to_do - Move project to Do realm

  • decide_move_project_to_assess_from_decide - Move project to Assess realm

Do Realm Operations

  • do_mark_task_as_done - Mark tasks as completed

  • do_mark_project_as_done - Mark projects as completed

Query Operations

  • get_tasks_by_realm - Filter tasks by realm

  • get_projects_by_realm - Filter projects by realm

  • get_ideas - Get all ideas

  • get_collections - Get all collections

  • get_tasks_by_context - Filter by context

  • get_stalled_items_in_decide - Find stalled items (task + projects) in Decide

  • get_undecided_items_in_decide - Find undecided items (task + projects) in Decide

  • get_ready_items_in_decide - Find ready to do items (task + projects) in Decide

  • get_tasks_today_in_do - Find tasks done today in Do

  • get_tasks_tomorrow_in_do - Find tasks done tomorrow in Do

  • get_tasks_soon_in_do - Find tasks done soon in Do

  • get_tasks_overdue_in_do - Find tasks overdue in Do

General Operations

  • moveToRealm - Move a task or project to any realm (assess/decide/do)

Installation

From npm (Coming Soon)

npm install -g @dragosroua/addtaskmanager-mcp-server

From Source

git clone https://github.com/dragosroua/addtaskmanager-mcp-server.git
cd addtaskmanager-mcp-server
npm install
npm run build

Configuration

Environment Variables

The server supports both development and production configurations. Copy .env.example to .env and configure:

# Environment
NODE_ENV=production  # or development
# FORCE_CLOUDKIT=true  # Force CloudKit in development

# CloudKit Configuration (Required)
CLOUDKIT_CONTAINER_ID=iCloud.com.yourapp.zentasktic
CLOUDKIT_API_TOKEN=your_api_token_here
CLOUDKIT_ENVIRONMENT=production  # or development
CLOUDKIT_AUTH_METHOD=user  # or server-to-server

# Security Configuration (Production)
ENCRYPTION_KEY=your_32_byte_encryption_key_here
ALLOWED_ORIGINS=https://yourapp.com,https://localhost:3000
RATE_LIMIT_WINDOW_MS=900000  # 15 minutes
RATE_LIMIT_MAX_REQUESTS=100
AUDIT_LOGGING=true
SESSION_TIMEOUT_MS=86400000  # 24 hours

# Optional: For server-to-server authentication
# CLOUDKIT_SERVER_KEY=your_server_key_id
# CLOUDKIT_PRIVATE_KEY_PATH=/path/to/private/key.p8
# CLOUDKIT_PRIVATE_KEY_PASSPHRASE=your_passphrase

# Optional: Custom redirect URI
# CLOUDKIT_REDIRECT_URI=https://yourapp.com/auth/callback

CloudKit Dashboard Setup

  1. Log into CloudKit Dashboard

  2. Select your addTaskManager container

  3. Go to API Access → Server-to-Server Keys

  4. Create a new JavaScript API token

  5. Add your web app's domain to allowed origins

  6. Copy the API token to CLOUDKIT_API_TOKEN

Usage with Claude Desktop

Add to your Claude Desktop MCP configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "addTaskManager": {
      "command": "node",
      "args": ["/path/to/addtaskmanager-mcp-server/dist/index.js"],
      "env": {
        "NODE_ENV": "production",
        "CLOUDKIT_CONTAINER_ID": "iCloud.com.yourapp.zentasktic",
        "CLOUDKIT_API_TOKEN": "your_api_token_here",
        "CLOUDKIT_ENVIRONMENT": "production",
        "ENCRYPTION_KEY": "your_32_byte_encryption_key_here"
      }
    }
  }
}

For development:

{
  "mcpServers": {
    "addTaskManager": {
      "command": "npm",
      "args": ["run", "dev"],
      "cwd": "/path/to/addtaskmanager-mcp-server",
      "env": {
        "NODE_ENV": "development",
        "CLOUDKIT_CONTAINER_ID": "iCloud.com.yourapp.zentasktic",
        "CLOUDKIT_API_TOKEN": "your_api_token_here"
      }
    }
  }
}

Usage with Web App

  1. Implement Apple Sign-In on your web app

  2. Get user's CloudKit web auth token

  3. Call authenticate_user with the token

  4. Start using realm-specific operations

Example authentication flow:

// After Apple Sign-In success
const authResult = await mcp.callTool('authenticate_user', {
  webAuthToken: user.cloudKitWebAuthToken
});

// Now you can use other tools
const tasks = await mcp.callTool('get_tasks_by_realm', {
  realm: 'assess'
});

ADD Framework Rules

The server enforces these ADD framework restrictions:

Assess Realm

  • ✅ Create/edit task content (title, body)

  • ✅ Create projects and ideas

  • ❌ Assign contexts or due dates

  • ❌ Mark as complete

Decide Realm

  • ✅ Assign contexts to tasks/projects

  • ✅ Set due dates and alerts

  • ✅ Move items between realms

  • ❌ Edit task/project content

  • ❌ Mark as complete

Do Realm

  • ✅ Mark tasks/projects as complete

  • ✅ View items (read-only)

  • ❌ Edit any content

  • ❌ Assign contexts or dates

Development

# Clone and install
git clone https://github.com/dragosroua/addtaskmanager-mcp-server.git
cd addtaskmanager-mcp-server
npm install

# Setup environment
cp .env.example .env
# Edit .env with your CloudKit credentials

# Development mode with TypeScript compilation
npm run dev

# Production build
npm run build

# Start built server
npm start

# Code quality
npm run lint
npm run typecheck

# Test (when available)
npm test

Project Structure

src/
├── config/
│   └── production.ts          # Environment-based configuration
├── services/
│   ├── CloudKitService.ts     # CloudKit integration
│   └── UserAuthService.ts     # User authentication
├── types/
│   └── cloudkit.ts           # TypeScript type definitions
└── index.ts                  # Main MCP server implementation

Development Notes

  • Uses ESM modules (type: "module" in package.json)

  • TypeScript compiled to dist/ directory

  • Supports both development and production CloudKit environments

  • Environment-based configuration with security considerations

  • Comprehensive type definitions for CloudKit integration

Architecture

AI Assistant (Claude Desktop) → MCP Server → CloudKit Services
                                    ↓
                            Environment Config
                            Security Controls
                            User Authentication
                                    ↓
                            ADD Framework Rules
                                    ↓
                            addTaskManager Data
                            (User's iCloud Container)

Component Overview

  • MCP Server: Model Context Protocol server implementation

  • CloudKit Integration: Production-ready CloudKit Web Services client

  • Authentication: Apple ID-based user authentication with session management

  • Security Layer: Encryption, rate limiting, audit logging, CORS protection

  • ADD Framework: Realm-based business logic enforcement

  • Type Safety: Comprehensive TypeScript definitions

Security

  • Environment-Based Security: Different security profiles for development/production

  • User Authentication: Apple ID authentication with CloudKit web auth tokens

  • Session Management: Secure session handling with configurable timeouts

  • Data Encryption: Configurable encryption keys for sensitive data

  • Rate Limiting: Configurable request rate limiting with user-specific limits

  • CORS Protection: Configurable allowed origins for web app integration

  • Audit Logging: Comprehensive operation logging for security monitoring

  • Data Isolation: Users can only access their own addTaskManager data

  • Realm Enforcement: ADD framework rules prevent unauthorized operations

About the ADD Framework

The ADD (Assess-Decide-Do) framework was created by Dragos Roua as an alternative to GTD (Getting Things Done). It emphasizes:

  • Sequential Processing: Items flow through realms in order

  • Cognitive Load Management: Each realm has specific, limited functions

  • Balanced Productivity: Maintains efficiency while preserving creativity and well-being

Learn more: dragosroua.com

Available Tools

38 tools
assess_add_task_to_ideaC

Add an existing task to an idea in Assess realm.

Inputs: taskRecordName (required), ideaRecordName (required).

assess_add_task_to_projectC

Add an existing task to a project in Assess realm.

Inputs: taskRecordName (required), projectRecordName (required).

assess_archive_project_to_collectionC

Archive a project to a collection.

Inputs: projectRecordName (required), collectionRecordName (required).

assess_archive_task_to_collectionC

Archive a task to a collection.

Inputs: taskRecordName (required), collectionRecordName (required).

assess_create_collectionC

Create a new collection in Assess realm.

Inputs: collectionName (required).

assess_create_contextC

Create a new context in Assess realm.

Inputs: contextName (required).

assess_create_ideaB

Capture a new idea (always starts in Assess realm).

Inputs: ideaName (required), collectionRecordName.

assess_create_projectC

Create a new project in Assess realm.

Inputs: projectName (required), startDate, collectionRecordName.

assess_create_taskC

Create a new task in Assess realm (content editing, no contexts/dates).

Inputs: taskName (required), startDate, taskPriority, projectRecordName, +1 more.

assess_edit_ideaC

Edit idea content in Assess realm.

Inputs: ideaRecordName (required), ideaName.

assess_edit_projectC

Edit project content in Assess realm.

Inputs: projectRecordName (required), projectName.

assess_edit_taskC

Edit task content in Assess realm (taskName, priority).

Inputs: taskRecordName (required), taskName, taskPriority.

assess_remove_task_from_ideaC

Remove a task from an idea in Assess realm.

Inputs: taskRecordName (required), ideaRecordName (required).

assess_remove_task_from_projectC

Remove a task from a project in Assess realm.

Inputs: taskRecordName (required), projectRecordName (required).

authenticate_userC

Authenticate user with Apple ID to access their addTaskManager data

Inputs: webAuthToken (required).

decide_assign_contextC

Assign contexts to tasks/projects in Decide realm.

Inputs: itemRecordName (required), itemType (required), contextRecordName (required).

decide_move_project_to_assess_from_decideC

Move project to Assess realm from Decide realm.

Inputs: projectRecordName (required).

decide_move_project_to_doC

Move project to Do realm from Decide realm.

Inputs: projectRecordName (required).

decide_move_task_to_assess_from_decideC

Move task to Assess realm from Decide realm.

Inputs: taskRecordName (required).

decide_move_task_to_doC

Move task to Do realm from Decide realm.

Inputs: taskRecordName (required).

decide_set_project_intervalC

Set project interval (start date and end date) in Decide realm.

Inputs: projectRecordName (required), startDate (required), endDate (required).

decide_set_task_alertC

Set task alerts in Decide realm.

Inputs: taskRecordName (required), alertDateTime (required).

decide_set_task_due_dateC

Set due date for a task in Decide realm.

Inputs: taskRecordName (required), endDate (required).

do_mark_project_as_doneC

Mark projects as completed in Do realm.

Inputs: projectRecordName (required).

do_mark_task_as_doneC

Mark tasks as completed in Do realm.

Inputs: taskRecordName (required).

get_collectionsB

Get all collections.

Inputs: no named parameters.

get_ideasC

Get all ideas.

Inputs: no named parameters.

get_projects_by_realmC

Filter projects by realm.

Inputs: realm (required).

get_ready_items_in_decideB

Find ready to do items (tasks + projects) in Decide realm.

Inputs: no named parameters.

get_stalled_items_in_decideB

Find stalled items (tasks + projects) in Decide realm.

Inputs: no named parameters.

get_tasks_by_contextC

Filter by context.

Inputs: contextRecordName (required).

get_tasks_by_realmC

Filter tasks by realm.

Inputs: realm (required).

get_tasks_overdue_in_doB

Find tasks overdue in Do realm.

Inputs: no named parameters.

get_tasks_soon_in_doB

Find tasks due soon in Do realm.

Inputs: no named parameters.

get_tasks_today_in_doB

Find tasks due today in Do realm.

Inputs: no named parameters.

get_tasks_tomorrow_in_doA

Find tasks due tomorrow in Do realm.

Inputs: no named parameters.

get_undecided_items_in_decideB

Find undecided items (tasks + projects) in Decide realm.

Inputs: no named parameters.

moveToRealmC

Move a task or project to a specific realm.

Inputs: itemRecordName (required), itemType (required), realmId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    C2.8/5.0

    Scored across 38 tools

    Disambiguation3/5

    The tools have clear purposes within their realms (Assess, Decide, Do) and operations (create, edit, move, get), but there is significant overlap in functionality across realms. For example, multiple 'move' tools exist for tasks and projects between realms, and many 'get' tools filter by similar criteria (realm, context, date), which could cause confusion about which to use for specific queries.

    Naming Consistency4/5

    Most tools follow a consistent snake_case pattern with a clear structure: realm_verb_noun or verb_noun_in_realm. However, there are minor deviations like 'authenticate_user' (no realm prefix) and 'moveToRealm' (camelCase, inconsistent with others), which slightly disrupt the overall consistency.

    Tool Count2/5

    With 38 tools, the count is excessive for a task management server, leading to potential bloat and confusion. Many tools could be consolidated (e.g., multiple 'get' filters into one with parameters), and the high number suggests over-specialization rather than a well-scoped set, making it heavy for agents to navigate.

    Completeness5/5

    The tool set provides comprehensive coverage for task management across Assess, Decide, and Do realms, including CRUD operations (create, edit, get), lifecycle management (move, archive, mark as done), and filtering by various criteria (realm, context, date). No obvious gaps are present; agents can handle full workflows from idea capture to completion.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Provides API access to a locally-hosted task management system with features for creating, updating, and organizing tasks, including support for urgency levels, effort estimates, subtasks, and bi-directional sync with Obsidian markdown files.
      12
      17
      MIT
    • A
      license
      B
      quality
      B
      maintenance
      Enables AI-powered task management in OmniFocus with support for project reviews, planned dates, repeating tasks, custom perspectives, hierarchical subtasks, and advanced filtering. Perfect for Claude AI integration with comprehensive CRUD operations for tasks, projects, and folders.
      31
      2
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Enables safe read and edit operations on Things 3 tasks, projects, and checklists using only documented AppleScript and URL scheme APIs, without accessing private databases.
      12
      1
      MIT