Skip to main content
Glama
0Thomas1

Kanban MCP Server

by 0Thomas1

move-task

Change task status in Kanban boards by moving tasks between todo, in progress, and done columns to track workflow progress.

Instructions

move a task to a different status

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
task_idYes
new_statusYes

Implementation Reference

  • Core handler logic for moving a task: finds the task by ID, updates its status, and saves to database.
    export async function moveTask(
      taskId: string,
      newStatus: "todo" | "inProgress" | "done"
    ) {
      try {
        const task = await Task.findById(taskId);
        if (!task) {
          throw new Error("Task not found");
        }
    
        task.taskStatus = newStatus;
        await task.save();
      } catch {
        throw new Error("Failed to move task");
      }
    }
  • Zod input schema for the move-task tool parameters.
    {
      task_id: z.string(),
      new_status: z.enum(["todo", "inProgress", "done"]),
    },
  • src/index.ts:76-111 (registration)
    Registration of the 'move-task' tool with MCP server, including description, schema, hints, and wrapper handler.
    server.tool(
      "move-task",
      "move a task to a different status",
      {
        task_id: z.string(),
        new_status: z.enum(["todo", "inProgress", "done"]),
      },
      {
        title: "move a task to a different status",
        readonlyHint: false,
        destructiveHint: false,
        idempotentHint: false,
        openWorldHint: true,
      },
      async (params) => {
        try {
          await mongooseUtils.moveTask(params.task_id, params.new_status);
          return {
            content: [
              {
                type: "text",
                text: `Task "${params.task_id}" moved to "${params.new_status}" successfully!`,
              },
            ],
          };
        } catch {
          return {
            content: [
              {
                type: "text",
                text: `Failed to move task "${params.task_id}" to "${params.new_status}".`,
              },
            ],
          };
        }
      }
  • Mongoose model schema defining the taskStatus field with matching enum values used by the tool.
    taskStatus: {
      type: String,
      enum: ["todo", "inProgress", "done"],
      default: "todo",
    },
Behavior4/5

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

Annotations provide openWorldHint=true (allows unknown statuses), idempotentHint=false (non-idempotent), and destructiveHint=false (non-destructive). The description adds no behavioral details beyond this, but since annotations cover key traits (non-destructive, non-idempotent), the bar is lower. No contradiction exists, and the description doesn't add extra context like rate limits or auth needs, but it doesn't mislead either.

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: 'move a task to a different status'. It's front-loaded with the core action, has zero waste, and is appropriately sized for the tool's complexity. Every word earns its place, making it highly concise and well-structured.

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

Completeness3/5

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

Given 2 parameters with 0% schema coverage, no output schema, and annotations covering safety (non-destructive) and idempotency, the description is minimal but adequate for a simple status-change tool. It lacks details on return values, error cases, or side effects, but annotations help fill gaps. For this complexity, it's borderline complete but could be more informative.

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 0%, so the description must compensate, but it adds no parameter details. It implies 'task_id' and 'new_status' usage but doesn't explain semantics (e.g., what 'new_status' values mean or format for 'task_id'). With 2 parameters and no schema descriptions, baseline is low, but the enum for 'new_status' provides some structure. The description offers minimal value beyond the schema.

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 'move a task to a different status' clearly states the action (move) and resource (task), but it's somewhat vague about what 'move' entails—it could imply changing status, reassigning, or relisting. It distinguishes from siblings like 'create-task' (creation vs. modification) and 'add-tag' (tagging vs. status change), but lacks specificity on the exact operation beyond the title restatement.

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., task must exist), exclusions (e.g., cannot move to same status), or compare to siblings like 'set-priority' for priority changes. Usage is implied by the action but not explicitly defined, leaving gaps for an agent to infer context.

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

Install Server

Other Tools

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/0Thomas1/Kanban-MCP'

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