返回市场
MCP任务管理服务器

MCP任务管理服务器

作者:bsmi02121 星标更新:2025-06-11

项目介绍

MCP任务管理服务器

<div align="center"> <img src="public/images/mcp-task-manager-logo.svg" alt="MCP任务管理器Logo" width="200" height="200" /> </div>

一个本地的模型上下文协议(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(字符串数组,可选,最大长度50),priority(枚举 'high'|'medium'|'low',可选,默认值'medium'),status(枚举 'todo'|'in-progress'|'review'|'done',可选,默认值'todo')
    • 返回值: 创建任务的完整TaskData对象。
  • listTasks
    • 描述: 列出项目的任务,可选过滤和子任务包含。
    • 参数: project_id(字符串,必需,UUID),status(枚举 'todo'|'in-progress'|'review'|'done',可选),include_subtasks(布尔值,可选,默认值false)
    1. 返回值: TaskDataStructuredTaskData对象数组。
  • showTask
    • 描述: 获取特定任务的完整详情,包括依赖项和直接子任务。
    • 参数: project_id(字符串,必需,UUID),task_id(字符串,必需)
    • 返回值: FullTaskData对象。
  • setTaskStatus
    • 描述: 更新一个或多个任务的状态。
    • 参数: project_id(字符串,必需,UUID),task_ids(字符串数组,必需,长度1-100),status(枚举 'todo'|'in-progress'|'review'|'done',必需)
    • 返回值: { 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(枚举 'high'|'medium'|'low',可选),dependencies(字符串数组,可选,最大长度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模式和参数描述。)

开始使用

  1. 前提条件: Node.js(推荐长期支持版本),npm。

  2. 安装依赖:

    npm install
    
  3. 开发模式运行: (使用ts-nodenodemon自动重新加载)

    npm run dev
    

    服务器将通过stdio连接。日志(JSON格式)将打印到stderr。SQLite数据库将在./data/taskmanager.db创建/更新。

  4. 构建生产环境:

    npm run build
    
  5. 运行生产构建:

    npm start
    

配置

  • 数据库路径: 可通过设置DATABASE_PATH环境变量覆盖SQLite数据库文件的位置。默认位置是./data/taskmanager.db
  • 日志级别: 日志级别可以通过设置LOG_LEVEL环境变量(例如,debuginfowarnerror)。默认值是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.jsontsconfig.json.eslintrc.json等)。

代码检查和格式化

  • 检查: npm run lint
  • 格式化: npm run format

(代码在提交时会自动通过Husky/lint-staged进行检查和格式化)。