MCP Task Manager Server

MCP Task Manager Server

A local Model Context Protocol server providing backend tools for AI agents to manage projects and tasks with persistent storage in SQLite, enabling structured tracking of project tasks with dependencies, priorities, and statuses.

Category
Visit Server

Tools

createProject

Creates a new, empty project entry in the Task Management Server database. This tool is used by clients (e.g., AI agents) to initiate a new workspace for tasks. It returns the unique identifier (UUID) assigned to the newly created project. An optional name can be provided; otherwise, a default name including a timestamp will be generated.

addTask

Adds a new task to a specified project within the Task Management Server. Requires the project ID and a description for the task. Optionally accepts a list of dependency task IDs, a priority level, and an initial status. Returns the full details of the newly created task upon success.

listTasks

Retrieves a list of tasks for a specified project. Allows optional filtering by task status ('todo', 'in-progress', 'review', 'done'). Provides an option to include nested subtasks directly within their parent task objects in the response. Returns an array of task objects.

showTask

Retrieves the full details of a single, specific task, including its dependencies and direct subtasks. Requires the project ID and the task ID. Returns a task object containing all details if found.

setTaskStatus

Updates the status ('todo', 'in-progress', 'review', 'done') for one or more tasks within a specified project. Requires the project ID, an array of task IDs (1-100), and the target status. Verifies all tasks exist in the project before updating. Returns the count of updated tasks.

expandTask

Breaks down a specified parent task into multiple subtasks based on provided descriptions. Requires the project ID, the parent task ID, and an array of descriptions for the new subtasks. Optionally allows forcing the replacement of existing subtasks using the 'force' flag. Returns the updated parent task details, including the newly created subtasks.

getNextTask

Identifies and returns the next actionable task within a specified project. A task is considered actionable if its status is 'todo' and all its dependencies (if any) have a status of 'done'. If multiple tasks are ready, the one with the highest priority ('high' > 'medium' > 'low') is chosen. If priorities are equal, the task created earliest is chosen. Returns the full details of the next task, or null if no task is currently ready.

exportProject

Exports the complete data set for a specified project as a JSON string. This includes project metadata, all tasks (hierarchically structured), and their dependencies. Requires the project ID. The format is fixed to JSON for V1. Returns the JSON string representing the project data.

importProject

Creates a *new* project by importing data from a JSON string. The JSON data must conform to the structure previously generated by the 'exportProject' tool. Performs validation on the input data (parsing, basic structure, size limit). Returns the unique project_id of the newly created project upon success.

updateTask

Updates specific details of an existing task within a project. Requires the project ID and task ID. Allows updating description, priority, and/or dependencies. At least one optional field (description, priority, dependencies) must be provided. Returns the full details of the updated task upon success.

deleteTask

Deletes one or more tasks within a specified project. Requires the project ID and an array of task IDs to delete. Note: Deleting a task also deletes its subtasks and dependency links due to database cascade rules. Returns the count of successfully deleted tasks.

deleteProject

Permanently deletes a project and ALL associated tasks and dependencies. Requires the project ID. This is a highly destructive operation and cannot be undone. Returns a success confirmation upon completion.

README

MCP Task Manager Server

<div align="center"> <img src="public/images/mcp-task-manager-logo.svg" alt="MCP Task Manager Logo" width="200" height="200" /> </div>

A local Model Context Protocol (MCP) server providing backend tools for client-driven project and task management using a SQLite database.

Overview

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:

  • Project-Based: Tasks are organized within distinct projects.
  • SQLite Persistence: Uses a local SQLite file (./data/taskmanager.db by default) for simple, self-contained data storage.
  • Client-Driven: Provides tools for clients; does not dictate workflow.
  • MCP Compliant: Adheres to the Model Context Protocol for tool definition and communication.
  • Task Management: Supports creating projects, adding tasks, listing/showing tasks, updating status, expanding tasks into subtasks, and identifying the next actionable task.
  • Import/Export: Allows exporting project data to JSON and importing from JSON to create new projects.

Implemented MCP Tools

The following tools are available for MCP clients:

  • createProject:
    • Description: Creates a new, empty project.
    • Params: projectName (string, optional, max 255)
    • Returns: { project_id: string }
  • addTask:
    • Description: Adds a new task to a project.
    • Params: 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')
    • Returns: Full TaskData object of the created task.
  • listTasks:
    • Description: Lists tasks for a project, with optional filtering and subtask inclusion.
    • Params: project_id (string, required, UUID), status (enum 'todo'|'in-progress'|'review'|'done', optional), include_subtasks (boolean, optional, default false)
    • Returns: Array of TaskData or StructuredTaskData objects.
  • showTask:
    • Description: Retrieves full details for a specific task, including dependencies and direct subtasks.
    • Params: project_id (string, required, UUID), task_id (string, required)
    • Returns: FullTaskData object.
  • setTaskStatus:
    • Description: Updates the status of one or more tasks.
    • Params: project_id (string, required, UUID), task_ids (string[], required, 1-100), status (enum 'todo'|'in-progress'|'review'|'done', required)
    • Returns: { success: true, updated_count: number }
  • expandTask:
    • Description: Breaks a parent task into subtasks, optionally replacing existing ones.
    • Params: project_id (string, required, UUID), task_id (string, required), subtask_descriptions (string[], required, 1-20, each 1-512), force (boolean, optional, default false)
    • Returns: Updated parent FullTaskData object including new subtasks.
  • getNextTask:
    • Description: Identifies the next actionable task based on status ('todo'), dependencies ('done'), priority, and creation date.
    • Params: project_id (string, required, UUID)
    • Returns: FullTaskData object of the next task, or null if none are ready.
  • exportProject:
    • Description: Exports complete project data as a JSON string.
    • Params: project_id (string, required, UUID), format (enum 'json', optional, default 'json')
    • Returns: JSON string representing the project.
  • importProject:
    • Description: Creates a new project from an exported JSON string.
    • Params: project_data (string, required, JSON), new_project_name (string, optional, max 255)
    • Returns: { project_id: string } of the newly created project.
  • updateTask:
    • Description: Updates specific details (description, priority, dependencies) of an existing task.
    • Params: 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)
    • Returns: Updated FullTaskData object.
  • deleteTask:
    • Description: Deletes one or more tasks (and their subtasks/dependency links via cascade).
    • Params: project_id (string, required, UUID), task_ids (string[], required, 1-100)
    • Returns: { success: true, deleted_count: number }
  • deleteProject:
    • Description: Permanently deletes a project and ALL associated data. Use with caution!
    • Params: project_id (string, required, UUID)
    • Returns: { success: true }

(Note: Refer to the corresponding src/tools/*Params.ts files for detailed Zod schemas and parameter descriptions.)

Getting Started

  1. Prerequisites: Node.js (LTS recommended), npm.

  2. Install Dependencies:

    npm install
    
  3. 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.

  4. Build for Production:

    npm run build
    
  5. Run Production Build:

    npm start
    

Configuration

  • Database Path: The location of the SQLite database file can be overridden by setting the DATABASE_PATH environment variable. The default is ./data/taskmanager.db.
  • Log Level: The logging level can be set using the LOG_LEVEL environment variable (e.g., debug, info, warn, error). The default is info.

Project Structure

  • /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.
  • Config files (package.json, tsconfig.json, .eslintrc.json, etc.)

Linting and Formatting

  • Lint: npm run lint
  • Format: npm run format

(Code is automatically linted/formatted on commit via Husky/lint-staged).

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured