MCP タスクマネージャーサーバー
SQLite データベースを使用してクライアント主導のプロジェクトおよびタスク管理用のバックエンド ツールを提供するローカル モデル コンテキスト プロトコル (MCP) サーバー。
概要
このサーバーは、個別のプロジェクト内の構造化されたタスクデータを管理する必要があるローカルMCPクライアント(AIエージェントやスクリプトなど)の永続的なバックエンドとして機能します。データストレージを処理し、インタラクションのための標準化されたツールセットを提供します。一方、戦略的なワークフローロジックはクライアント内に存在します。
主な機能:
**プロジェクトベース:**タスクは個別のプロジェクト内で整理されます。
**SQLite 永続性:**シンプルで自己完結的なデータ ストレージとして、ローカル SQLite ファイル (デフォルトでは
./data/taskmanager.db) を使用します。**クライアント主導:**クライアントにツールを提供しますが、ワークフローを指示しません。
**MCP 準拠:**ツールの定義と通信のためのモデル コンテキスト プロトコルに準拠します。
**タスク管理:**プロジェクトの作成、タスクの追加、タスクの一覧表示/表示、ステータスの更新、タスクのサブタスクへの拡張、次に実行可能なタスクの特定をサポートします。
**インポート/エクスポート:**プロジェクト データを JSON にエクスポートし、JSON からインポートして新しいプロジェクトを作成できます。
Related MCP server: SQLite MCP Server
実装された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 スキーマとパラメータの説明については、対応する
はじめる
前提条件: 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 インターフェース (現在は最小限で、主にリポジトリ/サービス内)。/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/フォーマットされます)。