This MCP Todoist server enables Claude to interact with your Todoist account, allowing you to manage tasks, projects, and labels directly through the Claude Desktop interface.
Install the MCP server using UV:
uvx mcp-todoist
Get your Todoist API token from the Todoist Integrations settings
Configure the environment variable:
# Add to your .env file or environment
TODOIST_API_TOKEN=your_api_token_here
Configure Claude Desktop:
// ~/.config/claude/claude_desktop_config.json or equivalent
{
"mcpServers": {
"mcp-todoist": {
"command": "uvx",
"args": ["mcp-todoist"]
}
}
}
Run the server in a terminal window:
# Set your API token
export TODOIST_API_TOKEN=your_api_token_here
# Run the server using UV
uvx mcp-todoist
Keep this terminal window open while using Claude Desktop.
start-todoist-mcp.sh
with the following content:#!/bin/bash
# Set environment variables
export MCP_SERVER_NAME="mcp-todoist"
export MCP_LOG_LEVEL="INFO"
export MCP_DEBUG="true"
export TODOIST_API_TOKEN="your_todoist_api_token_here"
# Path to your Todoist MCP server
MCP_PATH="/path/to/mcp-todoist"
# Log file for debugging
LOG_FILE="${MCP_PATH}/todoist-mcp.log"
# Create log file or clear existing one
echo "Starting Todoist MCP server at $(date)" > "${LOG_FILE}"
# Navigate to the project directory
cd "${MCP_PATH}"
# Start the MCP server
echo "Starting MCP server from ${MCP_PATH}" >> "${LOG_FILE}"
uv run python -m mcp_todoist >> "${LOG_FILE}" 2>&1
chmod +x start-todoist-mcp.sh
{
"mcpServers": {
"mcp-todoist": {
"command": "/absolute/path/to/start-todoist-mcp.sh",
"args": []
}
}
}
Once configured, you can ask Claude to interact with your Todoist account with commands like:
list-tasks
- Retrieve and filter taskscreate-task
- Create a new taskupdate-task
- Update an existing taskcomplete-task
- Mark a task as completeddelete-task
- Delete a tasklist-projects
- Get all projectscreate-project
- Create a new projectupdate-project
- Update a projectdelete-project
- Delete a projectlist-labels
- Get all labelscreate-label
- Create a new labelupdate-label
- Update a labeldelete-label
- Delete a labelsearch
- Search across tasks with complex filteringIf you encounter issues with the MCP server, try these debugging strategies:
If using the startup script, check the log file:
cat /path/to/mcp-todoist/todoist-mcp.log
Set the MCP_DEBUG
environment variable to true
for more verbose logging:
export MCP_DEBUG=true
uvx mcp-todoist
Ensure your Todoist API token is correct and still valid:
# Test the token with a simple curl request
curl -X GET \
https://api.todoist.com/rest/v2/projects \
-H "Authorization: Bearer $TODOIST_API_TOKEN"
Debug MCP servers with the inspector tool:
npx @modelcontextprotocol/inspector uvx mcp-todoist
There are two ways to add an MCP server to Cursor. The most common way is to add the server globally in the ~/.cursor/mcp.json
file so that it is available in all of your projects.
If you only need the server in a single project, you can add it to the project instead by creating or adding it to the .cursor/mcp.json
file.
To add a global MCP server go to Cursor Settings > MCP and click "Add new global MCP server".
When you click that button the ~/.cursor/mcp.json
file will be opened and you can add your server like this:
{
"mcpServers": {
"cursor-rules-mcp": {
"command": "npx",
"args": [
"-y",
"cursor-rules-mcp"
]
}
}
}
To add an MCP server to a project you can create a new .cursor/mcp.json
file or add it to the existing one. This will look exactly the same as the global MCP server example above.
Once the server is installed, you might need to head back to Settings > MCP and click the refresh button.
The Cursor agent will then be able to see the available tools the added MCP server has available and will call them when it needs to.
You can also explictly ask the agent to use the tool by mentioning the tool name and describing what the function does.