Todoist Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Todoist Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Model Context Protocol (MCP) server for Todoist task management, enabling Claude to interact with your Todoist tasks and projects.
# Clone the repository
git clone <your-repo-url>
cd todoist-mcp
# Install dependencies
npm install
# Build the project
npm run buildCreate a .env file in the project root:
cp .env.example .envEdit .env and add your Todoist API token:
TODOIST_API_TOKEN=your_actual_token_here
LOG_LEVEL=errorAdd the server to your Claude Desktop configuration file:
Location:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonConfiguration:
{
"mcpServers": {
"todoist": {
"command": "node",
"args": ["/absolute/path/to/todoist-mcp/build/server.js"],
"env": {
"TODOIST_API_TOKEN": "your_actual_token_here"
}
}
}
}Important: Replace /absolute/path/to/todoist-mcp with the actual absolute path to your project directory.
After updating the configuration, restart Claude Desktop for the changes to take effect.
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:
Create a task "Write report" due tomorrow with high priority
Create a task "Buy groceries" in the Shopping project
Create a task "Team meeting" due "next Monday at 2pm"
Create a subtask "Buy milk" under parent task "Go to the supermarket"
Create a subtask "Review slides" under task 8237492837
Add subtask "Call John" to the task "Prepare presentation"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:
List all my tasks
List tasks in project "Work"
List tasks due today
List all overdue tasks with limit 20Get detailed information about a specific task including all metadata.
Parameters:
task_id (required): The task ID to retrieveExamples:
Get details for task 123456789
Show me task 987654321Update 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 arrayExamples:
Update task 123 to have priority 4
Change task 456 due date to "next Friday"
Update task 789 content to "Revised meeting agenda"Mark a task as completed.
Parameters:
task_id (required): The task ID to completeExamples:
Complete task 123456
Mark task 789012 as doneList all projects in Todoist, including inbox and shared projects.
Parameters: None
Examples:
List all my projects
Show me all my Todoist projectsSearch 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:
Search for tasks containing "meeting"
Find all tasks with "budget" in themnpm run buildnpm run devnpm testnpm run test:watchThe 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.
All errors are returned with descriptive messages. Common errors include:
.env configuration or Claude Desktop configThe server supports Todoist's natural language date parsing. You can use phrases like:
You can also use standard date formats:
todoist-mcp/
├── src/
│ ├── server.ts # Main MCP server entry point
│ ├── types/ # TypeScript type definitions
│ ├── api/ # Todoist API client and errors
│ ├── tools/ # MCP tool implementations
│ └── utils/ # Utilities (logger, rate limiter)
├── tests/
│ └── unit/ # Unit tests
├── build/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
├── .env.example
└── README.mdio.github.ecfaria/todoist-mcp@ecfaria/todoist-mcp-servernpm version <patch|minor|major>).npm run build.npm publish --access public (scoped packages default to private).mcp-publisher validate.mcp-publisher publish.mcpName) to package.json.server.json reference for registry publication.@ecfaria/todoist-mcp-server to avoid collisions.claude_desktop_config.json is absolute and correctnpm run build).env file or Claude Desktop configContributions are welcome! Please feel free to submit a Pull Request.
MIT
Built with:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.