任务管理服务器

Todoist MCP Server是一个全面的任务管理服务器,提供对任务、项目、标签、部分和评论的完整访问,支持所有任务属性,包括优先级、截止日期、标签、子任务等。

  • by olsonale
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 olsonale/todoist-mcp

使用说明

Todoist MCP服务器

Todoist API的综合模型上下文协议(MCP)服务器。提供对任务、项目、标签、节和注释的完全访问,并支持所有任务属性,包括优先级、截止日期、标签、子任务等。

特性

  • 完成任务管理:创建、读取、更新、删除、完成和重新打开任务
  • 完整任务属性支持:内容、描述、截止日期(自然语言或特定)、优先级(1-4)、标签、工期估计、子任务、受让人等
  • 项目管理:使用颜色、层次结构和视图样式创建和管理项目
  • 标签管理:为跨项目任务分类创建和组织标签
  • 科室管理:使用章节组织项目内的任务
  • 评论管理:添加和管理对任务和项目的评论
  • 速率限制:内置速率限制处理(每15分钟450个请求)
  • 错误处理:全面的错误处理,带有有意义的错误消息

安装

先决条件

  • Node.js(v18或更高版本)
  • npm
  • 带有API令牌的Todoist帐户

获取您的Todoist API代币

  1. 登录您的Todoist帐户
  2. 前往设置→ 集成→ 开发者
  3. 复制您的API令牌
  4. 将其设置为环境变量: TODOIST_API_TOKEN

安装服务器

# Clone or download this repository
cd todoist-mcp

# Install dependencies
npm install

# Build the project
npm run build

配置

适用于克劳德桌面

将此添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "todoist": {
      "command": "node",
      "args": [
        "E:\\my drive\\programs and files\\dev\\todoist MCP\\build\\index.js"
      ],
      "env": {
        "TODOIST_API_TOKEN": "your_api_token_here"
      }
    }
  }
}

将路径替换为实际安装路径,并添加Todoist API令牌。

对于其他MCP客户端

设置 TODOIST_API_TOKEN 环境变量并运行:

node build/index.js

可用工具

任务管理

list_tasks

使用可选筛选获取所有活动任务。

参数:

  • project_id (可选):按项目筛选
  • section_id (可选):按部分筛选
  • label (可选):按标签名称筛选
  • filter (可选):自定义筛选字符串(例如,“今天”、“p1”、“过期”)
  • lang (可选):用于过滤器解析的语言代码

例子:

{
  "filter": "today",
  "project_id": "2203306141"
}

get_task

按ID获取具有所有属性的单个任务。

参数:

  • task_id (必填):任务ID

create_task

创建具有综合属性的新任务。

参数:

  • content (必填):任务标题
  • description (可选):任务描述
  • project_id (可选):项目ID
  • section_id (可选):节ID
  • parent_id (可选):子任务的父任务ID
  • priority (可选):1-4,其中4为紧急
  • labels (可选):标签名称数组
  • due_string (可选):自然语言截止日期(例如,“明天14:00”)
  • due_date (可选):YYYY-MM-DD格式
  • due_datetime (可选):RFC3339格式
  • due_lang (可选):用于解析due_string的语言
  • assignee_id (可选):要分配的用户ID
  • duration (可选):持续时间金额
  • duration_unit (可选):“分钟”或“天”

例子:

{
  "content": "Buy groceries",
  "description": "Milk, eggs, bread",
  "priority": 3,
  "labels": ["shopping", "urgent"],
  "due_string": "tomorrow at 14:00"
}

update_task

更新现有任务。

参数:

  • task_id (必填):任务ID
  • 所有其他参数来自 create_task (可选)

complete_task

将任务标记为已完成。重复任务移动到下一个事件。

参数:

  • task_id (必填):任务ID

reopen_task

重新打开已完成的任务。

参数:

  • task_id (必填):任务ID

delete_task

永久删除任务。

参数:

  • task_id (必填):任务ID

项目管理

list_projects

获取所有项目。

get_project

按ID获取单个项目。

参数:

  • project_id (必填):项目ID

create_project

创建一个新项目。

参数:

  • name (必填):项目名称
  • parent_id (可选):嵌套项目的父项目ID
  • color (可选):颜色名称(例如,“蓝色”、“红色”)
  • is_favorite (可选):布尔值
  • view_style (可选):“列表”或“板”

update_project

更新现有项目。

参数:

  • project_id (必填):项目ID
  • 所有其他参数来自 create_project (可选)

delete_project

永久删除项目及其所有任务。

参数:

  • project_id (必填):项目ID

标签管理

list_labels

获取所有标签。

get_label

按ID获取单个标签。

参数:

  • label_id (必填):标签ID

create_label

创建新标签。

参数:

  • name (必填):标签名称
  • color (可选):颜色名称
  • order (可选):列表中的位置
  • is_favorite (可选):布尔值

update_label

更新现有标签。

参数:

  • label_id (必填):标签ID
  • 所有其他参数来自 create_label (可选)

delete_label

永久删除标签。

参数:

  • label_id (必填):标签ID

科室管理

list_sections

获取所有部分,可选择按项目筛选。

参数:

  • project_id (可选):项目ID

get_section

按ID获取单个部分。

参数:

  • section_id (必填):节ID

create_section

创建一个新部分。

参数:

  • name (必填):节名称
  • project_id (必填):项目ID
  • order (可选):项目中的职位

update_section

更新现有部分。

参数:

  • section_id (必填):节ID
  • name (必填):新节名称

delete_section

删除一个部分(任务不会被删除)。

参数:

  • section_id (必填):节ID

评论管理

list_comments

获取任务或项目的评论。

参数:

  • task_id (可选):任务ID
  • project_id (可选):项目ID

get_comment

按ID获取单个评论。

参数:

  • comment_id (必填):评论ID

create_comment

创建新评论。

参数:

  • content (必填):评论文本
  • task_id (可选):任务ID
  • project_id (可选):项目ID
  • attachment (可选):文件附件对象

update_comment

更新现有评论。

参数:

  • comment_id (必填):评论ID
  • content (必填):更新评论文本

delete_comment

永久删除评论。

参数:

  • comment_id (必填):评论ID

发展

# Watch mode for development
npm run watch

# Build
npm run build

速率限制

Todoist API有以下费率限制:

  • 每位用户每15分钟450个请求

服务器会自动跟踪请求,如果超过限制,则会抛出错误。

错误处理

当操作失败时,所有工具都会提供有意义的错误消息。常见错误包括:

  • API令牌丢失或无效
  • 请求频率超限
  • 任务/项目/标签ID无效
  • 参数值无效

许可证

麻省理工学院

贡献

欢迎投稿!请随时提交问题或拉取请求。

API版本

此服务器使用Todoist REST API v2。

致谢

使用 模型上下文协议SDK 和那个 Todoist REST API.