Skip to main content
Glama
README.md
# Todoist MCP Server (TypeScript)

A Model Context Protocol (MCP) server for interacting with the Todoist API. This server provides CRUD operations for both Tasks and Projects through a standardized MCP interface, built with TypeScript and the official MCP SDK.

## Features

### Project Operations
- ✅ Create new projects
- ✅ Get project details
- ✅ List all projects
- ✅ Update project properties
- ✅ Delete projects

### Task Operations
- ✅ Create new tasks
- ✅ Get task details
- ✅ List tasks with filtering
- ✅ Update task properties
- ✅ Complete tasks
- ✅ Reopen completed tasks
- ✅ Delete tasks

## Setup

### Prerequisites
- Node.js 18+ 
- npm or yarn
- Todoist API token

### Installation

1. Clone or download the server code
2. Install dependencies:
   ```bash
   npm install
   ```

3. Get your Todoist API token:
   - Go to [Todoist Integrations](https://todoist.com/prefs/integrations)
   - Copy your API token

4. Set the environment variable:
   ```bash
   export TODOIST_API_TOKEN=your_token_here
   ```

### Building and Running

```bash
# Build the TypeScript code
npm run build

# Run the server
npm start

# Or build and run in one command
npm run dev

# For development with auto-rebuild
npm run watch
```

## Configuration for Claude Desktop

Add the following to your Claude Desktop configuration file:

**For macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**For Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`

```json
{
  "mcpServers": {
    "todoist": {
      "command": "npx",
      "args": ["-y", "@angdrew/todoist-mcp-server"],
      "env": {
        "TODOIST_API_TOKEN": "your_token_here"
      }
    }
  }
}
```

## Available Tools

### Project Tools

#### `create_project`
Create a new project in Todoist
- **name** (required): Project name
- **color** (optional): Project color
- **viewStyle** (optional): View style ("list" or "board")
- **parentId** (optional): Parent project ID for sub-projects
- **isFavorite** (optional): Mark as favorite

#### `get_project`
Get project details by ID
- **projectId** (required): Project ID

#### `list_projects`
List all projects (no parameters)

#### `update_project`
Update project properties
- **projectId** (required): Project ID
- **name** (optional): New name
- **color** (optional): New color
- **viewStyle** (optional): New view style
- **isFavorite** (optional): Favorite status

#### `delete_project`
Delete a project
- **projectId** (required): Project ID

### Task Tools

#### `create_task`
Create a new task
- **content** (required): Task content
- **description** (optional): Task description
- **projectId** (optional): Project ID
- **dueString** (optional): Due date in natural language
- **dueDate** (optional): Due date (YYYY-MM-DD)
- **dueDatetime** (optional): Due datetime (RFC3339)
- **priority** (optional): Priority 1-4 (4 is highest)
- **labels** (optional): Array of labels

#### `get_task`
Get task details by ID
- **taskId** (required): Task ID

#### `list_tasks`
List tasks with optional filters
- **projectId** (optional): Filter by project ID
- **filter** (optional): Filter expression (e.g., 'today', 'overdue')
- **label** (optional): Filter by label

#### `update_task`
Update task properties
- **taskId** (required): Task ID
- **content** (optional): New content
- **description** (optional): New description
- **dueString** (optional): New due date
- **dueDate** (optional): New due date (YYYY-MM-DD)
- **dueDatetime** (optional): New due datetime
- **priority** (optional): New priority
- **labels** (optional): New labels array

#### `complete_task`
Mark a task as completed
- **taskId** (required): Task ID

#### `reopen_task`
Reopen a completed task
- **taskId** (required): Task ID

#### `delete_task`
Delete a task
- **taskId** (required): Task ID

## Usage Examples

Once configured with Claude Desktop, you can use natural language commands:

- "Create a new project called 'Website Redesign'"
- "List all my projects"
- "Add a task 'Review mockups' to the Website Redesign project"
- "Show me all tasks due today"
- "Mark task 12345 as completed"
- "Update the task content to 'Review and approve mockups'"

## Error Handling

The server includes comprehensive error handling for:
- Invalid API tokens
- Missing required parameters
- API rate limits
- Network errors
- Invalid project/task IDs

## Development

### Building
```bash
npm run build
```

### Watch Mode
```bash
npm run watch
```

### Project Structure
```
src/
├── index.ts          # Main server implementation
├── types.ts          # TypeScript type definitions (optional)
build/                # Compiled JavaScript output
├── index.js
├── index.d.ts
package.json          # Project dependencies and scripts
tsconfig.json         # TypeScript configuration
```

## Dependencies

- **@modelcontextprotocol/sdk**: Official MCP SDK for TypeScript
- **@doist/todoist-api-typescript**: Official Todoist API TypeScript client
- **zod**: Schema validation library

## License

This project is provided as-is for educational and personal use.