Task Manager MCP Server について
Task Manager MCP Server は、Node.js で実装された MCP サーバーで、Gemini や OpenRouter などの LLM を使い、Cursor向けに機能計画、タスク分解、コードレビューを行います。大きな機能をタスク単位で進めたい開発者向けで、タスクや計画を確認・編集するための Svelte UI を備えています。
主な機能
- 01LLM による段階的なコーディング計画の生成
- 02repomix によるプロジェクトコンテキストの提供
- 03機能ごとの会話履歴の保存
- 04git diff HEAD に基づくコードレビュー
- 05タスクと進捗を管理する Svelte UI
活用シーン
- 01大きな機能要望を順次実行するタスクに分割する
- 02Cursor 内でタスクを一つずつ完了し、進捗を記録する
- 03LLM に現在の変更をレビューさせ、追加タスクを作成する
MCP 対応
MCP サーバーとして、Cursor などのクライアントに plan_feature、mark_task_complete、get_next_task、review_changes、adjust_plan などのツールを公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
タスクマネージャー MCP サーバー
これは、Cursor のような AI コードエディターと連携するために構築された MCP サーバーです。主な目的は、Cursor のエージェント機能と Gemini 2.5 の優れた設計能力を最大限に活用しながら、Cursor の非常に限られたコンテキストウィンドウを補うことです。主に Roo Code の Boomerang モードから着想を得ていますが、apply bot と動作する唯一のモデルが Claude 3.7 Sonnet であるため、非常に高価だと感じました。このサーバーを使えば、Cursor の月額 20 ドルのサブスクリプション料金で、無制限のコンテキストウィンドウと無制限の利用という両方の利点が得られます。
さらに、タスクリストと進捗の表示、計画の手動調整、変更内容のレビューができる Svelte UI も含まれています。
Svelte UI

