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

A TypeScript-based **[Model Context Protocol (MCP)](https://en.wikipedia.org/wiki/Model_Context_Protocol) server** that provides [Todoist](https://www.todoist.com/) task management capabilities to AI assistants. This MCP server is built for use with Claude Desktop and [operates over stdio](https://docs.anthropic.com/en/docs/claude-code/mcp#option-1%3A-add-a-local-stdio-server).

<a href="https://glama.ai/mcp/servers/@bkotos/todoist-mcp">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@bkotos/todoist-mcp/badge" alt="Todoist Server MCP server" />
</a>

**Note:** This MCP server is tailored to my specific workflow with Todoist and may not align with how others use the tool.

## Getting Started

### Prerequisites

- Node.js 18+
- Todoist account with API access

### Install

```bash
git clone <repository-url>
cd todoist-mcp
npm ci
```

### Configure

```bash
cp env.example .env
# Add your Todoist API token to .env
```

### Connect to Claude Desktop

#### 1. Configure Claude Desktop

Edit your Claude Desktop configuration file:

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

#### 2. Add MCP Server Configuration

```json
{
  "mcpServers": {
    "todoist": {
      "command": "$PATH_TO_REPO/start-mcp.sh",
      "args": [],
      "env": {}
    }
  }
}
```

_Replace `$PATH_TO_REPO` with the absolute path of where you cloned this repo._

#### 3. Restart Claude Desktop

Restart Claude Desktop completely for the changes to take effect.

#### 4. Verify Connection

Test the connection by asking Claude to list your Todoist projects or tasks.

TDQS

B3.1/5.0

Scored across 33 tools

Disambiguation2/5

Multiple tools have overlapping purposes, causing confusion. For example, there are three separate search tools (search_tasks, search_tasks_using_and, search_tasks_using_or) that could be consolidated, and several 'list_' tools (e.g., list_brian_time_sensitive_tasks, list_becky_time_sensitive_tasks) are very similar in function but differ only by user or filter. This overlap makes it difficult for an agent to choose the right tool without deep context.

Naming Consistency3/5

The naming is mixed but somewhat readable. Most tools use snake_case and start with verbs like 'get_', 'list_', 'create_', 'update_', 'complete_', which is consistent. However, there are inconsistencies such as 'complete_becky_task' vs. 'complete_task' (one is specific, the other general) and 'search_tasks' vs. 'search_tasks_using_and' vs. 'search_tasks_using_or' (redundant naming). Overall, the pattern is discernible but not fully uniform.

Tool Count2/5

With 33 tools, the count is excessive for a Todoist server, indicating poor scoping. Many tools are highly specific (e.g., get_chores_due_today, get_tickler_tasks) and could be generalized into fewer, more flexible tools. This bloated set increases complexity and reduces usability, as agents must navigate numerous similar tools for basic operations.

Completeness4/5

The tool surface covers core Todoist operations well, including CRUD for tasks (create, update, complete, uncomplete), project and label management, and various querying functions. However, there are minor gaps, such as no direct tool for deleting tasks or managing project settings beyond labels, which might require workarounds but doesn't severely hinder functionality.

Maintenance

ActivityInactive
ResponsivenessNo issues