Skip to main content
Glama
dragosroua

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: DeltaTask 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

Latest Blog Posts

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/dragosroua/addtaskmanager-mcp-server'

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