Skip to main content
Glama
aafsar

Task Manager MCP Server

by aafsar

Task Manager MCP Server

A production-ready Task Manager server built with the Model Context Protocol (MCP), enabling AI assistants to manage tasks through a standardized interface. Built with TypeScript, Zod validation, and the official MCP SDK.

Features

  • āœ… 8 Comprehensive Tools: Create, list, update, delete, complete, search tasks, get statistics, and clear completed tasks

  • šŸ” Type-Safe: Built with TypeScript and runtime validation using Zod

  • šŸ“¦ Portable: Uses only official MCP SDK - no vendor lock-in

  • 🐳 Dockerized: Ready for containerized deployment

  • šŸ’¾ Persistent Storage: File-based JSON storage with environment-aware configuration

  • šŸ” Advanced Filtering: Filter tasks by status, priority, and category

  • šŸ“Š Statistics & Analytics: Track task completion rates, overdue items, and more

  • šŸŽÆ Production Ready: Comprehensive error handling and validation

Related MCP server: Todoist MCP Server

Quick Start

Prerequisites

  • Node.js 18+

  • npm 9+

Installation

# Clone the repository
git clone https://github.com/aafsar/task-manager-mcp-server.git
cd task-manager-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

# Run the server
npm start

Development Mode

# Run with hot reload
npm run dev

Available Tools

1. create_task

Create a new task with optional metadata.

Parameters:

  • title (string, required): Task title

  • description (string, optional): Detailed description

  • priority (enum, optional): "low", "medium", or "high" (default: "medium")

  • category (string, optional): Task category (e.g., "work", "personal")

  • dueDate (string, optional): Due date in YYYY-MM-DD format

Example:

{
  "title": "Review pull requests",
  "description": "Review open PRs for the API project",
  "priority": "high",
  "category": "work",
  "dueDate": "2025-10-05"
}

2. list_tasks

List tasks with optional filters.

Parameters:

  • status (enum, optional): "pending", "in_progress", "completed", or "all" (default: "all")

  • priority (enum, optional): "low", "medium", "high", or "all" (default: "all")

  • category (string, optional): Filter by specific category

Example:

{
  "status": "pending",
  "priority": "high"
}

3. update_task

Update any field of an existing task.

Parameters:

  • taskId (string, required): Task ID (minimum 8 characters)

  • title (string, optional): New title

  • description (string, optional): New description

  • priority (enum, optional): New priority

  • category (string, optional): New category

  • dueDate (string, optional): New due date

  • status (enum, optional): New status

Example:

{
  "taskId": "a1b2c3d4",
  "status": "in_progress",
  "priority": "high"
}

4. complete_task

Mark a task as completed.

Parameters:

  • taskId (string, required): Task ID (minimum 8 characters)

5. delete_task

Delete a task permanently.

Parameters:

  • taskId (string, required): Task ID (minimum 8 characters)

6. search_tasks

Search tasks by title or description.

Parameters:

  • query (string, required): Search query

Example:

{
  "query": "review"
}

7. get_task_stats

Get comprehensive statistics about all tasks.

Returns:

  • Total task count

  • Completion rate

  • Status breakdown (pending/in progress/completed)

  • Priority breakdown (high/medium/low)

  • Category distribution

  • Overdue task count

  • Tasks due within 7 days

8. clear_completed

Remove all completed tasks from storage.

Claude Desktop Integration

Configuration

  1. Locate your Claude Desktop config file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. Add the server configuration:

{
  "mcpServers": {
    "task-manager": {
      "command": "node",
      "args": [
        "/absolute/path/to/task-manager-mcp-server/dist/index.js"
      ]
    }
  }
}
  1. Restart Claude Desktop completely

  2. Look for the hammer icon (šŸ”Ø) in the input box

  3. Test with: "Create a high priority task called 'Test MCP Integration'"

Testing with MCP Inspector

The MCP Inspector provides a web-based interface for testing tools:

# Launch the inspector
npx @modelcontextprotocol/inspector dist/index.js

This will open a browser window where you can:

  • View all available tools

  • Test tool execution interactively

  • Inspect request/response data

  • Debug errors

Docker Deployment

Build and Run with Docker

# Build the image
docker build -t task-manager-mcp .

# Run the container
docker run -it task-manager-mcp

Using Docker Compose

# Start the service
docker-compose up -d

# View logs
docker-compose logs -f

# Stop the service
docker-compose down

Persist Data with Docker

Data is automatically persisted to a Docker volume. To back up your tasks:

