使用说明
# 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/格式化)。
