Task Manager
STDIOLocal MCP server providing backend tools for project and task management using SQLite.
Local MCP server providing backend tools for project and task management using SQLite.
A local Model Context Protocol (MCP) server providing backend tools for client-driven project and task management using a SQLite database.
This server acts as a persistent backend for local MCP clients (like AI agents or scripts) that need to manage structured task data within distinct projects. It handles data storage and provides a standardized set of tools for interaction, while the strategic workflow logic resides within the client.
Key Features:
./data/taskmanager.db
by default) for simple, self-contained data storage.The following tools are available for MCP clients:
createProject
:
projectName
(string, optional, max 255){ project_id: string }
addTask
:
project_id
(string, required, UUID), description
(string, required, 1-1024), dependencies
(string[], optional, max 50), priority
(enum 'high'|'medium'|'low', optional, default 'medium'), status
(enum 'todo'|'in-progress'|'review'|'done', optional, default 'todo')TaskData
object of the created task.listTasks
:
project_id
(string, required, UUID), status
(enum 'todo'|'in-progress'|'review'|'done', optional), include_subtasks
(boolean, optional, default false)TaskData
or StructuredTaskData
objects.showTask
:
project_id
(string, required, UUID), task_id
(string, required)FullTaskData
object.setTaskStatus
:
project_id
(string, required, UUID), task_ids
(string[], required, 1-100), status
(enum 'todo'|'in-progress'|'review'|'done', required){ success: true, updated_count: number }
expandTask
:
project_id
(string, required, UUID), task_id
(string, required), subtask_descriptions
(string[], required, 1-20, each 1-512), force
(boolean, optional, default false)FullTaskData
object including new subtasks.getNextTask
:
project_id
(string, required, UUID)FullTaskData
object of the next task, or null
if none are ready.exportProject
:
project_id
(string, required, UUID), format
(enum 'json', optional, default 'json')importProject
:
project_data
(string, required, JSON), new_project_name
(string, optional, max 255){ project_id: string }
of the newly created project.updateTask
:
project_id
(string, required, UUID), task_id
(string, required, UUID), description
(string, optional, 1-1024), priority
(enum 'high'|'medium'|'low', optional), dependencies
(string[], optional, max 50, replaces existing)FullTaskData
object.deleteTask
:
project_id
(string, required, UUID), task_ids
(string[], required, 1-100){ success: true, deleted_count: number }
deleteProject
:
project_id
(string, required, UUID){ success: true }
(Note: Refer to the corresponding src/tools/*Params.ts
files for detailed Zod schemas and parameter descriptions.)
Prerequisites: Node.js (LTS recommended), npm.
Install Dependencies:
npm install
Run in Development Mode: (Uses ts-node
and nodemon
for auto-reloading)
npm run dev
The server will connect via stdio. Logs (JSON format) will be printed to stderr. The SQLite database will be created/updated in ./data/taskmanager.db
.
Build for Production:
npm run build
Run Production Build:
npm start
DATABASE_PATH
environment variable. The default is ./data/taskmanager.db
.LOG_LEVEL
environment variable (e.g., debug
, info
, warn
, error
). The default is info
./src
: Source code.
/config
: Configuration management./db
: Database manager and schema (schema.sql
)./repositories
: Data access layer (SQLite interaction)./services
: Core business logic./tools
: MCP tool definitions (*Params.ts) and implementation (*Tool.ts)./types
: Shared TypeScript interfaces (currently minimal, mostly in repos/services)./utils
: Logging, custom errors, etc.createServer.ts
: Server instance creation.server.ts
: Main application entry point./dist
: Compiled JavaScript output./docs
: Project documentation (PRD, Feature Specs, RFC)./data
: Default location for the SQLite database file (created automatically).tasks.md
: Manual task tracking file for development.package.json
, tsconfig.json
, .eslintrc.json
, etc.)npm run lint
npm run format
(Code is automatically linted/formatted on commit via Husky/lint-staged).