
Todoist Mcp
io.github.ecfariaPublished by GitHub account ecfariav1.0.1Updated Oct 24, 2026
MCP server for Todoist task management integration
The publisher's own server: Todoist
Overview
Lets an assistant create, list, update, complete, and search Todoist tasks and browse projects through the Todoist API.
- What you can do
- Wraps the Todoist task manager in MCP tools: create tasks with project, section, due date, priority, labels, or parent task; list active tasks with project, section, label, or filter queries; get a task's details; update content, description, due date, priority, or labels; complete a task; list projects; and search tasks by text. It supports natural language due dates such as "next Monday" and applies rate limiting to stay within Todoist's API limits.
- When to use it
- Useful when you want an assistant to manage a Todoist account conversationally — capturing tasks, checking what is due or overdue, updating or completing items, and searching existing tasks — instead of switching to the Todoist app.
- Requirements
- Runs locally over stdio as an npm package (@ecfaria/todoist-mcp-server) and needs Node.js 18 or newer plus npm or yarn. A Todoist account and personal API token are required; the token is supplied through the TODOIST_API_TOKEN environment variable (the manifest lists it as YOUR_API_KEY). Network access to the Todoist API is needed. Desktop client configuration only.
Installation
In SourceWeft
- Open Todoist Mcp in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
Todoist MCP Server
A Model Context Protocol (MCP) server for Todoist task management, enabling Claude to interact with your Todoist tasks and projects.
Features
- ✅ Create, read, update, and complete tasks
- 📋 List tasks with advanced filtering
- 🔍 Search tasks by text content
- 📁 Manage projects
- 🏷️ Support for labels and priorities
- 📅 Natural language date parsing
- ⚡ Rate limiting to stay within API limits
- 🛡️ Comprehensive error handling
Installation
Prerequisites
- Node.js >= 18.0.0
- npm or yarn
- A Todoist account with an API token
From Source
Configuration
1. Get Your Todoist API Token
- Go to Todoist Integrations Settings
- Scroll down to "API token" section
- Copy your personal API token
2. Set Up Environment Variables
Create a .env file in the project root:
Edit .env and add your Todoist API token:
3. Configure Claude Desktop
Add the server to your Claude Desktop configuration file:
Location:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Configuration:
Important: Replace /absolute/path/to/todoist-mcp with the actual absolute path to your project directory.
4. Restart Claude Desktop
After updating the configuration, restart Claude Desktop for the changes to take effect.
Available Tools
todoist_create_task
Create a new task in Todoist with optional project, due date, priority, labels, and parent task for subtasks.
Parameters:
content(required): The task content/titledescription(optional): Task descriptionproject_id(optional): Project ID to add the task tosection_id(optional): Section ID within the projectdue_date(optional): Due date in natural language or YYYY-MM-DD formatpriority(optional): Priority level: 1 (normal), 2 (medium), 3 (high), 4 (urgent)labels(optional): Array of label namesparent_id(optional): Parent task ID to create a subtaskparent_task_name(optional): Parent task name to search for (alternative to parent_id)
Examples:
todoist_list_tasks
List active tasks with optional filters for project, section, label, or custom Todoist filter.
Parameters:
project_id(optional): Filter by project IDsection_id(optional): Filter by section IDlabel(optional): Filter by label namefilter(optional): Todoist filter query (e.g., "today", "overdue", "p1")limit(optional): Maximum number of tasks to return (default: 50, max: 200)
Examples:
todoist_get_task
Get detailed information about a specific task including all metadata.
Parameters:
task_id(required): The task ID to retrieve
Examples:
todoist_update_task
Update an existing task with new content, description, due date, priority, or labels.
Parameters:
task_id(required): The task ID to updatecontent(optional): New task contentdescription(optional): New task descriptiondue_date(optional): New due date (natural language or YYYY-MM-DD)priority(optional): New priority level (1-4)labels(optional): New labels array
Examples:
todoist_complete_task
Mark a task as completed.
Parameters:
task_id(required): The task ID to complete
Examples:
todoist_list_projects
List all projects in Todoist, including inbox and shared projects.
Parameters: None
Examples:
todoist_search_tasks
Search for tasks by text in their content or description.
Parameters:
query(required): Text to search for in task content and descriptionlimit(optional): Maximum number of tasks to return (default: 50, max: 200)
Examples:
Development
Build
Development Mode (Watch)
Run Tests
Run Tests in Watch Mode
Rate Limits
The server respects Todoist's API rate limit of 450 requests per 15 minutes. When the limit is exceeded, the API returns a 429 error which is caught and reported with a helpful error message. You can retry your request after waiting.
Error Handling
All errors are returned with descriptive messages. Common errors include:
- Invalid API token: Check your
.envconfiguration or Claude Desktop config - Task not found: Verify the task ID exists and hasn't been deleted
- Rate limit exceeded: Wait 15 minutes or reduce request frequency
- Network error: Check your internet connection
- Validation error: Review the parameters you're providing to the tool
Natural Language Date Support
The server supports Todoist's natural language date parsing. You can use phrases like:
- "tomorrow"
- "next Monday"
- "every Friday"
- "in 3 days"
- "next week"
- "Dec 25"
You can also use standard date formats:
- "2024-12-31"
- "2024-12-31T14:30:00"
Project Structure
Publishing & Registry
- MCP name:
io.github.ecfaria/todoist-mcp - NPM package:
@ecfaria/todoist-mcp-server - server.json: see the root of this repo for the registry definition
Publishing flow
- Update version numbers as needed (
npm version <patch|minor|major>). - Build the distributable:
npm run build. - Publish to npm:
npm publish --access public(scoped packages default to private). - Validate registry metadata:
mcp-publisher validate. - Publish to the MCP registry:
mcp-publisher publish.
Release notes (v1.0.0)
- Added MCP registry metadata (
mcpName) topackage.json. - Documented the publishing process and registry identity.
- Introduced the canonical
server.jsonreference for registry publication. - Adopted the scoped npm package name
@ecfaria/todoist-mcp-serverto avoid collisions.
Troubleshooting
Server not showing in Claude
- Verify the path in
claude_desktop_config.jsonis absolute and correct - Check that you've built the project (
npm run build) - Ensure the API token is set in the config
- Restart Claude Desktop completely
API Token Invalid
- Go to Todoist Integrations Settings
- Generate a new API token
- Update your
.envfile or Claude Desktop config - Restart the server/Claude Desktop
Tasks Not Showing Up
- Verify you're using the correct project ID or filter
- Check that tasks aren't already completed
- Try listing all tasks without filters to see what's available
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT
Support
Acknowledgments
Built with:
Source: README.md at commit 3bb7e6f
Tools
0Version history
1- v1.0.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Todoist integrations
Todoist
net.todoistOfficial publisher
A remote Todoist MCP server that lets an AI assistant use Todoist on a user's behalf through a set of tools.

Todoist
Published by GitHub account pipeworx-io
Read-only Todoist access through the Pipeworx gateway: list projects, tasks, sections and labels, plus a router that answers questions from a large data…