MCP Task Manager Server
The MCP Task Manager Server is a backend tool for managing tasks within projects using a SQLite database. It provides these capabilities:
Project Management: Create, delete, and export/import projects as JSON
Task Management: Add, list, show, update, and delete tasks with descriptions, priorities, and dependencies
Task Organization: Break down tasks into subtasks and manage their relationships
Status Tracking: Update and filter tasks by their completion status
Workflow Optimization: Identify the next actionable task based on dependencies, status, priority, and creation date
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Task Manager Serveradd a high priority task to finish the quarterly report by Friday"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
# MCP Task Manager Server
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.dbby 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.
Related MCP server: MATRIX
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
TaskDataobject 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
TaskDataorStructuredTaskDataobjects.
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:
FullTaskDataobject.
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
FullTaskDataobject 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:
FullTaskDataobject of the next task, ornullif 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
FullTaskDataobject.
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
Prerequisites: Node.js (LTS recommended), npm.
Install Dependencies:
npm installRun in Development Mode: (Uses
ts-nodeandnodemonfor auto-reloading)npm run devThe 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 buildRun Production Build:
npm start
Configuration
Database Path: The location of the SQLite database file can be overridden by setting the
DATABASE_PATHenvironment variable. The default is./data/taskmanager.db.Log Level: The logging level can be set using the
LOG_LEVELenvironment variable (e.g.,debug,info,warn,error). The default isinfo.
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 lintFormat:
npm run format
(Code is automatically linted/formatted on commit via Husky/lint-staged).
Available Tools
12 toolsaddTaskA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dependencies | No | An optional list of task IDs (strings) that must be completed before this task can start (max 50). | |
| description | Yes | The textual description of the task to be performed (1-1024 characters). | |
| priority | No | Optional task priority. Defaults to 'medium' if not specified. | medium |
| project_id | Yes | The unique identifier (UUID) of the project to add the task to. This project must already exist. | |
| status | No | Optional initial status of the task. Defaults to 'todo' if not specified. | todo |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions that the tool 'Returns the full details of the newly created task upon success', which adds some behavioral context. However, it lacks details on permissions, error conditions, or side effects (e.g., whether dependencies are validated). For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by parameter and return details in clear, concise sentences. Every sentence adds value without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with 5 parameters) and lack of annotations or output schema, the description is moderately complete. It covers the purpose, parameters, and return value, but it could better address behavioral aspects like error handling or dependencies validation. It is adequate but has gaps in transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description lists the parameters ('project ID', 'description', 'dependency task IDs', 'priority level', 'initial status') but does not add meaningful semantics beyond what the schema provides, such as explaining interactions between parameters. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Adds a new task') and the target resource ('to a specified project within the Task Management Server'), which is specific and unambiguous. It distinguishes this tool from sibling tools like 'createProject' (which creates projects) and 'updateTask' (which modifies existing tasks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by mentioning required parameters ('Requires the project ID and a description'), but it does not explicitly state when to use this tool versus alternatives like 'updateTask' or 'setTaskStatus'. No guidance is provided on prerequisites or exclusions beyond the parameter requirements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createProjectA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| projectName | No | Optional human-readable name for the new project (max 255 chars). If omitted, a default name like 'New Project [timestamp]' will be used. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that the tool creates a new entry (mutation behavior), returns a UUID, and handles default naming. However, it lacks details on permissions, error conditions, or side effects, which are important for a creation tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by usage context, return value, and parameter details in four concise sentences. Each sentence adds essential information without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (creation operation with one optional parameter) and no output schema, the description adequately covers the purpose, return value, and parameter behavior. However, it could improve by addressing potential errors or constraints, as annotations are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the optional nature of the parameter and the consequence of omission (default name generation), which enhances understanding beyond the schema's technical details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Creates a new, empty project entry'), resource ('in the Task Management Server database'), and distinguishes it from siblings like 'importProject' or 'exportProject' by specifying it creates an empty entry rather than importing data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context ('used by clients to initiate a new workspace for tasks') but does not explicitly state when to use this tool versus alternatives like 'importProject' or provide exclusions. It mentions the optional name parameter but lacks guidance on prerequisites or scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteProjectA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The unique identifier (UUID) of the project to permanently delete. This project must exist. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively communicates key traits: the operation is 'highly destructive,' 'cannot be undone,' deletes 'ALL associated tasks and dependencies,' and 'returns a success confirmation.' This covers safety, side effects, and output expectations comprehensively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and impact, followed by parameter and behavioral details in three concise sentences. Each sentence adds critical information (destructive nature, parameter requirement, confirmation output) with zero waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is highly complete: it explains the action, scope (project+tasks+dependencies), irreversible nature, parameter need, and confirmation return. The only minor gap is lack of explicit error cases or permissions, but it compensates well given the context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the project_id parameter as a required UUID for an existing project. The description adds minimal value beyond this, only stating 'Requires the project ID' without additional context like format or validation rules. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('permanently deletes') and resource ('a project and ALL associated tasks and dependencies'), distinguishing it from siblings like deleteTask (which only deletes tasks) and createProject (which creates rather than deletes). The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that this is for deleting projects and their associated content, implying it should be used when complete project removal is needed. However, it does not explicitly state when NOT to use it (e.g., vs. deleteTask for individual tasks) or name alternatives, though the sibling list includes deleteTask as a logical alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteTaskA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The unique identifier (UUID) of the project containing the tasks to delete. This project must exist. | |
| task_ids | Yes | An array of task IDs (UUIDs, 1-100) to be deleted from the specified project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: the cascade effect ('deletes its subtasks and dependency links due to database cascade rules'), the return value ('Returns the count of successfully deleted tasks'), and the batch operation nature ('one or more tasks'). However, it doesn't mention permission requirements, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly structured and concise with four sentences: purpose statement, parameter requirements, important behavioral note, and return value. Every sentence adds essential information with zero waste, and it's front-loaded with the core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description does well by explaining the cascade behavior and return value. However, it could be more complete by mentioning authentication needs, error responses, or idempotency. Given the complexity of a batch delete operation, there's room for slightly more context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds minimal value beyond the schema by mentioning that parameters are 'required' and that task_ids is 'an array,' but doesn't provide additional semantic context like format examples or edge cases. Baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Deletes') and resource ('one or more tasks within a specified project'), distinguishing it from siblings like deleteProject (which deletes projects) or setTaskStatus (which modifies tasks). The verb+resource combination is precise and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'within a specified project' and requiring project_id and task_ids, but it doesn't explicitly state when to use this tool versus alternatives like deleteProject or updateTask. No guidance is provided on prerequisites, error conditions, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
expandTaskB
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.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | Optional flag (default false). If true, any existing subtasks of the parent task will be deleted before creating the new ones. If false and subtasks exist, the operation will fail. | |
| project_id | Yes | The unique identifier (UUID) of the project containing the parent task. | |
| subtask_descriptions | Yes | An array of descriptions (1-20) for the new subtasks to be created under the parent task. | |
| task_id | Yes | The unique identifier of the parent task to be expanded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: it can replace existing subtasks with the 'force' flag, and the operation may fail if subtasks exist and 'force' is false. However, it doesn't cover aspects like permissions needed, rate limits, or error handling details, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with four sentences that are front-loaded with the core purpose. Each sentence adds value: purpose, required inputs, optional behavior, and return details. There's no wasted text, though it could be slightly more structured for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description provides basic completeness for a mutation tool: it states the action, inputs, and return value. However, it lacks details on error cases, side effects, or output structure, which are important for a tool that modifies data. This makes it adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value beyond the schema by mentioning the parameters (project ID, parent task ID, subtask descriptions, force flag) but doesn't provide additional semantic context or usage examples. Baseline 3 is appropriate given high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Breaks down a specified parent task into multiple subtasks based on provided descriptions.' It uses specific verbs ('breaks down,' 'creates') and identifies the resource (parent task). However, it doesn't explicitly differentiate from sibling tools like 'addTask' or 'updateTask,' which might also modify tasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning the need for a parent task and project ID, but it doesn't provide explicit guidance on when to use this tool versus alternatives like 'addTask' or 'updateTask.' It hints at a specific scenario (breaking down tasks into subtasks) but lacks clear when-to-use or when-not-to-use statements.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
exportProjectA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Optional format for the export. Currently only 'json' is supported (default). | json |
| project_id | Yes | The unique identifier (UUID) of the project to export. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the export includes 'complete data set' with metadata, tasks, and dependencies, and that the format is fixed to JSON. However, it lacks details on permissions, rate limits, or side effects (e.g., if this is a read-only operation or generates files).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by specific inclusions and constraints. Each sentence adds essential information without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers the basic purpose and output format but lacks details on behavioral aspects like error handling or the structure of the returned JSON string. It is adequate for a simple export tool but could be more complete for a tool with potential complexity in data retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters fully. The description adds minimal value by mentioning 'Requires the project ID' and 'format is fixed to JSON', which aligns with but does not significantly expand beyond the schema's details for 'project_id' and 'format'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Exports'), the resource ('complete data set for a specified project'), and the output format ('as a JSON string'). It distinguishes from siblings like 'importProject' (which imports) and 'listTasks' (which lists only tasks).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by stating 'Requires the project ID' and 'The format is fixed to JSON for V1', but it does not explicitly say when to use this tool versus alternatives like 'showTask' or 'listTasks' for partial data, nor does it mention prerequisites beyond the ID.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
getNextTaskA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The unique identifier (UUID) of the project to find the next task for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly describes the selection algorithm (status, dependencies, priority, creation order) and return behavior (full details or null), which are crucial for understanding how the tool operates. It does not mention error handling, performance, or side effects, but covers core behavior adequately.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose in the first sentence, followed by detailed selection criteria and return behavior in concise sentences. Each sentence adds necessary information without redundancy, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the selection logic and no output schema, the description provides a complete explanation of how the next task is chosen and what is returned (full details or null). It lacks details on error cases or output format specifics, but for a tool with no annotations, it covers the essential context adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with the parameter 'project_id' documented as a UUID for the project. The description does not add any additional meaning beyond the schema, such as explaining what constitutes a valid project or how it relates to task selection. Baseline score of 3 is appropriate as the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('identifies and returns') and resource ('next actionable task within a specified project'), distinguishing it from siblings like listTasks (which lists all tasks) or showTask (which shows a specific task). It explains the selection logic, making the purpose explicit and distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying that it finds the next task based on status, dependencies, priority, and creation time, suggesting it's for workflow management. However, it does not explicitly state when to use this tool versus alternatives like listTasks or setTaskStatus, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
importProjectA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| new_project_name | No | Optional name for the newly created project (max 255 chars). If omitted, a name based on the original project name and import timestamp will be used. | |
| project_data | Yes | Required. A JSON string containing the full project data, conforming to the export structure. Max size e.g., 10MB. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behaviors: it creates a new project (implying mutation), performs validation (parsing, structure, size limits), and returns a project_id upon success. It misses details like error handling or permissions, but covers essential operational traits beyond basic purpose.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by validation and return details in four concise sentences. Each sentence adds value without waste, making it easy to scan and understand quickly. The structure is logical and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description is fairly complete for a creation tool: it explains the action, input requirements, validation, and return value. It could improve by mentioning error cases or dependencies more explicitly, but it covers the essentials well for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds no specific parameter semantics beyond implying 'project_data' must match the export structure, which is redundant with the schema. Baseline 3 is appropriate as the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Creates a *new* project by importing data from a JSON string'), identifies the resource ('project'), and distinguishes it from siblings like 'createProject' by specifying the import mechanism and dependency on 'exportProject' output. The asterisks emphasize the creation aspect, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool: when importing project data from a JSON string that conforms to the 'exportProject' structure. However, it does not explicitly state when not to use it (e.g., vs. 'createProject' for manual creation) or name alternatives, though the dependency on 'exportProject' implies a specific workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listTasksB
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.
| Name | Required | Description | Default |
|---|---|---|---|
| include_subtasks | No | Optional flag (default false). If true, the response will include subtasks nested within their parent tasks. | |
| project_id | Yes | The unique identifier (UUID) of the project whose tasks are to be listed. This project must exist. | |
| status | No | Optional filter to return only tasks matching the specified status. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool 'Retrieves' (implying read-only) and describes output format ('array of task objects'), but lacks details on permissions, rate limits, pagination, error handling, or what happens with invalid inputs. For a tool with no annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficiently structured with four sentences that each add value: purpose, filtering option, subtask inclusion, and return type. It's front-loaded with the core purpose and avoids redundancy. Every sentence earns its place without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 100% schema coverage, the description is adequate but incomplete. It covers the basic purpose and parameters but lacks behavioral context (e.g., error scenarios, permissions) and output details (e.g., task object structure). For a tool with siblings like 'expandTask', more differentiation would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all three parameters. The description adds minimal value beyond the schema: it mentions optional filtering by status and subtask inclusion, but doesn't provide additional context like format examples or edge cases. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Retrieves') and resource ('list of tasks for a specified project'). It distinguishes from siblings like 'showTask' (single task) and 'getNextTask' (specific next task) by emphasizing listing multiple tasks. However, it doesn't explicitly differentiate from 'expandTask' which might also retrieve tasks with subtasks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing a list of tasks for a project with optional filtering and subtask inclusion. It doesn't explicitly state when to use this vs alternatives like 'showTask' for single tasks or 'getNextTask' for workflow management. No guidance on prerequisites (e.g., project must exist) or exclusions is provided beyond what's in the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setTaskStatusA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The unique identifier (UUID) of the project containing the tasks. | |
| status | Yes | The target status to set for the specified tasks. | |
| task_ids | Yes | An array of task IDs (1-100) whose status should be updated. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behaviors: it verifies task existence before updating (safety mechanism), handles batch updates (1-100 tasks), and returns a count of updated tasks. However, it doesn't mention error handling, permission requirements, or whether the operation is idempotent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four concise sentences with zero waste: first states purpose, second lists required parameters, third describes verification behavior, fourth specifies return value. Each sentence earns its place by adding distinct value. The description is appropriately sized and front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description does well by explaining the verification behavior and return value. However, it doesn't cover error scenarios, permission requirements, or what happens when some tasks don't exist. Given the complexity of a batch update operation, some additional context would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents all three parameters. The description adds minimal value beyond the schema - it mentions the status enum values and the 1-100 task ID range, but these are already in the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Updates the status'), resource ('tasks within a specified project'), and scope ('one or more tasks'). It distinguishes this tool from siblings like 'updateTask' by focusing specifically on status updates rather than general task modifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through parameter requirements but doesn't explicitly state when to use this tool versus alternatives like 'updateTask'. It mentions prerequisites (project ID, task IDs, status) but doesn't provide guidance on when this tool is preferred over other task-modification tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
showTaskA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The unique identifier (UUID) of the project the task belongs to. | |
| task_id | Yes | The unique identifier of the task to retrieve details for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that it retrieves details (read operation) and specifies what's included (dependencies, direct subtasks), but lacks information about error handling, permissions needed, or rate limits. It adequately describes the core behavior but misses some operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with zero waste: first states purpose, second states requirements, third states return value. Each sentence earns its place by providing essential information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 2 parameters, 100% schema coverage, and no output schema, the description is reasonably complete. It covers purpose, requirements, and return content. However, without annotations or output schema, it could benefit from more detail on error cases or exact return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds no additional parameter semantics beyond stating they are required, which is already clear from the schema. Baseline 3 is appropriate when schema does all the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Retrieves'), the resource ('full details of a single, specific task'), and distinguishes it from siblings by specifying it returns details including dependencies and direct subtasks, unlike listTasks (which lists multiple tasks) or getNextTask (which focuses on next task).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Requires the project ID and the task ID', providing clear prerequisites. It distinguishes from listTasks by focusing on a single task, but does not explicitly mention when NOT to use it or name alternatives beyond what's implied by sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateTaskA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dependencies | No | Optional. The complete list of task IDs (UUIDs) that this task depends on. Replaces the existing list entirely. Max 50 dependencies. | |
| description | No | Optional. The new textual description for the task (1-1024 characters). | |
| priority | No | Optional. The new priority level for the task ('high', 'medium', or 'low'). | |
| project_id | Yes | The unique identifier (UUID) of the project containing the task to update. This project must exist. | |
| task_id | Yes | The unique identifier (UUID) of the task to update. This task must exist within the specified project. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions that the tool returns the full details of the updated task upon success, which is useful. However, it doesn't cover critical aspects like authentication requirements, rate limits, error conditions, or whether the update is reversible, leaving gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by requirements, allowed updates, constraints, and return behavior in four concise sentences. Each sentence adds essential information without redundancy, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations and no output schema, the description is adequate but incomplete. It covers the basic operation and return, but lacks details on error handling, side effects, or performance considerations. With 100% schema coverage, it's minimally viable but could provide more behavioral context for better agent guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds minimal value by listing the optional fields (description, priority, dependencies) and noting that at least one must be provided, but this doesn't significantly enhance understanding beyond the schema's detailed descriptions. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Updates') and resource ('specific details of an existing task within a project'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'setTaskStatus' or 'expandTask', which might also modify task properties, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by specifying required parameters (project ID and task ID) and stating that at least one optional field must be provided, but it doesn't offer explicit guidance on when to use this tool versus alternatives like 'setTaskStatus' for status changes or 'expandTask' for other modifications. The context is clear but lacks sibling differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
12 tool updates
v1.0.0- First observed
addTask - First observed
createProject - First observed
deleteProject - First observed
deleteTask - First observed
expandTask - First observed
exportProject - First observed
getNextTask - First observed
importProject - First observed
listTasks - First observed
setTaskStatus - First observed
showTask - First observed
updateTask
TDQS
Every tool has a clearly distinct purpose with no ambiguity. For example, 'addTask' creates a new task, 'updateTask' modifies an existing one, 'showTask' retrieves a single task, and 'listTasks' retrieves multiple tasks, all with well-defined boundaries. Tools like 'getNextTask' and 'expandTask' offer unique functionality that doesn't overlap with others.
The naming follows a consistent verb_noun pattern throughout, such as 'addTask', 'createProject', 'deleteProject', 'exportProject', and 'importProject'. There is one minor deviation with 'showTask' (where 'getTask' might be more consistent with 'getNextTask'), but overall the pattern is highly predictable and readable.
With 12 tools, the count is well-scoped for a task management server, covering core operations like CRUD for tasks and projects, status management, and advanced features like import/export and task breakdown. Each tool earns its place without feeling excessive or insufficient for the domain.
The tool set provides complete CRUD/lifecycle coverage for task management, including project creation, deletion, import/export, and task operations from addition to deletion, status updates, and retrieval. There are no obvious gaps; agents can manage tasks end-to-end without dead ends, such as handling dependencies, priorities, and hierarchical structures.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Project management MCP for AI agents with safe task reads and writes.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
- mcpOAuthnet.todoist
Official Todoist MCP server for AI assistants to manage tasks, projects, and workflows.
Related MCP Servers
- AlicenseBqualityDmaintenanceA Model Context Protocol server providing AI assistants with comprehensive project, task, and subtask management capabilities with project-specific storage.293888MIT
- AlicenseNot gradedqualityBmaintenanceA local, project-scoped requirement management MCP server that enables AI agents to manage tasks and requirements via SQLite.18MIT
- FlicenseBqualityCmaintenanceA Model Context Protocol server implementing a Getting Things Done assistant with tools for tasks, projects, inbox, next actions, and statistics. Supports local SQLite and Databricks deployment.17-
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for intelligent task management in AI-powered development environments, providing file-based storage, dependency management with cycle detection, and an interactive CLI.14MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/bsmi021/mcp-task-manager-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server