Skip to main content
Glama
bsmi021

MCP Task Manager Server

by bsmi021

MCP タスクマネージャーサーバー

SQLite データベースを使用してクライアント主導のプロジェクトおよびタスク管理用のバックエンド ツールを提供するローカル モデル コンテキスト プロトコル (MCP) サーバー。

概要

このサーバーは、個別のプロジェクト内の構造化されたタスクデータを管理する必要があるローカルMCPクライアント(AIエージェントやスクリプトなど)の永続的なバックエンドとして機能します。データストレージを処理し、インタラクションのための標準化されたツールセットを提供します。一方、戦略的なワークフローロジックはクライアント内に存在します。

主な機能:

  • **プロジェクトベース:**タスクは個別のプロジェクト内で整理されます。

  • **SQLite 永続性:**シンプルで自己完結的なデータ ストレージとして、ローカル SQLite ファイル (デフォルトでは./data/taskmanager.db ) を使用します。

  • **クライアント主導:**クライアントにツールを提供しますが、ワークフローを指示しません。

  • **MCP 準拠:**ツールの定義と通信のためのモデル コンテキスト プロトコルに準拠します。

  • **タスク管理:**プロジェクトの作成、タスクの追加、タスクの一覧表示/表示、ステータスの更新、タスクのサブタスクへの拡張、次に実行可能なタスクの特定をサポートします。

  • **インポート/エクスポート:**プロジェクト データを JSON にエクスポートし、JSON からインポートして新しいプロジェクトを作成できます。

Related MCP server: MATRIX

実装されたMCPツール

MCP クライアントでは次のツールが利用可能です。

  • createProject :

    • **説明:**新しい空のプロジェクトを作成します。

    • パラメータ: projectName (文字列、オプション、最大 255)

    • 戻り値: { project_id: string }

  • addTask :

    • **説明:**プロジェクトに新しいタスクを追加します。

    • パラメータ: project_id (文字列、必須、UUID)、 description (文字列、必須、1-1024)、 dependencies (文字列[]、オプション、最大 50)、 priority (列挙型 'high'|'medium'|'low'、オプション、デフォルト 'medium')、 status (列挙型 'todo'|'in-progress'|'review'|'done'、オプション、デフォルト 'todo')

    • **戻り値:**作成されたタスクの完全なTaskDataオブジェクト。

  • listTasks :

    • **説明:**オプションのフィルタリングとサブタスクの組み込みを使用して、プロジェクトのタスクを一覧表示します。

    • パラメータ: project_id (文字列、必須、UUID)、 status (列挙型 'todo'|'in-progress'|'review'|'done'、オプション)、 include_subtasks (ブール値、オプション、デフォルトは false)

    • 戻り値: TaskDataまたはStructuredTaskDataオブジェクトの配列。

  • showTask :

    • **説明:**依存関係や直接のサブタスクなど、特定のタスクの完全な詳細を取得します。

    • パラメータ: project_id (文字列、必須、UUID)、 task_id (文字列、必須)

    • 戻り値: FullTaskDataオブジェクト。

  • setTaskStatus :

    • 説明: 1 つ以上のタスクのステータスを更新します。

    • パラメータ: project_id (文字列、必須、UUID)、 task_ids (文字列[]、必須、1-100)、 status (列挙型 'todo'|'in-progress'|'review'|'done'、必須)

    • 戻り値: { success: true, updated_count: number }

  • expandTask :

    • **説明:**親タスクをサブタスクに分割し、必要に応じて既存のタスクを置き換えます。

    • パラメータ: project_id (文字列、必須、UUID)、 task_id (文字列、必須)、 subtask_descriptions (文字列[]、必須、1〜20、それぞれ1〜512)、 force (ブール値、オプション、デフォルトは false)

    • **戻り値:**新しいサブタスクを含む更新された親FullTaskDataオブジェクト。

  • getNextTask :

    • **説明:**ステータス (「todo」)、依存関係 (「done」)、優先度、作成日に基づいて、次に実行可能なタスクを識別します。

    • パラメータ: project_id (文字列、必須、UUID)

    • **戻り値:**次のタスクのFullTaskDataオブジェクト。準備ができていない場合はnull 。

  • exportProject :

    • **説明:**完全なプロジェクト データを JSON 文字列としてエクスポートします。

    • パラメータ: project_id (文字列、必須、UUID)、 format (列挙型 'json'、オプション、デフォルト 'json')

    • **戻り値:**プロジェクトを表す JSON 文字列。

  • importProject :

    • **説明:**エクスポートされた JSON 文字列から新しいプロジェクトを作成します。

    • パラメータ: project_data (文字列、必須、JSON)、 new_project_name (文字列、オプション、最大 255)

    • **戻り値:**新しく作成されたプロジェクトの{ project_id: string } 。

  • updateTask :

    • **説明:**既存のタスクの特定の詳細 (説明、優先度、依存関係) を更新します。

    • パラメータ: project_id (文字列、必須、UUID)、 task_id (文字列、必須、UUID)、 description (文字列、オプション、1〜1024)、 priority (列挙型 'high'|'medium'|'low'、オプション)、 dependencies (文字列[]、オプション、最大50、既存のものを置き換えます)

    • **戻り値:**更新されたFullTaskDataオブジェクト。

  • deleteTask :

    • 説明: 1 つ以上のタスク (およびカスケード経由のサブタスク/依存関係リンク) を削除します。

    • パラメータ: project_id (文字列、必須、UUID)、 task_ids (文字列[]、必須、1-100)

    • 戻り値: { success: true, deleted_count: number }

  • deleteProject :

    • **説明:**プロジェクトとそれに関連するすべてのデータを完全に削除します。注意して使用してください。

    • パラメータ: project_id (文字列、必須、UUID)

    • 戻り値: { success: true }

