Todoist MCP
OFFICIAL SERVERDoist's own MCP server for reading and managing tasks, projects and labels in a Todoist account
Read and change tasks, projects, labels, comments and time entries in a Kaneo workspace
Official · kaneo.app TypeScript Local · stdio Productivity
63 popularity score ★ 9.7k ↓ 641/wk
Opens the app, which asks before it adds the server.
claude mcp add kaneo -- npx -y @kaneo/mcp serve{
"mcpServers": {
"kaneo": {
"command": "npx",
"args": [
"-y",
"@kaneo/mcp",
"serve"
]
}
}
}{
"mcpServers": {
"kaneo": {
"command": "npx",
"args": [
"-y",
"@kaneo/mcp",
"serve"
]
}
}
}{
"servers": {
"kaneo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@kaneo/mcp",
"serve"
]
}
}
}[mcp_servers.kaneo]
command = "npx"
args = ["-y", "@kaneo/mcp", "serve"]gemini mcp add --scope user kaneo npx -- -y @kaneo/mcp serveOpens the app, which asks before it adds the server.
git clone https://github.com/usekaneo/kaneo.git
cd kaneo
pnpm install
pnpm --filter @kaneo/mcp run buildclaude mcp add kaneo -- pnpm --filter @kaneo/mcp run start{
"mcpServers": {
"kaneo": {
"command": "pnpm",
"args": [
"--filter",
"@kaneo/mcp",
"run",
"start"
]
}
}
}{
"mcpServers": {
"kaneo": {
"command": "pnpm",
"args": [
"--filter",
"@kaneo/mcp",
"run",
"start"
]
}
}
}{
"servers": {
"kaneo": {
"type": "stdio",
"command": "pnpm",
"args": [
"--filter",
"@kaneo/mcp",
"run",
"start"
]
}
}
}[mcp_servers.kaneo]
command = "pnpm"
args = ["--filter", "@kaneo/mcp", "run", "start"]gemini mcp add --scope user kaneo pnpm -- --filter @kaneo/mcp run startKANEO_API_URL |
Optional: Origin of the Kaneo API, without /api; defaults to http://localhost:1337. |
|---|---|
KANEO_API_KEY |
Optional: Kaneo API key sent as a Bearer token; skips the browser device sign-in, for headless or Docker use. |
KANEO_MCP_CLIENT_ID |
Optional: Device-flow client ID, default kaneo-mcp; must be listed in the server's DEVICE_AUTH_CLIENT_IDS. |
Kaneo is an open source project management app with kanban boards, run either on Kaneo Cloud or on your own server. This is the MCP server its own team maintains inside the main Kaneo repository and publishes to npm as @kaneo/mcp. It gives an assistant 38 tools covering the signed-in user's workspaces: listing and searching projects and tasks, creating, editing, moving, duplicating and deleting tasks, setting status, assignee and due date, adding comments, logging time, managing labels and linking tasks to one another.
There are two ways to connect, and both expose the same tool set. Every Kaneo instance has a built-in Streamable HTTP endpoint at /api/mcp, protected by OAuth 2.1 with PKCE; the Kaneo docs recommend it for self-hosted setups because it needs no extra process. The npm package is a local stdio server for clients that only speak stdio. It signs in through Kaneo's device authorization flow on the first tool call (it prints a code, opens the browser and waits for approval) and caches the token on disk, or it can use a Kaneo API key instead for headless and Docker use.
Running npx @kaneo/mcp in a terminal starts an interactive installer that writes the server into the config of Cursor (user or project), Claude Desktop or a custom JSON file; the serve subcommand starts the stdio server directly. The API address defaults to a local instance on port 1337 and is changed with KANEO_API_URL.
| Runtime | Node.js 24+ |
|---|
Node.js 24 or newer for the npm package. A reachable Kaneo instance, either Kaneo Cloud or a self-hosted Kaneo API (default address http://localhost:1337), and a Kaneo account on it. Browser access to the Kaneo web app to approve the device sign-in, or a Kaneo API key created under Settings, Account, Developer. A self-hosted server must allow the kaneo-mcp client ID in DEVICE_AUTH_CLIENT_IDS, which it does by default.
It only works on Kaneo data the signed-in user can already see; it does not reach other project tools. Time entries can be created and edited but not deleted, since the Kaneo API has no delete endpoint for them. Status values must be column slugs from list_project_columns, and assignees need user IDs from list_workspace_members. Running the package bare in a terminal opens the installer menu rather than the server; the server starts when launched without a TTY or with the serve subcommand.
Suits teams already using Kaneo, on its cloud or self-hosted, who want an assistant to triage, create and update tasks and log time. Because the server is published by the Kaneo team and every instance ships the same tools over HTTP, users whose client supports Streamable HTTP with OAuth can skip the package and connect to their instance's /api/mcp; the npm package is for stdio-only clients or headless setups with an API key. Since many tools write and some delete, it is less suited to read-only use. Teams on Jira, Linear or another tracker need that product's own server instead.
whoamilist_workspaceslist_workspace_memberslist_notificationssearchlist_projectsget_projectcreate_projectupdate_projectlist_project_columnslist_tasksget_taskget_task_by_ticket_idcreate_taskduplicate_taskupdate_taskdelete_taskmove_taskupdate_task_statusupdate_task_assigneeupdate_task_due_datelist_task_activitylist_task_time_entriesget_time_entrycreate_time_entryupdate_time_entrylist_task_commentscreate_task_commentupdate_task_commentdelete_task_commentlist_workspace_labelscreate_labelattach_label_to_taskdetach_label_from_taskdelete_labelcreate_task_relationget_task_relationsdelete_task_relation