返回 MCP 目录
public公开dns本地运行

todo-mcp

一个基于Bun和TypeScript的待办事项管理MCP服务器,支持列表和任务管理、优先级设置、状态跟踪、标签分类、定时提醒、重复任务等功能,并提供Webhook通知服务。

article

README

🚀 TODO MCP Server

这是一个基于Model Context Protocol (MCP) 的服务器,用于管理待办事项列表和事项,并支持通过Webhook进行通知。它使用Bun和TypeScript构建。

✨ 主要特性

待办事项列表管理

  • 创建:可创建带有名称和描述的新待办事项列表。
  • 读取:可查看单个列表或获取所有列表。
  • 更新:可更新列表的名称和描述。
  • 删除:可删除列表(会级联删除所有关联的待办事项)。

待办事项管理

  • CRUD操作:可创建、读取、更新和删除待办事项。
  • 负责人支持:可将待办事项分配给特定人员。
  • 优先级级别:无、低、中、高。
  • 状态跟踪:待处理、进行中、已完成、已取消。
  • 标签:灵活的标签系统,用于分类。
  • 截止日期:可为任务设置截止日期。
  • 暂停功能:可暂时隐藏事项,直到特定时间。

高级特性

  • 重复周期:每日、每周、每月或特定工作日。
  • 搜索:可按标题、描述或关键词查找待办事项。
  • 过滤:可按负责人、标签、状态、优先级、截止日期进行过滤。
  • 排序:可按时间、优先级、创建日期或更新日期排序。
  • 分页:可对大型数据集进行限制和偏移。
  • 通知:临近截止日期时,可通过Webhook发送通知。

📦 安装指南

前提条件

  • Bun 运行时
  • SQLite3(大多数系统已包含)

安装步骤

# 克隆仓库
git clone <repository-url>
cd mcp-todo

# 安装依赖
bun install

# 设置环境变量
cp .env.example .env
# 编辑.env文件,进行配置

环境变量

# 任务通知的Webhook URL(可选)
NOTIFICATION_WEBHOOK=http://localhost:3000/api/webhooks/your-webhook-url

# 数据库配置
DATABASE_PATH=./todo.db

# 服务器配置
MCP_SERVER_NAME=mcp-todo
MCP_SERVER_VERSION=1.0.0

💻 使用示例

基础用法

开发环境

# 以开发模式启动,支持自动重新加载
bun run dev

# 运行类型检查
bun run typecheck

# 运行测试
bun test

生产环境

# 启动服务器
bun run start

# 或者使用Docker构建并运行
docker-compose up -d

高级用法

创建待办事项列表

{
  "name": "Work Tasks",
  "description": "Tasks related to work projects"
}

创建待办事项

{
  "list_id": "list-uuid",
  "title": "Complete project documentation",
  "description": "Write comprehensive docs for the new feature",
  "assignee": "john.doe@example.com",
  "priority": "high",
  "tags": ["documentation", "urgent"],
  "due_date": "2024-12-31T23:59:59Z",
  "recurrence": {
    "type": "weekly",
    "weekdays": [1, 3, 5]
  }
}

搜索待办事项

{
  "query": "documentation",
  "status": ["pending", "in_progress"],
  "priority": ["high", "medium"],
  "assignee": "john.doe@example.com",
  "due_before": "2024-12-31T23:59:59Z",
  "sort_field": "due_date",
  "sort_order": "asc",
  "limit": 10
}

📚 详细文档

MCP工具

服务器提供以下MCP工具:

待办事项列表操作

  • createTodoList - 创建新的待办事项列表
  • getTodoList - 根据ID获取待办事项列表
  • getAllTodoLists - 获取所有待办事项列表
  • updateTodoList - 更新待办事项列表
  • deleteTodoList - 删除待办事项列表

待办事项操作

  • createTodoItem - 创建新的待办事项
  • getTodoItem - 根据ID获取待办事项
  • searchTodoItems - 搜索和过滤待办事项
  • updateTodoItem - 更新待办事项
  • markTodoDone - 将待办事项标记为已完成
  • deleteTodoItem - 删除待办事项

数据库架构

服务器使用SQLite,包含以下表:

  • todo_lists:存储待办事项列表信息
  • todo_items:存储单个待办事项
  • tags:存储唯一的标签名称
  • todo_tags:待办事项和标签之间的多对多关系
  • recurrences:存储待办事项的重复模式

Docker部署

使用Docker Compose

# 启动服务
docker-compose up -d

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

直接使用Docker

# 构建镜像
docker build -t mcp-todo .

# 运行容器
docker run -d \
  --name mcp-todo \
  -v todo-data:/data \
  -e NOTIFICATION_WEBHOOK=your-webhook-url \
  mcp-todo

通知

当配置了NOTIFICATION_WEBHOOK时,服务器将:

  1. 每5分钟检查下一小时内即将到期的任务。
  2. 为即将到来的截止日期发送Webhook通知。
  3. 自动将通知暂停1小时,以避免垃圾信息。
  4. 包含任务详细信息,如标题、负责人、优先级和标签。

Webhook有效负载格式

{
  "content": "Task deadline approaching!",
  "data": {
    "id": "string",
    "list_id": "string",
    "title": "string",
    "description": "string",
    "assignee": "string",
    "priority": "none", // none, low, medium, high
    "status": "completed", // pending, in_progress, completed, cancelled
    "tags": [],
    "due_date": "Date",
    "snoozed_until": "Date",
    "recurrence": {
      "type": "daily", // daily, weekly, monthly, weekdays 
      "weekdays": [], // 0-6 for Sunday-Saturday
      "day_of_month": 1, // 1-31
      "next_due": "Date"
    },
    "completed_at": "Date",
    "created_at": "Date",
    "updated_at": "Date",
    "metadata": {}
  }
}

API参考

重复类型

  • daily:每天重复
  • weekly:在特定工作日重复(0=周日,6=周六)
  • monthly:在每月的特定日期重复
  • weekdays:仅在工作日重复(周一至周五)

优先级级别

  • none:未设置优先级
  • low:低优先级
  • medium:中等优先级
  • high:高优先级

状态选项

  • pending:任务未开始
  • in_progress:任务正在进行中
  • completed:任务已完成
  • cancelled:任务已取消

🔧 技术细节

项目结构

src/
├── db/           # 数据库连接和架构
├── models/       # 数据访问的仓库类
├── server/       # MCP服务器实现
├── types/        # TypeScript类型定义
└── utils/        # 实用函数

测试

# 运行所有测试
bun test

# 运行带覆盖率的测试
bun test --coverage

# 运行特定测试文件
bun test tests/todo-list.repository.test.ts

贡献代码

  1. 分叉仓库
  2. 创建功能分支
  3. 进行更改
  4. 为新功能添加测试
  5. 确保所有测试通过
  6. 提交拉取请求

📄 许可证

本项目采用MIT许可证。

故障排除

常见问题

  1. 数据库锁定错误:确保只有一个服务器实例在运行。
  2. 权限被拒绝:检查数据库路径的文件权限。
  3. Webhook无法工作:验证Webhook URL是否正确且可访问。

调试模式

设置NODE_ENV=development以启用额外的日志记录。

支持

如有问题和疑问,请:

  1. 查看上述故障排除部分。
  2. 在GitHub上搜索现有问题。
  3. 创建一个包含详细信息的新问题。
help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端