# Export tasks
docker cp task-manager-mcp:/app/data/tasks.json ./backup-tasks.json

# Import tasks
docker cp ./backup-tasks.json task-manager-mcp:/app/data/tasks.json

Environment Variables

Configure the server using environment variables:

# Data storage directory (default: ./data)
DATA_DIR=/custom/path/to/data

# Log level
LOG_LEVEL=info

# Node environment
NODE_ENV=production

Create a .env file in the project root:

cp .env.example .env
# Edit .env with your values

Cloud Deployment Options

Railway

# Install Railway CLI
npm install -g @railway/cli

# Login
railway login

# Initialize project
railway init

# Deploy
railway up

Render

  1. Connect your GitHub repository

  2. Create a new Web Service

  3. Set build command: npm install && npm run build

  4. Set start command: npm start

  5. Deploy

Fly.io

# Install flyctl
curl -L https://fly.io/install.sh | sh

# Login
flyctl auth login

# Launch app
flyctl launch

# Deploy
flyctl deploy

Project Structure

task-manager-mcp-server/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts       # Main MCP server and request handlers
│   ā”œā”€ā”€ types.ts       # TypeScript interfaces and Zod schemas
│   ā”œā”€ā”€ storage.ts     # File-based storage module
│   └── tools.ts       # Tool implementation functions
ā”œā”€ā”€ dist/              # Compiled JavaScript (generated)
ā”œā”€ā”€ data/              # Task storage (JSON files, git-ignored)
ā”œā”€ā”€ Dockerfile         # Docker configuration
ā”œā”€ā”€ docker-compose.yml # Docker Compose setup
ā”œā”€ā”€ package.json       # Dependencies and scripts
ā”œā”€ā”€ tsconfig.json      # TypeScript configuration
└── README.md          # This file

Development

Scripts

npm run build      # Compile TypeScript to JavaScript
npm run dev        # Development mode with hot reload
npm run typecheck  # Type check without building
npm run clean      # Remove build artifacts
npm start          # Run production build

Type Safety

The project uses strict TypeScript settings and Zod for runtime validation:

  • Compile-time safety: TypeScript catches type errors during development

  • Runtime validation: Zod validates all tool inputs at runtime

  • Dual schema approach: JSON Schema for MCP protocol, Zod for validation

Adding New Tools

  1. Define Zod schema in src/types.ts

  2. Implement handler function in src/tools.ts

  3. Add tool definition to TOOLS array in src/index.ts

  4. Add case handler in tools/call switch statement

  5. Rebuild and test with MCP Inspector

Troubleshooting

"Cannot find module" errors

Ensure all imports use .js extension (even for .ts files):

import { Task } from "./types.js";  // āœ… Correct
import { Task } from "./types";     // āŒ Wrong

Tasks not persisting

  1. Check DATA_DIR environment variable

  2. Verify write permissions on data directory

  3. Check for errors in server logs

TypeScript compilation errors

# Run type checker to identify issues
npm run typecheck

# Common fix: ensure strict types are used
# Check tsconfig.json module settings

MCP Inspector not connecting

  1. Ensure server builds successfully: npm run build

  2. Check Node.js version (must be 18+)

  3. Verify no port conflicts

  4. Check firewall settings

Claude Desktop not showing tools

  1. Verify JSON syntax in config file

  2. Use absolute paths in configuration

  3. Restart Claude Desktop completely (Cmd+R / Ctrl+R not sufficient)

  4. Check server logs for errors

Resources

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Support

For issues and questions:

Available Tools

8 tools
clear_completedB

Remove all completed tasks

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. 'Remove all completed tasks' implies a destructive operation but doesn't specify if this is permanent deletion, archiving, or reversible. It doesn't mention side effects (e.g., affecting task statistics), permissions required, or rate limits. The description is minimal and lacks critical behavioral context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero wasted words. It's front-loaded with the core action and target, making it immediately understandable. Every word earns its place in conveying the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 inadequate. It doesn't explain what 'remove' entails (deletion vs. archiving), whether it's reversible, what permissions are needed, or what the response looks like. Given the complexity of a batch removal operation and lack of structured data, more context is needed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (empty schema). The description doesn't need to explain parameters, so it meets baseline expectations. No additional parameter semantics are required or provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Remove all completed tasks' clearly states the action (remove) and target resource (completed tasks). It distinguishes from siblings like 'delete_task' (specific task deletion) and 'complete_task' (marking tasks as complete). However, it doesn't specify whether this applies to all tasks globally or within a specific scope, which prevents a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'delete_task' (for individual tasks) or 'complete_task' (for marking tasks as complete). It doesn't mention prerequisites, permissions needed, or whether this is irreversible versus archiving. The agent must infer usage from the name alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_taskC