主な機能
- 複雑な機能の計画: 機能の説明を入力すると、
repomixを通じてプロジェクトのコンテキストを利用する LLM が、AI エージェントが実行するための段階的なコーディング計画を生成します。工数の大きいタスクは再帰的に細分化されます。 - UI サーバーの統合: Express サーバーを実行して静的なフロントエンドファイルを提供し、UI 用の基本的な API エンドポイントを公開します。計画の完了後、または確認が必要な場合に、既定のブラウザーで UI を開き、タスクリストと進捗を表示します。
- 無制限のコンテキストウィンドウ: Gemini 2.5 の 100 万トークンのコンテキストウィンドウを使用し、必要に応じて
repomixで切り詰めます。 - 会話履歴: 各機能の会話履歴を
.mcp/features/内の個別の JSON ファイルに保存します。これにより、ユーザーが計画の調整を依頼した際に、Gemini 2.5 がコンテキストを把握できます。 - 確認ワークフロー: LLM が追加情報を必要とする場合に対応します。計画を一時停止し、WebSocket 経由で接続された UI とやり取りします。
- タスクの CRUD: UI からタスクの作成、読み取り、更新、削除ができます。
- コードレビュー: LLM を使って
git diff HEADの出力を分析し、必要に応じて新しいタスクを作成します。 - 自動レビュー(オプション): 設定されている場合(
AUTO_REVIEW_ON_COMPLETION=true)、機能の最後の当初タスクが完了した後、自動的にコードレビューを実行します。 - 計画の調整:
adjust_planツールを使って、作成後の計画を調整できます。
セットアップ
前提条件:
- Node.js
- npm
- Git
インストールとビルド:
-
クローン:
git clone https://github.com/jhawkins11/task-manager-mcp.git cd task-manager-mcp -
バックエンドの依存関係をインストール:
npm install -
設定: API キーは後で Cursor の MCP 設定で直接設定します(「使い方」セクションを参照)。手動テスト用にローカルの
.envファイルを用意してもかまいません(「設定」セクションを参照)。 -
ビルド: このコマンドはバックエンドとフロントエンドのサーバーをビルドし、Svelte UI を
dist/frontend-ui/ディレクトリにコピーします。npm run build
サーバーの起動(手動):
Cursor を使わずにローカルでテストする場合は、Node を直接実行するか、npm スクリプトを使ってサーバーを起動できます。この方法では .env ファイルの設定が使用されます。
Node を直接使用(絶対パスを使用):
node /full/path/to/your/task-manager-mcp/dist/server.js
npm start を使用:
npm start
これにより、MCP サーバー(stdio)、WebSocket サーバー、UI 用 HTTP サーバーが起動します。UI には http://localhost:<UI_PORT>(既定値は 3000)でアクセスできます。
設定(手動起動用の .env ファイル):
手動で起動する場合(Cursor 経由ではない場合)は、API キーとポートを設定するため、プロジェクトのルートに .env ファイルを作成してください。注:Cursor 経由で起動する場合は、代わりに Cursor の mcp.json 設定でこれらを指定してください(「使い方」セクションを参照)。
# .env - USED ONLY FOR MANUAL `npm start` or `node dist/server.js`
# === OpenRouter (Recommended) ===
# Get key: https://openrouter.ai/keys
OPENROUTER_API_KEY=sk-or-v1-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
OPENROUTER_MODEL=google/gemini-2.5-flash-preview:thinking
FALLBACK_OPENROUTER_MODEL=google/gemini-2.5-flash-preview:thinking
# === Google AI API (Alternative) ===
# GEMINI_API_KEY=your_google_ai_api_key
# GEMINI_MODEL=gemini-1.5-flash-latest
# FALLBACK_GEMINI_MODEL=gemini-1.5-flash-latest
# === UI / WebSocket Ports ===
# Default is 4999 if not set.
UI_PORT=4999
WS_PORT=4999
# === Auto Review ===
# If true, the agent will automatically run the 'review_changes' tool after the last task is completed.
# Defaults to false.
AUTO_REVIEW_ON_COMPLETION=false
コストを抑える
重要: 無料モデルのレート制限を回避するため、ご自身の Google AI API キーを OpenRouter に連携することを強くおすすめします。詳細は以下をご覧ください。
OpenRouter の無料枠を利用する: ご自身の Google AI API キーを接続しながら、OpenRouter で「Free」と表示されているモデル(執筆時点では google/gemini-2.5-flash-preview:thinking など)を使用すると、コストを大幅に抑えたり、無料にしたりできます。詳細については、こちらの Reddit のスレッドをご覧ください:https://www.reddit.com/r/ChatGPTCoding/comments/1jrp1tj/a_simple_guide_to_setting_up_gemini_25_pro_free/
フォールバック時のコスト: プライマリモデルがレート制限に達すると、サーバーはフォールバックモデルで自動的に再試行します。デフォルトのフォールバック(FALLBACK_OPENROUTER_MODEL)には、Gemini Flash のような高速で低価格なモデルが使われることが多いですが、OpenRouter の現在の料金やプランによっては費用が発生する場合があります。料金をサイトで確認し、必要に応じて設定のフォールバックモデルを変更してください。
Cursor での使用(タスクマネージャーモード)
このサーバーは、主にこの方法で使用することを想定しています。ほかの AI コードエディターではまだテストしていません。試した場合は、ぜひ結果をお知らせください。README を更新します。
1. Cursor で MCP サーバーを設定する:
サーバーをビルドした後(npm run build)、Cursor からサーバーを起動する方法を設定する必要があります。
Cursor の MCP 設定ファイルを探します。次のいずれかを使用できます。
- プロジェクト固有: プロジェクトのルートディレクトリにある
.cursor/mcp.jsonを作成または編集します。 - グローバル: ユーザーのホームディレクトリにある
~/.cursor/mcp.jsonを作成または編集します(すべてのプロジェクトで使用できます)。
その JSON ファイルの mcpServers オブジェクトに、次のエントリを追加します。
{
"mcpServers": {
"task-manager-mcp": {
"command": "node",
"args": ["/full/path/to/your/task-manager-mcp/dist/server.js"],
"env": {
"OPENROUTER_API_KEY": "sk-or-v1-xxxxxxxxxxxxxxxxxxxx"
// optional: my recommended model for MCP is Gemini 2.5 Pro Free which is already set by default
// "OPENROUTER_MODEL": "google/gemini-2.5-flash-preview:thinking",
// also optional
// "FALLBACK_OPENROUTER_MODEL": "google/gemini-2.5-flash-preview:thinking",
// optional: the default port for the UI is 4999 if not set
// "UI_PORT": "4999",
// optional: the default port for the WebSocket server is 4999 if not set
// "WS_PORT": "4999"
// Add GEMINI_API_KEY here instead if using Google directly
// Add any other necessary env vars here
}
}
// Add other MCP servers here if you have them
}
}
重要:
/full/path/to/your/task-manager-mcp/dist/server.jsを、お使いのマシン上にあるコンパイル済みサーバースクリプトの絶対パスに置き換えてください。sk-or-v1-xxxxxxxxxxxxxxxxxxxxを実際の OpenRouter API キーに置き換えてください(Google AI を直接使用する場合は GEMINI_API_KEY を設定してください)。- ここで定義した環境変数は、Cursor がサーバーを起動するときにサーバープロセスへ渡され、
.envファイルの設定より優先されます。
2. カスタム Cursor モードを作成する:
- Cursor Settings -> Features -> Chat -> Enable Custom modes の順に移動します。
- チャット画面に戻り、モードセレクター(左下)をクリックして、Add custom mode をクリックします。
- 名前(例:「MCP Planner」「Task Dev」)を付け、アイコンやショートカットを選びます。
- ツールを有効にします:このサーバーが公開するツール(
plan_feature、mark_task_complete、get_next_task、review_changes、adjust_plan)がこのモードで利用可能になり、有効になっていることを確認してください。ワークフローに応じて、Codebase、Terminal などのツールも有効にするとよいでしょう。 - エージェント向けの推奨指示:「Custom Instructions」テキストボックスに、次のルールをそのまま貼り付けてください。
Always use plan_feature mcp tool when getting feature request before doing anything else. ALWAYS!!!!!!!! It will return the first step of the implementation. DO NOT IMPLEMENT MORE THAN WHAT THE TASK STATES. After you're done run mark_task_complete which will give you the next task. If the user says "review" use the review_changes tool. The review_changes tool will generate new tasks for you to follow, just like plan_feature. After a review, follow the same one-at-a-time task completion workflow: complete each review-generated task, mark it complete, and call get_next_task until all are done.
If clarification is required at any step, you will not receive the next task and will have to run get_next_task manually after the user answers the clarification question through the UI.
IMPORTANT: Your job is to complete the tasks one at a time. DO NOT DO ANY OTHER CHANGES, ONLY WHAT THE CURRENT TASK SAYS TO DO.
- カスタムモードを保存します。
期待されるワークフロー(カスタムモードを使用):
- Cursor で新しいカスタムモードを選択します。
- Cursor に機能リクエストを送ります(例:「JWT を使用して認証を追加」)。
- Cursor は指示に従って、
plan_featureツールを呼び出します。 - サーバーが計画を立ててデータを保存し、Cursor に JSON レスポンス(テキストコンテンツ内)を返します。
- 成功した場合:レスポンスには
status: "completed"と、最初のタスクの説明がmessageフィールドに含まれます。UI(実行中の場合)が起動または更新されます。 - 確認が必要な場合:レスポンスには
status: "awaiting_clarification"、featureId、uiUrl、およびエージェントが待機して後でget_next_taskを呼び出すための指示が含まれます。質問とともに UI が起動または更新されます。
- 成功した場合:レスポンスには
- Cursor は、提示された場合、そのタスクのみを実装します。
- 確認が必要だった場合、ユーザーは UI で回答します。サーバーが計画を再開し、WebSocket 経由で UI を更新します。エージェントは指示に従って、
featureIdを指定してget_next_taskを呼び出します。 - タスクが完了したら、Cursor は
taskIdとfeatureIdを指定してmark_task_completeを呼び出します。 - サーバーがタスクを完了済みとしてマークし、レスポンスメッセージで次の未完了タスクを返します。
- Cursor は手順 4~8 を繰り返します。
- ユーザーが Cursor に「review」を依頼すると、Cursor は
review_changesを呼び出します。
API エンドポイント(UI 用)
統合された Express サーバーは、フロントエンド用に次の基本エンドポイントを提供します。
GET /api/features:既存の機能 ID の一覧を返します。GET /api/tasks/:featureId:指定した機能のタスク一覧を返します。GET /api/tasks:最後に作成または変更された機能のタスクを返します。GET /api/features/:featureId/pending-question:機能に対して有効な確認質問があるかどうかを確認します。POST /api/tasks:機能の新しいタスクを作成します。PUT /api/tasks/:taskId:既存のタスクを更新します。DELETE /api/tasks/:taskId:タスクを削除します。- (静的ファイル):
dist/frontend-ui/内のファイル(例:index.html)を提供します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。