(注: 詳細な Zod スキーマとパラメータの説明については、対応するsrc/tools/*Params.tsファイルを参照してください。)

はじめる

  1. 前提条件: Node.js (LTS 推奨)、npm。

  2. 依存関係をインストールします:

    npm install
  3. 開発モードで実行: (自動リロードにts-nodeとnodemon使用)

    npm run dev

    サーバーはstdio経由で接続します。ログ(JSON形式)はstderrに出力されます。SQLiteデータベースは./data/taskmanager.dbに作成/更新されます。

  4. 生産向けビルド:

    npm run build
  5. プロダクションビルドを実行します。

    npm start

構成

  • データベースパス: SQLiteデータベースファイルの場所は、 DATABASE_PATH環境変数を設定することで上書きできます。デフォルトは./data/taskmanager.dbです。

  • **ログレベル:**ログレベルはLOG_LEVEL環境変数を使用して設定できます(例: debug 、 info 、 warn 、 error )。デフォルトはinfoです。

プロジェクト構造

  • /src : ソースコード。

    • /config : 構成管理。

    • /db : データベース マネージャーとスキーマ ( schema.sql )。

    • /repositories : データ アクセス層 (SQLite の相互作用)。

    • /services : コアビジネスロジック。

    • /tools : MCP ツールの定義 (*Params.ts) と実装 (*Tool.ts)。

    • /types : 共有 TypeScript インターフェース (現在は最小限で、主にリポジトリ/サービス内)。

    • /utils : ログ記録、カスタムエラーなど。

    • createServer.ts : サーバー インスタンスの作成。

    • server.ts : メインアプリケーションのエントリポイント。

  • /dist : コンパイルされた JavaScript 出力。

  • /docs : プロジェクトドキュメント (PRD、機能仕様、RFC)。

  • /data : SQLite データベース ファイルのデフォルトの場所 (自動的に作成されます)。

  • tasks.md : 開発用の手動タスク追跡ファイル。

  • 設定ファイル ( package.json 、 tsconfig.json 、 .eslintrc.jsonなど)

リンティングとフォーマット

  • リント: npm run lint

  • フォーマット: npm run format

(コードは、コミット時に Husky/lint-staged を介して自動的に lint/フォーマットされます)。

Available Tools

12 tools
addTaskA

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dependenciesNoAn optional list of task IDs (strings) that must be completed before this task can start (max 50).
descriptionYesThe textual description of the task to be performed (1-1024 characters).
priorityNoOptional task priority. Defaults to 'medium' if not specified.medium
project_idYesThe unique identifier (UUID) of the project to add the task to. This project must already exist.
statusNoOptional initial status of the task. Defaults to 'todo' if not specified.todo

TDQS

A3.5/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. 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.

Conciseness5/5

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.

Completeness3/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNameNoOptional human-readable name for the new project (max 255 chars). If omitted, a default name like 'New Project [timestamp]' will be used.

TDQS

A4/5.0
Behavior3/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. 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe unique identifier (UUID) of the project to permanently delete. This project must exist.

TDQS

A4.4/5.0
Behavior5/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 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.

Conciseness5/5

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.

Completeness4/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 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.

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 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe unique identifier (UUID) of the project containing the tasks to delete. This project must exist.
task_idsYesAn array of task IDs (UUIDs, 1-100) to be deleted from the specified project.

TDQS

A4/5.0
Behavior4/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 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.

Conciseness5/5

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.

Completeness4/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 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.

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 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
forceNoOptional 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_idYesThe unique identifier (UUID) of the project containing the parent task.
subtask_descriptionsYesAn array of descriptions (1-20) for the new subtasks to be created under the parent task.
task_idYesThe unique identifier of the parent task to be expanded.

TDQS

B3.4/5.0
Behavior3/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. 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.

Conciseness4/5

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.

Completeness3/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOptional format for the export. Currently only 'json' is supported (default).json
project_idYesThe unique identifier (UUID) of the project to export.

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe unique identifier (UUID) of the project to find the next task for.

TDQS

A4.2/5.0
Behavior4/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 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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
new_project_nameNoOptional 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_dataYesRequired. A JSON string containing the full project data, conforming to the export structure. Max size e.g., 10MB.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_subtasksNoOptional flag (default false). If true, the response will include subtasks nested within their parent tasks.
project_idYesThe unique identifier (UUID) of the project whose tasks are to be listed. This project must exist.
statusNoOptional filter to return only tasks matching the specified status.

TDQS

B3.3/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 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.

Conciseness5/5

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.

Completeness3/5

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.

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 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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe unique identifier (UUID) of the project containing the tasks.
statusYesThe target status to set for the specified tasks.
task_idsYesAn array of task IDs (1-100) whose status should be updated.

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
project_idYesThe unique identifier (UUID) of the project the task belongs to.
task_idYesThe unique identifier of the task to retrieve details for.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

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 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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
dependenciesNoOptional. The complete list of task IDs (UUIDs) that this task depends on. Replaces the existing list entirely. Max 50 dependencies.
descriptionNoOptional. The new textual description for the task (1-1024 characters).
priorityNoOptional. The new priority level for the task ('high', 'medium', or 'low').
project_idYesThe unique identifier (UUID) of the project containing the task to update. This project must exist.
task_idYesThe unique identifier (UUID) of the task to update. This task must exist within the specified project.

TDQS

A3.5/5.0
Behavior3/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 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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 12 tool updatesv1.0.0
    • First observedaddTask
    • First observedcreateProject
    • First observeddeleteProject
    • First observeddeleteTask
    • First observedexpandTask
    • First observedexportProject
    • First observedgetNextTask
    • First observedimportProject
    • First observedlistTasks
    • First observedsetTaskStatus
    • First observedshowTask
    • First observedupdateTask

TDQS

A4/5.0

Scored across 12 tools

Disambiguation5/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A local, project-scoped requirement management MCP server that enables AI agents to manage tasks and requirements via SQLite.
    13 npm
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    A 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
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A personal task management MCP server that allows LLM clients to create, read, update, and delete tasks with projects, labels, and comments, using a local SQLite database that can also be accessed via a web UI.
    -