MCP Task Manager Server について
MCP Task Manager Server は、SQLite データベースを使ってプロジェクトとタスクを管理するツールを提供する、ローカル実行の MCP サーバーです。データの保存とツールのインターフェースを担い、ワークフローはクライアント側で決定します。構造化されたタスクデータを必要とするエージェントやスクリプトに向いています。
主な機能
- 01プロジェクト単位でのタスク管理
- 02ローカル SQLite ファイルによる永続化
- 03タスクの作成・一覧・更新ツール
- 04タスクのサブタスクへの分割
- 05依存関係と優先度に基づく次のタスクの特定
- 06プロジェクトデータの JSON エクスポートとインポート
活用シーン
- 01AI エージェント向けの永続的なタスクリスト
- 02依存関係に沿った複数ステップ作業の順序管理
- 03プロジェクト間でのタスクデータの複製や移行
MCP 対応
MCP サーバーとして、createProject、addTask、listTasks、getNextTask などのツールを MCP クライアントに公開し、プロジェクトとタスクのデータを管理します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP Task Manager Server
SQLite データベースを使用して、クライアント主導のプロジェクトおよびタスク管理のためのバックエンドツールを提供するローカルの Model Context Protocol(MCP)サーバーです。
概要
このサーバーは、個別のプロジェクト内で構造化されたタスクデータを管理する必要があるローカル MCP クライアント(AI エージェントやスクリプトなど)向けに、永続的なバックエンドとして機能します。データストレージを管理し、やり取りのための標準化されたツールセットを提供します。一方、戦略的なワークフローのロジックはクライアント側にあります。
主な機能:
- プロジェクト単位の管理: タスクは個別のプロジェクト内で整理されます。
- SQLite による永続化: シンプルで自己完結型のデータストレージとして、ローカルの SQLite ファイル(デフォルトは
./data/taskmanager.db)を使用します。 - クライアント主導: クライアント向けのツールを提供し、ワークフローを規定しません。
- MCP 準拠: ツールの定義と通信に関する Model Context Protocol に準拠しています。
- タスク管理: プロジェクトの作成、タスクの追加、タスクの一覧表示・詳細表示、ステータスの更新、タスクのサブタスクへの展開、および次に実行可能なタスクの特定をサポートします。
- インポート/エクスポート: プロジェクトデータを JSON にエクスポートしたり、JSON からインポートして新しいプロジェクトを作成したりできます。
実装済み MCP ツール
MCP クライアントでは、以下のツールを利用できます。
createProject:- 説明: 新しい空のプロジェクトを作成します。
- パラメーター:
projectName(string、任意、最大 255) - 戻り値:
{ project_id: string }
addTask:- 説明: プロジェクトに新しいタスクを追加します。
- パラメーター:
project_id(string、必須、UUID)、description(string、必須、1~1024)、dependencies(string[]、任意、最大 50)、priority(enum 'high'|'medium'|'low'、任意、デフォルト 'medium')、status(enum 'todo'|'in-progress'|'review'|'done'、任意、デフォルト 'todo') - 戻り値: 作成されたタスクの完全な
TaskDataオブジェクト。
listTasks:- 説明: 任意のフィルタリングとサブタスクの表示を指定して、プロジェクトのタスクを一覧表示します。
- パラメーター:
project_id(string、必須、UUID)、status(enum 'todo'|'in-progress'|'review'|'done'、任意)、include_subtasks(boolean、任意、デフォルト false) - 戻り値:
TaskDataまたはStructuredTaskDataオブジェクトの配列。
showTask:- 説明: 依存関係と直接のサブタスクを含む、特定のタスクの詳細情報を取得します。
- パラメーター:
project_id(string、必須、UUID)、task_id(string、必須) - 戻り値:
FullTaskDataオブジェクト。
setTaskStatus:- 説明: 1 つ以上のタスクのステータスを更新します。
- パラメーター:
project_id(string、必須、UUID)、task_ids(string[]、必須、1~100)、status(enum 'todo'|'in-progress'|'review'|'done'、必須) - 戻り値:
{ success: true, updated_count: number }
expandTask:- 説明: 親タスクをサブタスクに分割します。既存のサブタスクを置き換えることもできます。
- パラメーター:
project_id(string、必須、UUID)、task_id(string、必須)、subtask_descriptions(string[]、必須、1~20、各項目 1~512)、force(boolean、任意、デフォルト false) - 戻り値: 新しいサブタスクを含む、更新された親の
FullTaskDataオブジェクト。
getNextTask:- 説明: ステータス('todo')、依存関係('done')、優先度、作成日に基づいて、次に実行可能なタスクを特定します。
- パラメーター:
project_id(string、必須、UUID) - 戻り値: 次のタスクの
FullTaskDataオブジェクト。準備ができているタスクがない場合はnull。
exportProject:- 説明: プロジェクトの完全なデータを JSON 文字列としてエクスポートします。
- パラメーター:
project_id(string、必須、UUID)、format(enum 'json'、任意、デフォルト 'json') - 戻り値: プロジェクトを表す JSON 文字列。
importProject:- 説明: エクスポートされた JSON 文字列から新しいプロジェクトを作成します。
- パラメーター:
project_data(string、必須、JSON)、new_project_name(string、任意、最大 255) - 戻り値: 新しく作成されたプロジェクトの
{ project_id: string }。
updateTask:- 説明: 既存のタスクの詳細(説明、優先度、依存関係)を更新します。
- パラメーター:
project_id(string、必須、UUID)、task_id(string、必須、UUID)、description(string、任意、1~1024)、priority(enum 'high'|'medium'|'low'、任意)、dependencies(string[]、任意、最大 50、既存の値を置き換えます) - 戻り値: 更新された
FullTaskDataオブジェクト。
deleteTask:- 説明: 1 つ以上のタスクを削除します(カスケード処理により、そのサブタスクと依存関係のリンクも削除されます)。
- パラメーター:
project_id(string、必須、UUID)、task_ids(string[]、必須、1~100) - 戻り値:
{ success: true, deleted_count: number }
deleteProject:- 説明: プロジェクトと関連するすべてのデータを完全に削除します。慎重に使用してください!
- パラメーター:
project_id(string、必須、UUID) - 戻り値:
{ success: true }
(注:Zod スキーマとパラメーターの説明の詳細については、対応する src/tools/*Params.ts ファイルを参照してください。)
はじめに
-
前提条件: Node.js(LTS を推奨)、npm。
-
依存関係のインストール:
npm install -
開発モードで実行:(自動リロードには
ts-nodeとnodemonを使用します)npm run devサーバーは stdio 経由で接続します。ログ(JSON 形式)は stderr に出力されます。SQLite データベースは
./data/taskmanager.dbに作成または更新されます。 -
本番環境向けにビルド:
npm run build -
本番ビルドを実行:
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 インターフェース(現在は最小限で、大部分は repos/services にあります)。/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 によってコードが自動的にリントおよびフォーマットされます。)
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。