Skip to main content
Glama

addTaskManager MCP Server

by dragosroua
README.md10 kB
# 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) ## 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) ```bash npm install -g @dragosroua/addtaskmanager-mcp-server ``` ### From Source ```bash 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: ```bash # 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](https://icloud.developer.apple.com/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): ```json { "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: ```json { "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: ```javascript // 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 ```bash # 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](https://dragosroua.com)

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