任务管理服务器

一个本地模型上下文协议(MCP)服务器,为客户端驱动的项目和任务管理提供后端工具,使用SQLite数据库进行数据存储。

  • by bsmi021
  • TypeScript
  • 本地部署
  • 25 星标
  • 更新于
在 GitHub 查看 bsmi021/mcp-task-manager-server

使用说明

# 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模式和参数描述的文件。)

入门指南

  1. 先决条件: Node.js(推荐LTS),npm。

  2. 安装依赖关系:

    npm install
    
  3. 在开发模式下运行: (用途 ts-node 和 nodemon 用于自动重新加载)

    npm run dev
    

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

  4. 生产建设:

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

    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/格式化)。