Mark a task as completed

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID (use first 8 characters)

TDQS

C2.9/5.0
Behavior2/5

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 states the tool marks a task as completed, implying a mutation, but doesn't address permissions, whether the change is reversible, side effects, or response format. This is inadequate for a mutation tool without annotation support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste. It's front-loaded with the core action, making it easy to parse quickly, which is ideal for conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks details on behavioral traits (e.g., error handling, permissions) and doesn't compensate for the absence of structured data, making it insufficient for safe and effective use by an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'taskId' fully documented in the schema. The description doesn't add any meaning beyond the schema, such as format examples or contextual usage, so it meets the baseline for high schema coverage without providing extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Mark as completed') and resource ('a task'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'update_task' which might also handle task completion, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives like 'update_task' or 'clear_completed'. The description doesn't mention prerequisites (e.g., task must exist) or exclusions, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_taskC

Create a new task

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesTask title (required)
descriptionNoDetailed description
priorityNoTask prioritymedium
categoryNoTask category (work/personal/etc)
dueDateNoDue date in YYYY-MM-DD format

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It states 'Create a new task', implying a write/mutation operation, but doesn't disclose behavioral traits such as permissions needed, whether creation is idempotent, error handling, or what happens on success (e.g., returns a task ID). This is a significant gap for a mutation tool with zero 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with zero waste: 'Create a new task'. It's appropriately sized and front-loaded, making it easy to parse quickly without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., a task object or ID), error conditions, or system-specific context (e.g., where tasks are stored). For a 5-parameter tool with rich schema but missing behavioral context, this is inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all parameters well-documented in the schema (e.g., title as required, priority enum, due date format). The description adds no parameter semantics beyond what the schema provides, so it meets the baseline of 3 where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Create a new task' clearly states the action (create) and resource (task), which is adequate. However, it doesn't distinguish this tool from sibling tools like 'update_task' or specify what kind of task system this is (e.g., todo list, project management). It's not tautological but remains somewhat vague about scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., authentication), when not to use it (e.g., for updating existing tasks), or refer to sibling tools like 'update_task' for modifications. This leaves the agent without contextual usage cues.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_taskC

