Skip to main content
← Back to Articles
mcptodoistcursoridesetup2026task management

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.

By Web MCP GuideSeptember 4, 202613 min read

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

MaintainerDoist (official)
Remote URLhttps://ai.todoist.net/mcp
Bridge packagemcp-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 neededRecent build with mcp-remote-style stdio bridging (no hard version floor published by Doist)
CoversTasks, 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:

  • Task CRUD: add-tasks, update-tasks, complete-tasks, uncomplete-tasks, find-tasks, find-tasks-by-date, find-completed-tasks, reschedule-tasks, delete-object

  • Project structure: add-projects, update-projects, find-projects, project-move, add-sections, update-sections, find-sections, reorder-objects

  • Organization: add-labels, update-labels, find-labels, add-filters, update-filters, find-filters

  • Collaboration: add-comments, update-comments, find-comments, find-project-collaborators, manage-assignments

  • Reminders and activity: add-reminders, update-reminders, find-reminders, find-activity

  • Reporting: get-overview, get-productivity-stats, get-project-health, get-project-activity-stats, get-workspace-insights, analyze-project-health

  • Templates and attachments: export-project-template, import-project-template, view-attachment

  • Generic: search, 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 above

  • Account: user-info, list-workspaces
  • That'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


  • Cursor IDE with MCP support (any reasonably current build — Doist doesn't publish a specific version floor for the remote path)

  • Node.js installed, so npx can fetch mcp-remote on first run

  • A Todoist account, and a browser session you're already logged into (makes the OAuth step one click instead of a login-then-approve flow)

  • For the local/API-key path only: Node.js matching the version pinned in the repo's .nvmrc
  • Step 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


  • Asana MCP Server: Cursor IDE Setup (2026)

  • Trello MCP Server: Cursor IDE Setup (2026)

  • ClickUp MCP Server: Cursor IDE Setup (2026)

  • Linear MCP Server: Cursor IDE Setup (2026)

  • Cursor IDE MCP Setup: Complete Guide

  • How to Authenticate MCP Servers: OAuth and API Keys

  • Debug MCP Server Issues
  • Official docs cited


  • Doist/todoist-mcp (official repository)

  • Todoist MCP Server listing

  • Cursor MCP reference

  • Related guides