使用说明
全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(字符串,必填):父项目IDtitle(字符串,必填):任务标题(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
添加新功能
- 在中定义类型
types.ts - 在中添加验证架构
validation.ts - 在适当的存储库中实现存储库方法
- 将业务逻辑添加到服务层
- 在中创建MCP工具
tools/ - 添加全面的单元测试
测试策略
- 单元测试:单独测试单个功能和方法
- 模拟依赖关系:使用Bun的模拟实用程序处理外部依赖关系
- 验证覆盖率:测试所有验证模式和边缘情况
- 错误场景:测试错误条件和异常处理
贡献
- 遵循TypeScript严格模式指南
- 为新功能添加单元测试
- 更新API变更文档
- 提交前确保所有测试通过
许可证
这个项目是开源的。有关详细信息,请参阅LICENSE文件。