Todoist MCP

Todoist MCP

Connects LLMs to Todoist for comprehensive task and project management, enabling natural language task creation, updates, collaboration, and productivity tracking through the Todoist API.

Category
Visit Server

README

Todoist MCP

<!-- TODO: redo auth tests and write extensive tests generally --> <!-- TODO: global review & feedback --> <!-- TODO: token refresh functionality --> <!-- TODO: integrate MCP auth spec with todoist oauth api? docs: https://modelcontextprotocol.io/specification/draft/basic/authorization -->

Note: predictably obsoleted by Todoist AI SDK, see here.


Connect this Model Context Protocol server to your LLM to interact with Todoist.

Functionality

This integration implements all the APIs available from the Todoist TypeScript Client, providing access to:

Task Management

  • Create tasks (with content, descriptions, due dates, priorities, labels, and more)
  • Create tasks with natural language (e.g., "Submit report by Friday 5pm #Work")
  • Retrieve tasks (individual, filtered, or all tasks)
  • Retrieve completed tasks (by completion date or due date)
  • Get productivity statistics
  • Update tasks
  • Move tasks (individually or in batches)
  • Close/reopen tasks
  • Delete tasks

Project Management

  • Create, retrieve, update, and delete projects

Section Management

  • Create, retrieve, update, and delete sections within projects

Comment Management

  • Add, retrieve, update, and delete comments for tasks or projects

Label Management

  • Create, retrieve, update, and delete labels
  • Manage shared labels

Collaboration

  • Get collaborators for projects

Setup

Build the server app:

bun install
bun run build

Run in development

TODOIST_API_KEY=<key> bun dev

Docker deployment:

docker compose up -d

Debugging:

Use the inspector to debug the server:


bunx @modelcontextprotocol/inspector

Configure Claude:

You must install the Claude desktop app which supports MCP.

You can get your Todoist API key from Todoist > Settings > Integrations > Developer.

Then, in your claude_desktop_config.json, add a new MCP server:

{
    "mcpServers": {
        "default-server": {
            "type": "streamable-http",
            "url": "http://localhost:3000/mcp",
            "note": "For Streamable HTTP connections, add this URL directly in your MCP Client"
        }
    }
}

You can now launch Claude desktop app and ask to update Todoist.

🔐 Security Features

This MCP server has been secured with enterprise-grade security measures:

  • Authentication Required: JWT Bearer tokens or API key authentication
  • Rate Limiting: Prevents abuse with configurable limits
  • Input Validation: Comprehensive request validation and sanitization
  • Security Headers: CORS, CSP, HSTS, and other security headers
  • Logging & Monitoring: Security event logging and request monitoring
  • Environment Configuration: Secure configuration via environment variables

See SECURITY.md for detailed security documentation.

Quick Security Setup

  1. Generate secure tokens:

    npm run setup-security
    
  2. Create .env file:

    cp .env.example .env
    # Add your generated tokens and Todoist API key
    
  3. Required Environment Variables:

    JWT_SECRET=your_generated_jwt_secret_here
    TODOIST_API_KEY=your_todoist_api_key_here
    

Authentication

The server supports two authentication methods:

Method 1: API Key (Recommended for scripts)

curl -X POST http://localhost:3000/mcp \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

Method 2: JWT Bearer Token (Recommended for applications)

curl -X POST http://localhost:3000/mcp \
  -H "Authorization: Bearer YOUR_JWT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 1}'

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured