The default configuration advertises the task tools and withholds project creation, update and deletion, so an agent that misreads an instruction cannot remove a project. That is the right default for a to-do list you actually rely on; the tools still exist if you decide you want them. Everything runs over stdio against your own token, with no intermediate service.
A stdio server over the Todoist REST API, with a visibility layer on top: which tools are advertised to the client is a configuration decision, so a setup can expose task management while keeping project creation and deletion out of reach.
- Tasks listed, optionally narrowed by `project_id`, a Todoist `filter` expression and a `limit` — `todoist_get_tasks`
- A task created with content plus optional description, project, priority, due-date string and labels — `todoist_create_task`
- A task updated by id, and a task closed as complete — `todoist_update_task`, `todoist_close_task`
- Projects listed — `todoist_get_projects`
- Project creation, update and deletion, implemented but kept out of the advertised set by default — `todoist_create_project`, `todoist_update_project`, `todoist_delete_project`
A Todoist API token in `TODOIST_API_TOKEN`, created in the Todoist App Console. Node.js 18+, and `tsx` to run the entry script. Install with `npm install`, build with `npm run build` inside `packages/mcp-server`, then launch `script/run-mcp-server.ts` over stdio from your client's config. Works with Cursor, Claude Desktop or any client that speaks stdio.
One command plus a key — npm install, then supply credentials
