关于 todoist-mcp
todoist-mcp 是用于通过 Claude 管理 Todoist 任务和项目的 MCP 服务,支持任务操作、筛选、搜索、标签、优先级和自然语言截止日期。
主要功能
- 01创建、更新和完成任务
- 02筛选并列出未完成任务
- 03搜索任务内容与描述
- 04管理 Todoist 项目
- 05设置标签、优先级和截止日期
适用场景
- 01用自然语言截止日期创建任务
- 02查找逾期或指定项目的任务
- 03更新任务优先级或标签
- 04查看项目并完成任务
MCP 相关
该 MCP 服务将 Todoist 任务与项目操作提供为 Claude 可调用的工具,并使用 API 令牌连接 Todoist。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Todoist MCP 服务
用于 Todoist 任务管理的 Model Context Protocol(MCP)服务,让 Claude 能够与你的 Todoist 任务和项目交互。
功能
- ✅ 创建、读取、更新和完成任务
- 📋 使用高级筛选条件列出任务
- 🔍 按文本内容搜索任务
- 📁 管理项目
- 🏷️ 支持标签和优先级
- 📅 解析自然语言日期
- ⚡ 限流以遵守 API 限制
- 🛡️ 全面的错误处理
安装
前置条件
- Node.js >= 18.0.0
- npm 或 yarn
- 拥有 API 令牌的 Todoist 账号
从源代码安装
# Clone the repository
git clone <your-repo-url>
cd todoist-mcp
# Install dependencies
npm install
# Build the project
npm run build
配置
1. 获取 Todoist API 令牌
- 前往 Todoist 集成设置
- 向下滚动到“API token”部分
- 复制你的个人 API 令牌
2. 设置环境变量
在项目根目录中创建 .env 文件:
cp .env.example .env
编辑 .env 并添加你的 Todoist API 令牌:
TODOIST_API_TOKEN=your_actual_token_here
LOG_LEVEL=error
3. 配置 Claude Desktop
将服务添加到 Claude Desktop 配置文件:
位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
配置:
{
"mcpServers": {
"todoist": {
"command": "node",
"args": ["/absolute/path/to/todoist-mcp/build/server.js"],
"env": {
"TODOIST_API_TOKEN": "your_actual_token_here"
}
}
}
}
重要: 将 /absolute/path/to/todoist-mcp 替换为项目目录的实际绝对路径。
4. 重启 Claude Desktop
更新配置后,重启 Claude Desktop 以使更改生效。
可用工具
todoist_create_task
在 Todoist 中创建新任务,可选设置项目、截止日期、优先级、标签,并指定父任务来创建子任务。
参数:
content(必填):任务内容/标题description(可选):任务描述project_id(可选):要添加任务的项目 IDsection_id(可选):项目中的分区 IDdue_date(可选):自然语言格式或 YYYY-MM-DD 格式的截止日期priority(可选):优先级:1(普通)、2(中)、3(高)、4(紧急)labels(可选):标签名称数组parent_id(可选):用于创建子任务的父任务 IDparent_task_name(可选):要搜索的父任务名称(作为 parent_id 的替代方式)
示例:
Create a task "Write report" due tomorrow with high priority
Create a task "Buy groceries" in the Shopping project
Create a task "Team meeting" due "next Monday at 2pm"
Create a subtask "Buy milk" under parent task "Go to the supermarket"
Create a subtask "Review slides" under task 8237492837
Add subtask "Call John" to the task "Prepare presentation"
todoist_list_tasks
列出活跃任务,可按项目、分区、标签或自定义 Todoist 筛选条件进行筛选。
参数:
project_id(可选):按项目 ID 筛选section_id(可选):按分区 ID 筛选label(可选):按标签名称筛选filter(可选):Todoist 筛选查询(例如,“today”、“overdue”、“p1”)limit(可选):返回的最大任务数量(默认:50,最大:200)
示例:
List all my tasks
List tasks in project "Work"
List tasks due today
List all overdue tasks with limit 20
todoist_get_task
获取特定任务的详细信息,包括所有元数据。
参数:
task_id(必填):要获取的任务 ID
示例:
Get details for task 123456789
Show me task 987654321
todoist_update_task
更新现有任务的内容、描述、截止日期、优先级或标签。
参数:
task_id(必填):要更新的任务 IDcontent(可选):新的任务内容description(可选):新的任务描述due_date(可选):新的截止日期(自然语言格式或 YYYY-MM-DD)priority(可选):新的优先级(1-4)labels(可选):新的标签数组
示例:
Update task 123 to have priority 4
Change task 456 due date to "next Friday"
Update task 789 content to "Revised meeting agenda"
todoist_complete_task
将任务标记为已完成。
参数:
task_id(必填):要完成的任务 ID
示例:
Complete task 123456
Mark task 789012 as done
todoist_list_projects
列出 Todoist 中的所有项目,包括收件箱和共享项目。
参数: 无
示例:
List all my projects
Show me all my Todoist projects
todoist_search_tasks
按任务内容或描述中的文本搜索任务。
参数:
query(必填):要在任务内容和描述中搜索的文本limit(可选):返回的最大任务数量(默认:50,最大:200)
示例:
Search for tasks containing "meeting"
Find all tasks with "budget" in them
开发
构建
npm run build
开发模式(监视)
npm run dev
运行测试
npm test
以监视模式运行测试
npm run test:watch
速率限制
服务遵循 Todoist API 每 15 分钟 450 个请求的速率限制。超出限制时,API 会返回 429 错误,服务会捕获该错误并提供清晰的错误消息。等待一段时间后即可重试请求。
错误处理
所有错误都会返回描述性消息。常见错误包括:
- API 令牌无效:检查
.env配置或 Claude Desktop 配置 - 未找到任务:确认任务 ID 存在且尚未删除
- 超出速率限制:等待 15 分钟或降低请求频率
- 网络错误:检查网络连接
- 验证错误:检查提供给工具的参数
自然语言日期支持
服务支持 Todoist 的自然语言日期解析。你可以使用以下短语:
- “明天”
- “下周一”
- “每周五”
- “3 天后”
- “下周”
- “12 月 25 日”
你也可以使用标准日期格式:
- “2024-12-31”
- “2024-12-31T14:30:00”
项目结构
todoist-mcp/
├── src/
│ ├── server.ts # Main MCP server entry point
│ ├── types/ # TypeScript type definitions
│ ├── api/ # Todoist API client and errors
│ ├── tools/ # MCP tool implementations
│ └── utils/ # Utilities (logger, rate limiter)
├── tests/
│ └── unit/ # Unit tests
├── build/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
├── .env.example
└── README.md
发布与注册表
- MCP 名称:
io.github.ecfaria/todoist-mcp - NPM 包:
@ecfaria/todoist-mcp-server - server.json: 注册表定义见此仓库根目录
发布流程
- 根据需要更新版本号(
npm version <patch|minor|major>)。 - 构建可分发文件:
npm run build。 - 发布到 npm:
npm publish --access public(作用域包默认设为私有)。 - 验证注册表元数据:
mcp-publisher validate。 - 发布到 MCP 注册表:
mcp-publisher publish。
发行说明(v1.0.0)
- 在
package.json中添加 MCP 注册表元数据(mcpName)。 - 记录发布流程和注册表标识。
- 引入用于注册表发布的规范
server.json引用。 - 采用作用域 npm 包名称
@ecfaria/todoist-mcp-server,以避免冲突。
故障排除
Claude 中未显示服务
- 确认
claude_desktop_config.json中的路径是正确的绝对路径 - 检查是否已构建项目(
npm run build) - 确保配置中已设置 API 令牌
- 完全重启 Claude Desktop
API 令牌无效
- 前往 Todoist 集成设置
- 生成新的 API 令牌
- 更新
.env文件或 Claude Desktop 配置 - 重启服务/Claude Desktop
未显示任务
- 确认使用的是正确的项目 ID 或筛选条件
- 检查任务是否已完成
- 尝试不使用筛选条件列出所有任务,以查看可用任务
参与贡献
欢迎贡献!请随时提交 Pull Request。
许可证
MIT
支持
致谢
使用以下技术构建:
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。