一个MCP(模型上下文协议)服务器,通过自然语言将Claude与Todoist连接起来,实现完整的任务和项目管理。
<a href="https://glama.ai/mcp/servers/@greirson/mcp-todoist"> <img width="380" height="200" src="https://gips0.baidu.com/it/u=762031313,3111290978&fm=3081&app=3081&f=PNG?w=760&h=400" alt="Todoist Server MCP服务器" /> </a>{
"mcpServers": {
"todoist": {
"command": "npx",
"args": ["@greirson/mcp-todoist"],
"env": {
"TODOIST_API_TOKEN": "your_api_token_here"
}
}
}
}
**就这样!**现在你可以通过Claude直接管理你的Todoist任务了。
要通过Smithery自动为Claude Desktop安装mcp-todoist:
npx -y @smithery/cli install @greirson/mcp-todoist --client claude
这是最简单的方法,因为它不需要全局安装任何东西。
将服务器添加到你的Claude Desktop配置文件中:
在macOS/Linux上:
~/.config/claude_desktop_config.json在Windows上:
%APPDATA%\Claude\claude_desktop_config.json添加以下配置:
{
"mcpServers": {
"todoist": {
"command": "npx",
"args": ["@greirson/mcp-todoist"],
"env": {
"TODOIST_API_TOKEN": "your_api_token_here"
}
}
}
}
⚠️重要提示: 将your_api_token_here替换为你从步骤1中获取的实际Todoist API令牌。
如果你更喜欢全局安装该包:
npm install -g @greirson/mcp-todoist
(同方案1,步骤1)
使用此配置进行全局安装:
{
"mcpServers": {
"todoist": {
"command": "mcp-todoist",
"env": {
"TODOIST_API_TOKEN": "your_api_token_here"
}
}
}
}
关闭并重新打开Claude Desktop以加载新的MCP服务器。
在Claude Desktop中尝试询问:
"显示我的Todoist项目"
你应该能看到你的Todoist项目的列表,确认集成正常工作!
干运行模式允许你在不实际改变你的Todoist工作区的情况下测试操作和自动化。这对于测试、调试、学习API或在实际执行前验证自动化脚本非常有用。
在环境配置中添加DRYRUN=true:
{
"mcpServers": {
"todoist": {
"command": "npx",
"args": ["@greirson/mcp-todoist"],
"env": {
"TODOIST_API_TOKEN": "your_api_token_here",
"DRYRUN": "true"
}
}
}
}
[DRY-RUN]前缀启用干运行模式后,操作会显示会发生什么:
你: "在我的工作项目中创建一个名为'Test Task'的任务"
响应:
[DRY-RUN] 干运行模式已启用 - 变更将被模拟
[DRY-RUN] 将创建任务:"Test Task" 在项目2203306141,部分无
任务创建成功(模拟):
ID:100001
标题:Test Task
项目:工作(2203306141)
优先级:4(普通)
所有28个MCP工具都支持干运行模式:
移除DRYRUN环境变量或将它设为false,然后重启Claude Desktop以返回正常操作模式。
服务器提供了按实体类型组织的28个工具:
due_before/due_after窗口和时区感知到期详情due_before/due_after过滤“未找到Todoist项目”或连接错误:
claude_desktop_config.json中MCP服务器无法加载:
npm list -g @greirson/mcp-todoistmcp-todoist二进制文件的完整路径:/Users/USERNAME/.npm-global/bin/mcp-todoist权限错误:
mkdir -p ~/.config"显示我所有的项目"
"创建一个新的项目叫'工作任务'"
"在项目12345中创建一个部分叫'正在进行中'"
"显示工作任务项目中的部分"
"在项目12345中创建任务'团队会议'"
"添加任务'Review PR',截止日期为明天,标签['代码审查', '紧急']"
"创建具有截止日期2024-12-25的高优先级任务"
"更新会议任务使其在部分67890中"
"标记代码审查任务为已完成"
# 通过ID识别任务(比名称搜索更可靠)
"获取ID为1234567890的任务"
"更新任务ID 1234567890的优先级为4"
"完成ID为1234567890的任务"
"删除ID为1234567890的任务"
"在任务'团队会议'下创建子任务'准备议程'"
"为'启动项目'创建多个子任务:'设计UI', '编写测试', '部署'"
"将任务'代码审查'转换为'发布v2.0'的子任务"
"提升子任务'修复bug'为主任务"
"显示带有完成跟踪的'启动项目'的任务层次结构"
"为项目启动创建多个任务:'设计草图', '编写文档', '设置CI/CD'"
"将所有高优先级任务更新为下周到期"
"完成项目12345中包含'review'的所有任务"
"删除所有过期且优先级为1的任务"
"向任务'Review PR'添加评论'This needs urgent attention'"
"向任务67890添加带附件的评论"
"显示任务'团队会议'的所有评论"
"获取项目12345的评论"
"显示我所有的标签"
"创建一个名为'紧急'的新标签,颜色为红色"
"更新'工作'标签为蓝色并标记为收藏"
"删除未使用的'旧项目'标签"
"获取所有标签的使用统计信息"
"显示我所有的任务"
"列出本周到期的高优先级任务"
"获取项目12345中的任务"
"测试我的Todoist连接"
"对所有Todoist功能运行基本测试" // 默认:只读API测试
"对所有Todoist功能运行增强测试" // 全面的CRUD测试并清理
"基准测试Todoist API性能,10次迭代"
"验证所有MCP工具是否正常工作"
当启用干运行模式(DRYRUN=true)时,使用常规命令 - 它们将自动被模拟:
"创建一个优先级为1的测试任务"
"将所有逾期任务更新为明天到期"
"删除项目12345中已完成的所有任务"
"在任务'项目规划'下创建5个子任务"
所有这些操作都会针对你的真实数据进行验证,但不会做任何更改。
"测试我的Todoist连接"
"显示我所有的Todoist项目"
"创建一个名为'Claude集成测试'的新项目"
"在我的收件箱中创建任务'尝试MCP集成'"
"添加一个高优先级任务'Review项目设置',截止日期为明天"
"显示我所有的任务"
"在我的工作项目中创建一个部分叫'正在进行中'"
"将设置任务移动到正在进行中部分"
"向我的测试任务添加评论'This is working great!'"
"创建多个任务:'计划会议议程', '准备幻灯片', '发送邀请'"
"完成Claude项目中包含'test'的所有任务"
"将所有高优先级任务更新为下周到期"
# 克隆仓库
git clone https://github.com/greirson/mcp-todoist.git
# 导航到目录
cd mcp-todoist
# 安装依赖
npm install
# 构建项目
npm run build
# 监视更改并重建
npm run watch
# 运行测试
npm run test
# 在监视模式下运行测试
npm run test:watch
# 运行带有覆盖率的测试
npm run test:coverage
# 检查代码
npm run lint
# 修复代码检查问题
npm run lint:fix
# 格式化代码
npm run format
# 检查格式
npm run format:check
代码库遵循一种干净、模块化的架构,旨在维护性和可扩展性:
src/index.ts:主要服务器入口点,带有请求路由src/types.ts:TypeScript类型定义和接口src/type-guards.ts:运行时类型验证函数src/validation.ts:输入验证和净化src/errors.ts:自定义错误类型和结构化处理src/cache.ts:内存缓存以优化性能src/tools/:按功能组织的领域特定MCP工具定义:
task-tools.ts - 任务管理(9个工具)subtask-tools.ts - 子任务操作(5个工具)project-tools.ts - 项目/部分管理(4个工具)comment-tools.ts - 评论