Todoist MCP Server Cursor IDE Setup 2026: mcp.json + OAuth
Todoist MCP server Cursor IDE setup 2026: the official Doist remote endpoint at ai.todoist.net/mcp, the exact mcp.json block using mcp-remote, OAuth vs local API-key setup, the tool list, and the errors that keep Todoist tasks out of Cursor chat.
How do you set up the Todoist MCP server in Cursor? Add a todoist entry under mcpServers in ~/.cursor/mcp.json that runs npx -y mcp-remote https://ai.todoist.net/mcp. Restart Cursor, ask it to do something with your tasks, and approve the OAuth grant that opens in your browser. There's no API token to generate for this path — the official Doist server authenticates the same way logging into Todoist on the web does.
This page owns Todoist MCP in Cursor: the official Doist/todoist-mcp server, its remote OAuth path, the local API-key path for people who'd rather not run a bridge process, and the actual tool inventory the repository ships as of this writing. It is not a general project-management guide — if your team tracks work in Asana, Trello, ClickUp, or Linear instead, those have their own pages linked at the bottom.
Why this is a different setup shape than Jira or Asana
Todoist's MCP server is maintained by Doist, the company that builds Todoist, and it's genuinely new as MCP servers on this site go — the repository describes itself as being in its early stages, with tools still being added. That matters for two practical reasons: the tool surface is smaller than a mature server like GitHub's or Stripe's, and Doist's own README is the only place worth trusting for the current URL and tool list, because a screenshot from a few months ago may already be stale on a project moving this fast.
Quick reference
| Maintainer | Doist (official) |
| Remote URL | https://ai.todoist.net/mcp |
| Bridge package | mcp-remote (npx, no install needed) |
| Auth (remote) | OAuth, browser-based, on first tool call |
| Auth (local dev) | TODOIST_API_KEY environment variable |
| Local package | @doist/todoist-mcp (npm) |
| Cursor version needed | Recent build with mcp-remote-style stdio bridging (no hard version floor published by Doist) |
| Covers | Tasks, projects, sections, labels, filters, comments, reminders, productivity stats — not Todoist's separate Calendar or Boards views |
What the Todoist MCP server actually does
The tool inventory in the Doist/todoist-mcp repository is broader than "add a task, list some tasks." As of this writing it groups into a few clusters:
add-tasks, update-tasks, complete-tasks, uncomplete-tasks, find-tasks, find-tasks-by-date, find-completed-tasks, reschedule-tasks, delete-objectadd-projects, update-projects, find-projects, project-move, add-sections, update-sections, find-sections, reorder-objectsadd-labels, update-labels, find-labels, add-filters, update-filters, find-filtersadd-comments, update-comments, find-comments, find-project-collaborators, manage-assignmentsadd-reminders, update-reminders, find-reminders, find-activityget-overview, get-productivity-stats, get-project-health, get-project-activity-stats, get-workspace-insights, analyze-project-healthexport-project-template, import-project-template, view-attachmentsearch, fetch — these two exist specifically for OpenAI-style MCP clients that expect a search/fetch pair rather than named tools, and Cursor can use them too if a prompt doesn't map cleanly onto one of the named tools aboveuser-info, list-workspacesThat's a meaningfully deeper surface than most task-tracker MCP servers on this site (Trello and Asana, for comparison, expose a narrower create/read/update set). The reporting tools in particular — get-productivity-stats, get-workspace-insights, analyze-project-health — are worth knowing about even if you never touch them from Cursor day-to-day, because they mean "how's this project actually going" is a real, answerable prompt rather than something you'd have to compute yourself from a task list dump.
Prerequisites
npx can fetch mcp-remote on first run.nvmrcStep 1: Add the remote server to Cursor
Open ~/.cursor/mcp.json for a connection available in every project, or .cursor/mcp.json in a repo root if you only want Todoist wired into that one workspace:
{
"mcpServers": {
"todoist": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://ai.todoist.net/mcp"]
}
}
}
This is the block Doist publishes directly for Cursor in the project README. mcp-remote is a small stdio-to-HTTP bridge — Cursor talks to it over stdio like any local server, and it forwards calls to Doist's hosted endpoint. You are not running Todoist's server logic locally; you're running a thin proxy that happens to be the documented way to reach a streamable-HTTP MCP endpoint from a client that expects a command/args entry.
Step 2: Restart Cursor and authorize
1. Quit and reopen Cursor completely — a partial reload sometimes leaves the previous mcp.json cached.
2. Open a new chat and ask something that requires real Todoist data, for example: "What tasks do I have due today in Todoist?"
3. A browser window opens asking you to log into Todoist (skip this if already logged in) and approve the connection.
4. Approve it. The session is cached locally by mcp-remote; you won't see the browser prompt again unless the grant expires or you revoke it from Todoist's own connected-apps settings.
If the browser window never opens, check Cursor's MCP logs (Command-Shift-U on macOS, then the MCP output channel) for a URL to open by hand — mcp-remote prints one as a fallback when it can't launch a browser automatically, which is common over SSH or in a remote dev container.
Step 3 (alternative): Local setup with an API key
Skip the OAuth flow entirely if your workflow is scripted or you're integrating Todoist calls into something other than interactive Cursor chat — for example, running a tool call from a CI step or a local automation script. Install the package directly:
npm install @doist/todoist-mcp
Copy .env.example to .env in that project and set:
TODOIST_API_KEY=your_todoist_api_token_here
Get the token from Todoist's own Settings → Integrations → Developer page — it's a personal API token, not an OAuth client credential. With the key in place you can run individual tools directly for testing (npm run tool -- add-tasks '{"content": "Ship the changelog"}'), or wire the package into a local stdio mcpServers entry pointing at its own entry file instead of the remote bridge. This path is the right one if your security policy prefers a revocable token you generate yourself over a cached OAuth session, or if you want Todoist tool calls available outside of Cursor's browser-capable environment.
Practical workflows
Daily standup prep:
List everything I have due today and tomorrow in Todoist, grouped by project.
Filing work as it comes up mid-conversation:
Add a task to my "Backend" project: "Investigate the webhook retry bug from the incident channel," due Friday, priority 2.
Project health check before a planning meeting:
Pull the project health and recent activity for my "Q3 Migration" project in Todoist and summarize what's overdue.
Cleaning up after a sprint:
Find all completed tasks in the "Sprint 14" project from the last two weeks and give me a one-paragraph summary of what shipped.
Bulk rescheduling:
I'm out sick tomorrow. Reschedule everything due tomorrow in my "Personal" project to the day after.
The reschedule-tasks and find-tasks-by-date tools are what make prompts like the last one work in a single round trip instead of a list-then-manually-edit sequence — worth trying once so you know what "it actually moved the dates" looks like versus the model just describing what it would do.
When this setup is more friction than it's worth
If your task list lives entirely inside a bigger tool your team already has MCP access to — Asana or ClickUp handling both project tracking and personal tasks, say — adding a second, personal-scale task manager into the same Cursor session mostly adds tool-selection noise: the model now has two places it could file "remind me to fix this" and no strong signal for which one you meant. Todoist MCP earns its place when Todoist is genuinely where you track your own work, separate from whatever your team uses for shared project tracking, not as a second copy of the same list.
Troubleshooting
Server never appears in Cursor. Confirm the file is ~/.cursor/mcp.json or .cursor/mcp.json, the top-level key is mcpServers, and the JSON parses — a stray trailing comma silently drops every server defined in that file, not just Todoist's.
OAuth browser window never opens. Common in headless or remote-dev-container setups where Cursor can't launch a local browser. Check the MCP output panel for a URL mcp-remote printed as a fallback and open it manually on a machine that does have a browser.
"No tasks found" even though tasks clearly exist. Check which Todoist workspace the OAuth grant actually authorized — list-workspaces is a fast way to confirm Cursor is looking at the workspace you meant, especially if your account belongs to more than one (a personal workspace plus a team one, for instance).
Local API-key path returns 401/403. The token was regenerated or revoked since you copied it into .env, or you copied a token with trailing whitespace. Regenerate from Todoist's Developer settings and re-copy carefully.
Tool calls are slow on first use. npx -y mcp-remote downloads the bridge package fresh if it isn't cached locally — the first call after a Cursor restart can take a few seconds longer than subsequent ones. This is normal npx behavior, not a Todoist-side issue.
A tool you expected doesn't exist yet. The server is genuinely early — Doist's own README flags more tools as still being added. Check the src/tools directory in the Doist/todoist-mcp repository directly if a specific action isn't working; that's the current source of truth ahead of any third-party guide, including this one.
Frequently Asked Questions
Is there an official Todoist MCP server, or only community ones? Both exist. Doist (the company) maintains Doist/todoist-mcp, which is the server this guide covers and the one to prefer for a first setup. Several community servers also exist under different names and package managers — they aren't wrong, but they aren't the one Doist ships updates to.
Do I need a Todoist API token for the recommended setup? No, not for the remote/OAuth path in Step 1 — that's the point of using mcp-remote against the hosted endpoint. A token is only needed for the local development path in Step 3, where you're running the package directly instead of going through OAuth.
What's the exact Todoist MCP server Cursor IDE setup process, start to finish? Add the todoist entry with command: npx, args: ["-y", "mcp-remote", "https://ai.todoist.net/mcp"] to mcp.json, restart Cursor, ask it a Todoist-related question, and approve the OAuth prompt that opens in your browser. No token, no npm install, no local server process for the recommended path.
Can Cursor create and complete tasks, or only read them? Both. add-tasks, update-tasks, complete-tasks, and uncomplete-tasks are all in the current tool set, alongside the read-oriented find-tasks family. Cursor will typically ask for approval before running a write tool, the same as it does for any MCP server's write actions.
Does this work with Todoist for Teams / Business workspaces, or only personal accounts? The OAuth grant covers whatever workspaces your Todoist account belongs to — list-workspaces and find-project-collaborators specifically exist for the multi-workspace, team case. Personal-only accounts simply see one workspace in that list.
Why does the config use npx -y mcp-remote <url> instead of a plain url field? Some MCP clients support a bare url-based remote entry natively; others, depending on version, expect a command/args stdio entry and need a bridge like mcp-remote to reach a streamable-HTTP endpoint. Doist publishes the mcp-remote block specifically because it works across a wider range of client versions than assuming native remote-URL support.
Is my Todoist data safe going through mcp-remote? mcp-remote is a thin, open-source proxy process running locally on your machine — it forwards your authenticated session to Doist's endpoint and back, without a separate credential store of its own. The actual authentication and data access controls are the same OAuth grant and Todoist account permissions you'd have logging in through a browser.
Related guides
Official docs cited
Related guides
- DynamoDB MCP Server Cursor IDE Setup 2026: awslabs.dynamodb-mcp-server
- Elasticsearch MCP Server Cursor IDE Setup (2026): Query Indices and Debug Slow Searches from Chat
- ElevenLabs MCP Server Cursor IDE Setup (2026): Hosted OAuth vs. Local uvx Install
- Exa MCP Server Cursor IDE Setup (2026): Neural Search for Technical Research