Delete a task by ID

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID (use first 8 characters)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Delete' implies a destructive mutation, it doesn't specify whether deletion is permanent or reversible, what permissions are required, or what happens to associated data. For a destructive tool with zero annotation coverage, this leaves critical behavioral traits undocumented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is maximally concise with a single, direct sentence that states exactly what the tool does. There's no wasted language or unnecessary elaboration, making it immediately scannable and front-loaded with the essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive operation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address critical context like whether deletion is permanent, what confirmation or warnings might apply, what happens on success/failure, or how this differs from other task-modification tools in the sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the single parameter 'taskId' fully documented in the schema (including format guidance to 'use first 8 characters'). The description adds no additional parameter semantics beyond what the schema already provides, meeting the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Delete') and target resource ('a task by ID'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'clear_completed' or 'complete_task' that also affect task state, missing an opportunity to clarify its specific role in the task management system.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided about when to use this tool versus alternatives. With siblings like 'clear_completed' (which might delete multiple tasks) and 'complete_task' (which changes status rather than removing), the description offers no context about appropriate use cases, prerequisites, or warnings about this destructive operation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_task_statsC

Get statistics about all tasks

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets statistics' but doesn't clarify what statistics are included (e.g., counts, averages, trends), whether it's read-only or has side effects, or any performance considerations like rate limits. This leaves significant gaps for a tool with no structured safety hints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence that directly states the tool's function without unnecessary words. It's front-loaded with the core action, though it could be slightly more specific (e.g., 'Get aggregated statistics') to enhance clarity without losing conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of statistical tools (which often involve aggregation, time ranges, or filters) and the absence of both annotations and an output schema, the description is incomplete. It doesn't explain what statistics are returned, how data is aggregated, or any prerequisites, making it inadequate for an agent to use effectively without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate, earning a baseline score of 4 for adequately handling the lack of parameters without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the action ('Get statistics') and resource ('tasks'), making the purpose clear. However, it doesn't differentiate from sibling tools like 'list_tasks' or 'search_tasks' that also retrieve task information, leaving ambiguity about what distinguishes statistical data from basic listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'list_tasks' or 'search_tasks'. The description implies usage for statistical purposes but doesn't specify contexts (e.g., reporting vs. viewing) or exclusions, leaving the agent to infer based on tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tasksC

List tasks with optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoFilter by statusall
priorityNoFilter by priorityall
categoryNoFilter by category

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that it lists tasks with optional filters, lacking details on permissions, rate limits, pagination, or response format. For a read operation with no annotation coverage, this leaves significant gaps in understanding how the tool behaves beyond basic functionality.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with a single sentence that front-loads the core purpose ('List tasks') and adds essential context ('with optional filters'). There is no wasted language, making it efficient and easy to parse for an agent, though it could benefit from more detail in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of annotations and output schema, the description is incomplete for a tool with three parameters and multiple siblings. It doesn't explain return values, error handling, or when to prefer this over similar tools like 'search_tasks'. For a list operation in a task management context, more guidance on behavior and usage is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for all parameters (status, priority, category). The description adds no additional meaning beyond the schema, as it only mentions 'optional filters' without elaborating on parameter usage or interactions. This meets the baseline for high schema coverage, where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and resource 'tasks' with the purpose of retrieving tasks with optional filtering. It distinguishes from siblings like 'search_tasks' by focusing on listing rather than searching, though it doesn't explicitly differentiate them. The purpose is specific and actionable, making it easy for an agent to understand the core function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'search_tasks' or 'get_task_stats'. It mentions optional filters but doesn't specify scenarios or prerequisites for usage. Without any context on exclusions or comparisons, the agent must infer usage from the tool name alone, which is insufficient for optimal selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_tasksC

Search tasks by title or description

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden but only states the basic function. It lacks details on behavioral traits such as permissions needed, rate limits, response format, pagination, or whether it's read-only (implied but not confirmed).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words, clearly front-loading the purpose. It is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with no annotations and no output schema, the description is incomplete. It lacks details on return values, error handling, or behavioral context, leaving significant gaps for an AI agent to understand full usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 'query' parameter. The description adds minimal value by implying the query searches 'title or description', but does not provide additional syntax, examples, or constraints beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('search') and resource ('tasks'), with the scope 'by title or description' providing specificity. It distinguishes from siblings like 'list_tasks' by implying filtering, though not explicitly contrasting them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'list_tasks' or other siblings. The description implies a search function but does not specify contexts, prerequisites, or exclusions for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_taskC

Update an existing task

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYesTask ID (use first 8 characters)
titleNoNew title
descriptionNoNew description
priorityNoNew priority
categoryNoNew category
dueDateNoNew due date (YYYY-MM-DD)
statusNoNew status

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether updates are partial or full, if it requires specific permissions, what happens to unspecified fields, error conditions, or response format. 'Update' implies mutation, but no safety or operational details are given.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. It's front-loaded with the core action, though it could be more informative. The brevity is appropriate but borders on under-specification given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with 7 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, error handling, or behavioral nuances. The schema covers parameters, but the description fails to provide necessary context for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all 7 parameters. The description adds no additional meaning beyond implying these are fields that can be updated. Baseline 3 is appropriate since the schema handles parameter documentation, though the description doesn't compensate with context like update constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Update an existing task' clearly states the action (update) and resource (task), but it's vague about scope and doesn't distinguish from siblings like 'complete_task' or 'delete_task'. It specifies 'existing' which helps differentiate from 'create_task', but lacks detail about what aspects can be updated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'complete_task' (which might update status) or 'delete_task'. The description implies it's for general updates, but doesn't specify prerequisites, constraints, or typical use cases relative to sibling tools.

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.

  1. 8 tool updates
    • First observedclear_completed
    • First observedcomplete_task
    • First observedcreate_task
    • First observeddelete_task
    • First observedget_task_stats
    • First observedlist_tasks
    • First observedsearch_tasks
    • First observedupdate_task

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity. For example, create_task, update_task, delete_task, and complete_task handle different lifecycle actions, while list_tasks, search_tasks, and get_task_stats serve distinct querying functions. The clear separation prevents misselection.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as create_task, update_task, and list_tasks. This uniformity makes the tool set predictable and easy to understand, with no deviations in naming conventions.

Tool Count5/5

With 8 tools, the server is well-scoped for task management, covering essential operations like CRUD, querying, and statistics. Each tool earns its place without feeling excessive or insufficient for the domain.

Completeness5/5

The tool surface provides complete coverage for task management, including create, read (list/search), update, delete, and lifecycle actions (complete/clear). There are no obvious gaps, ensuring agents can handle full workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

Latest Blog Posts

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/aafsar/task-manager-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server