MCP任务管理器服务器
本地模型上下文协议(MCP)服务器,使用SQLite数据库为客户端驱动的项目和任务管理提供后端工具。
概述
此服务器充当本地MCP客户端(如AI代理或脚本)的持久后端,这些客户端需要管理不同项目中的结构化任务数据。它处理数据存储并提供一组标准化的交互工具,而战略工作流逻辑则驻留在客户端中。
主要特点:
- 基于项目: 任务在不同的项目中组织。
- SQLite持久化: 使用本地SQLite文件(
./data/taskmanager.db默认情况下)用于简单、自包含的数据存储。 - 客户端驱动: 为客户提供工具;不规定工作流程。
- 符合MCP标准: 遵守工具定义和通信的模型上下文协议。
- 任务管理: 支持创建项目、添加任务、列出/显示任务、更新状态、将任务扩展为子任务以及识别下一个可操作的任务。
- 进口/出口: 允许将项目数据导出为JSON,并从JSON导入以创建新项目。
已实施的MCP工具
MCP客户端可使用以下工具:
createProject:
- 说明: 创建一个新的空项目。 - 参数: projectName (字符串,可选,最大255) - 退货: { project_id: string }
addTask:
- 说明: 将新任务添加到项目中。 - 参数: project_id (字符串,必填,UUID), description (字符串,必填,1-1024), dependencies (string\[\],可选,最多50个), priority (枚举“高”|“中”|“低”,可选,默认为“中”), status (枚举“todo”|“progress”|“review”|“done”,可选,默认为“todo“) - 退货: 满的 TaskData 创建的任务的对象。
listTasks:
- 说明: 列出项目的任务,包括可选的筛选和子任务。 - 参数: project_id (字符串,必填,UUID), status (枚举“todo”|“progress”|“review”|“done”,可选), include_subtasks (布尔值,可选,默认为false) - 退货: 一大批 TaskData 或 StructuredTaskData 物体。
showTask:
- 说明: 检索特定任务的完整详细信息,包括依赖关系和直接子任务。 - 参数: project_id (字符串,必填,UUID), task_id (字符串,必填) - 退货: FullTaskData 对象。
setTaskStatus:
- 说明: 更新一个或多个任务的状态。 - 参数: project_id (字符串,必填,UUID), task_ids (字符串\[\],必填,1-100), status (枚举“todo”|“progress”|“review”|“one”,必填) - 退货: { success: true, updated_count: number }
expandTask:
- 说明: 将父任务分解为子任务,可以选择替换现有任务。 - 参数: project_id (字符串,必填,UUID), task_id (字符串,必填), subtask_descriptions (字符串\[\],必填,1-20,每个1-512), force (布尔值,可选,默认为false) - 退货: 更新家长 FullTaskData 对象,包括新的子任务。
getNextTask:
- 说明: 根据状态(“todo”)、依赖关系(“done”)、优先级和创建日期确定下一个可操作的任务。 - 参数: project_id (字符串,必填,UUID) - 退货: FullTaskData 下一个任务的对象,或 null 如果没有人准备好。
exportProject:
- 说明: 将完整的项目数据导出为JSON字符串。 - 参数: project_id (字符串,必填,UUID), format (枚举“json”,可选,默认为“json”) - 退货: 表示项目的JSON字符串。
importProject:
- 说明: 创建一个 *新* 从导出的JSON字符串中提取项目。 - 参数: project_data (字符串,必填,JSON), new_project_name (字符串,可选,最大255) - 退货: { project_id: string } 新创建的项目。
updateTask:
- 说明: 更新现有任务的特定详细信息(描述、优先级、依赖关系)。 - 参数: project_id (字符串,必填,UUID), task_id (字符串,必填,UUID), description (字符串,可选,1-1024), priority (枚举“高”|“中”|“低”,可选), dependencies (string\[\],可选,最大50,替换现有) - 退货: 更新 FullTaskData 对象。
deleteTask:
- 说明: 删除一个或多个任务(以及通过级联删除其子任务/依赖关系链接)。 - 参数: project_id (字符串,必填,UUID), task_ids (字符串\[\],必填,1-100) - 退货: { success: true, deleted_count: number }
deleteProject:
- 说明: 永久删除项目和所有相关数据。 小心使用! - 参数: project_id (字符串,必填,UUID) - 退货: { success: true }
*(注:参见相应 src/tools/*Params.ts 用于详细Zod模式和参数描述的文件。)*
入门指南
- 先决条件: Node.js(推荐LTS),npm。
- 安装依赖关系:
npm install- 在开发模式下运行: (用途
ts-node和nodemon用于自动重新加载)
npm run dev服务器将通过stdio连接。日志(JSON格式)将打印到stderr。SQLite数据库将在 ./data/taskmanager.db.
- 生产建设:
npm run build- 运行生产构建:
npm start配置
- 数据库路径: SQLite数据库文件的位置可以通过设置
DATABASE_PATH环境变量。默认值为./data/taskmanager.db. - 日志级别: 日志记录级别可以使用设置
LOG_LEVEL环境变量(例如。,debug,info,warn,error).默认值为info.
项目结构
/src:源代码。
- /config:配置管理。 - /db:数据库管理器和架构(schema.sql). - /repositories:数据访问层(SQLite交互)。 - /services:核心业务逻辑。 - /tools:MCP工具定义(\*Params.ts)和实现(\*tool.ts)。 - /types:共享TypeScript接口(目前很少,主要在repos/services中)。 - /utils:日志记录、自定义错误等。 - createServer.ts:服务器实例创建。 - server.ts:主要应用程序入口点。
/dist:编译的JavaScript输出。/docs:项目文档(PRD、功能规范、RFC)。/data:SQLite数据库文件的默认位置(自动创建)。tasks.md:用于开发的手动任务跟踪文件。- 配置文件(
package.json,tsconfig.json,.eslintrc.json等等)
装订和格式化
- 棉绒:
npm run lint - 格式:
npm run format
(代码在提交时通过Husky/lint stage自动进行linted/格式化)。
