任务管理服务器

一个基于Redis存储的任务和项目管理服务器,支持项目创建、任务CRUD操作、高级过滤和排序功能,并提供数据验证和安全认证。

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

使用说明

全MCP服务器

一个全面的任务和项目管理服务器,实现了具有Redis存储、增强验证和全面测试的模型上下文协议(MCP)。

特性

核心功能

  • 项目管理:使用自动任务归档创建、列出和归档项目
  • 任务管理:具有状态转换的完整CRUD操作(todo, in-progress, completed, archived)
  • 分层任务:支持父子任务关系
  • 高级过滤:按项目、状态、优先级、标记和截止日期筛选任务
  • 排序选项:按创建日期、截止日期、优先级或标题对任务进行排序

数据验证和安全

  • 输入消毒:自动修剪和规范所有文本输入
  • 架构验证:具有自定义错误消息的全面Zod模式
  • 类型安全:具有严格类型的完整TypeScript实现
  • 认证:用于安全访问的可选基本身份验证

测试与质量

  • 单元测试:所有服务和验证实用程序的全面测试覆盖
  • Bun测试框架:快速、现代的测试,具有出色的TypeScript支持
  • 模拟依赖关系:使用适当的存储库模拟进行隔离测试

先决条件

  • 包子 运行时(v1.3.0+)
  • Redis实例(本地或远程)

配置

变量 描述 默认值
REDIS_URL Redis连接字符串 redis://127.0.0.1:6379
MCP_BASIC_AUTH_USER 基本身份验证的用户名 取消设置
MCP_BASIC_AUTH_PASSWORD 基本身份验证密码 取消设置
MCP_SERVER_NAME 向客户端公布服务器名称 todo-mcp
MCP_SERVER_VERSION 语义版本字符串 0.1.0

仅当两者同时存在时,才强制执行身份验证 MCP_BASIC_AUTH_USER 和 MCP_BASIC_AUTH_PASSWORD 提供。

安装

bun install

运行服务器

# Basic setup
bun run src/index.ts

# With authentication
MCP_BASIC_AUTH_USER=alice \
MCP_BASIC_AUTH_PASSWORD=secret \
bun run src/index.ts

# Development with watch mode
bun run dev

测试

# Run all tests
bun test

# Run tests in watch mode
bun run test:watch

# Run with coverage
bun run test:coverage

API 参考

项目

create_project

创建一个新项目。

参数:

  • name (字符串,必填):项目名称(1-100个字符,已修剪)
  • description (字符串,可选):项目描述(已修剪)

例子:

{
  "name": "My Project",
  "description": "A sample project for task management"
}

list_projects

列出具有可选筛选的项目。

参数:

  • includeArchived (布尔值,可选):包括存档项目(默认值:false)

例子:

{
  "includeArchived": true
}

archive_project

将项目及其所有任务存档。

参数:

  • projectId (字符串,必填):项目标识符

例子:

{
  "projectId": "my-project"
}

任务

create_task

创建新任务。

参数:

  • projectId (字符串,必填):父项目ID
  • title (字符串,必填):任务标题(1-200个字符,已修剪)
  • description (字符串,可选):任务描述(已修剪)
  • remarks (字符串,可选):附加自由格式注释(修剪)
  • priority (字符串,可选):优先级(low, medium, high)
  • status (字符串,可选):初始状态(todo, in-progress, completed, archived;默认为 todo)
  • dueDate (字符串,可选):ISO 8601日期字符串
  • tags (字符串,可选):逗号分隔的标签
  • parentTaskId (字符串,可选):子任务的父任务ID

例子:

{
  "projectId": "my-project",
  "title": "Implement user authentication",
  "description": "Add login and registration functionality",
  "remarks": "Coordinate with the security team",
  "priority": "high",
  "status": "in-progress",
  "dueDate": "2025-12-31T23:59:59Z",
  "tags": "backend,security,urgent"
}

list_tasks

使用高级筛选和排序列出任务。

参数:

  • projectId (字符串,可选):按项目筛选
  • status (字符串,可选):按状态筛选(todo, in-progress, completed, archived)
  • priority (字符串,可选):按优先级筛选(low, medium, high)
  • tags (数组,可选):按标签筛选
  • hasSubtasks (布尔值,可选):过滤有/没有子任务的任务
  • includeArchived (布尔值,可选):包括已存档的任务(默认值:false)
  • sortBy (字符串,可选):排序字段(createdAt, dueDate, priority, title)
  • order (字符串,可选):排序顺序(asc, desc)

例子:

{
  "projectId": "my-project",
  "status": "todo",
  "priority": "high",
  "sortBy": "dueDate",
  "order": "asc"
}

update_task

更新现有任务。

参数:

  • taskId (字符串,必填):任务标识符
  • title (字符串,可选):新标题
  • description (字符串,可选):新描述
  • remarks (字符串,可选):新备注
  • priority (字符串,可选):新优先级
  • status (字符串,可选):新状态(todo, in-progress, completed, archived)
  • dueDate (字符串,可选):新的截止日期
  • tags (字符串,可选):新标签

例子:

{
  "taskId": "task-123",
  "status": "completed",
  "priority": "medium"
}

archive_task

将任务存档。

参数:

  • taskId (字符串,必填):任务标识符

例子:

{
  "taskId": "task-123"
}

数据验证

服务器包括全面的输入验证:

  • 文本字段:自动修剪和标准化
  • 项目名称:1-100个字符
  • 任务标题:1-200个字符
  • 标签:小写,重复数据消除,每个最多20个字符
  • 日期:ISO 8601格式验证
  • 优先事项: low, medium, high
  • 状态: todo, in-progress, completed, archived

发展

项目结构

src/
├── config.ts          # Server configuration
├── index.ts           # Main server entry point
├── types.ts           # TypeScript type definitions
├── validation.ts      # Zod schemas and validation utilities
├── auth/              # Authentication middleware
├── repositories/      # Data access layer
├── services/          # Business logic layer
├── storage/           # Redis client configuration
├── tools/             # MCP tool implementations
└── prompts.ts         # MCP prompt definitions

test/                  # Unit tests
├── validation.test.ts # Validation utility tests
├── taskService.test.ts # TaskService unit tests
└── projectService.test.ts # ProjectService unit tests

添加新功能

  1. 在中定义类型 types.ts
  2. 在中添加验证架构 validation.ts
  3. 在适当的存储库中实现存储库方法
  4. 将业务逻辑添加到服务层
  5. 在中创建MCP工具 tools/
  6. 添加全面的单元测试

测试策略

  • 单元测试:单独测试单个功能和方法
  • 模拟依赖关系:使用Bun的模拟实用程序处理外部依赖关系
  • 验证覆盖率:测试所有验证模式和边缘情况
  • 错误场景:测试错误条件和异常处理

贡献

  1. 遵循TypeScript严格模式指南
  2. 为新功能添加单元测试
  3. 更新API变更文档
  4. 提交前确保所有测试通过

许可证

这个项目是开源的。有关详细信息,请参阅LICENSE文件。