backlog
backlog
Claude Code向けの永続的かつセッション横断的なタスク管理ツールです。タスクはセッションをまたいで保持されるため、あるエージェントが開始した作業を別のエージェントが引き継ぐことができます。
@backloghq/agentdb を基盤として構築されており、型付きスキーマ、自動インクリメントID、仮想フィルタ、BLOBストレージを備えています。純粋なTypeScriptで記述されており、ネイティブ依存関係はありません。
インストール
/plugin marketplace add backloghq/backlog
/plugin install backlog@backloghq-backlogソースからインストール
git clone https://github.com/backloghq/backlog.git
cd backlog && npm install && npm run build
claude --plugin-dir /path/to/backlogスタンドアロンMCPサーバー
プロジェクトの .claude/settings.json に以下を追加します:
{
"mcpServers": {
"backlog": {
"command": "node",
"args": ["/path/to/agent-teams-task-mcp/dist/index.js"],
"env": {
"TASKDATA": "/path/to/task-data"
}
}
}
}Related MCP server: Vibe Board VE
スキル
スキル | 説明 |
| 現在のバックログを表示(保留中、アクティブ、ブロック中、期限切れのタスク) |
| 目標を依存関係、優先順位、仕様を含むタスクに分解 |
| デイリースタンドアップ(完了、進行中、ブロック中、次に行うこと) |
| バックログの整理(曖昧なタスク、優先順位の欠如、壊れた依存関係、古い項目の修正) |
| 実装前にタスクの仕様書を作成 |
| タスクを選択し、仕様を読み込み、実装し、完了としてマーク |
| 次のセッションへの準備(進捗の注釈、アクティブなタスクの停止、状態の要約) |
エージェント
task-planner エージェントは、作業計画が必要な際にClaudeから自動的に呼び出されます。コードベースを読み取り、目標を依存関係のあるタスクに分解し、複雑な項目については仕様書を作成します。
フック
イベント | 動作 |
| セッション開始時に保留中のタスク数を表示 |
| Claudeの組み込みタスクを永続バックログと同期 |
| Claudeが組み込みタスクを完了した際に、対応するバックログタスクを完了としてマーク |
| 未割り当ての保留中タスクを、生成されたエージェントに自動割り当て |
ツール (MCP)
タスクのライフサイクル全体を管理するためのツール:
ツール | 説明 |
| フィルタ構文を使用してタスクをクエリ。全フィールドを含むJSON配列を返します。 |
| フィルタに一致するタスクをカウント。task_listと同じ構文。 |
| 新しい保留中タスクを作成。説明のみ必須で、他のフィールドは任意。 |
| 既に完了した作業を完了ステータスで直接記録。 |
| フィルタに一致する1つ以上のタスクを部分更新。指定されたフィールドのみ変更されます。 |
| 既存のタスクをコピー(オプションでフィールドの上書きが可能)。 |
| タスクを完了としてマークし、終了タイムスタンプを記録。 |
| タスクを論理削除。task_undoで復元可能。完全に削除するにはtask_purgeを使用。 |
| タイムスタンプ付きのメモを追加。長いコンテンツにはtask_doc_writeを使用。 |
| テキストの一致により注釈を削除。 |
| タスクをアクティブな作業中としてマーク。+ACTIVEクエリで表示可能。 |
| タスクの作業を停止。保留ステータスに戻します。 |
| 直前の操作を元に戻す。繰り返し呼び出し可能。 |
| IDまたはUUIDで単一タスクの完全なJSON詳細を取得。 |
| JSON配列からタスクを一括作成。アトミックなバッチ操作。 |
| 削除されたタスクを完全に削除。元に戻せません。 |
| タスクにMarkdownドキュメント(仕様、メモ、コンテキスト)を添付/置換。 |
| タスクに添付されたMarkdownドキュメントを読み取り。 |
| タスクのドキュメントを削除。永続的。 |
| 古い完了/削除済みタスクを四半期ごとのアーカイブセグメントに移動。 |
| 利用可能なアーカイブセグメントを一覧表示。 |
| アーカイブされたタスクを読み取り専用で読み込み。 |
| 保留中/定期的なタスクを持つプロジェクト名を一覧表示。 |
| 保留中/定期的なタスクを持つタグを一覧表示。 |
フィルタ構文
status:pending # all pending tasks
project:backend +bug # bugs in backend project
priority:H due.before:friday # high priority due before friday
+OVERDUE # overdue tasks
+ACTIVE # tasks currently being worked on
+BLOCKED # tasks blocked by dependencies
+READY # actionable tasks (past scheduled date)
agent:explorer # tasks assigned to the explorer agent
( project:web or project:api ) # boolean with parentheses
description.contains:auth # substring match属性修飾子 (.before, .after, .by, .has, .not, .none, .any, .startswith, .endswith)、タグ (+tag, -tag)、仮想タグ (+OVERDUE, +ACTIVE, +BLOCKED, +READY, +TAGGED, +ANNOTATED など)、およびブール演算子 (and, or) をサポートしています。
タスクドキュメント
任意のタスクにMarkdownドキュメント(仕様、コンテキスト、引き継ぎメモ)を添付できます:
task_doc_write id:"1" content:"# Spec\n\nBuild the auth flow.\n"
task_doc_read id:"1"
task_doc_delete id:"1"ドキュメントを書き込むと +doc タグと has_doc:yes が追加されるため、エージェントはドキュメント付きのタスクを発見できます:
task_list filter:"+doc"
task_list filter:"has_doc:yes"エージェントID
タスクは、どのエージェントがタスクを所有しているかを追跡するための agent フィールドをサポートしています:
task_add description:"Investigate bug" agent:"explorer"
task_list filter:"agent:explorer status:pending"プロジェクトの分離
各プロジェクトは自動的に独自のタスクデータを持ちます。プラグインとして使用する場合、タスクデータは ~/.claude/plugins/data/backlog/projects/<project-slug>/ に保存されます。スタンドアロンで使用する場合は、TASKDATA を明示的に設定してください。
変数 | 説明 |
| タスクデータディレクトリへの明示的なパス(自動導出を上書き) |
| プロジェクトごとのタスクデータを自動導出するためのルートディレクトリ |
| 明示的なコレクション名(デフォルト: |
|
|
| マルチライターサポート用エージェントID(Claude、Geminiなど) |
| ストレージバックエンド:ファイルシステム(デフォルト)または |
| S3バケット名 ( |
| AWSリージョン(デフォルト認証情報を使用する場合はオプション) |
マルチライターサポート
Backlogは、同じデータを共有する複数のプロセス(例:Claude DesktopとGemini CLI)からの同時アクセスをサポートしています。これを有効にするには:
各プロセスに一意の
BACKLOG_AGENT_IDを割り当てます(例:claude,gemini)。エージェントIDが設定されると、エンジンはエージェントごとの書き込みログを使用し、ファイルロックを回避します。
各プロセスは操作前に自動的に
refresh()を呼び出し、他のエージェントからの変更を取り込みます。
名前空間
複数のプロジェクトで単一の TASKDATA ディレクトリ(共有S3バケットやグローバルな ~/.backlog フォルダなど)を使用したい場合は、名前空間を使用してタスクを分離できます:
手動:
BACKLOG_NAMESPACE=my-projectを設定して特定のコレクション名を使用します。自動:
BACKLOG_AUTO_NAMESPACE=trueを設定して、現在の作業ディレクトリからコレクション名を自動的に導出します(例:my-app-a1b2c3d4)。
設定例 (.claude/settings.json):
{
"mcpServers": {
"backlog": {
"command": "node",
"args": ["/path/to/backlog/dist/index.js"],
"env": {
"TASKDATA": "/home/user/.backlog",
"BACKLOG_AUTO_NAMESPACE": "true",
"BACKLOG_AGENT_ID": "claude-desktop"
}
}
}
}どちらの方法でも、複数のプロジェクトが同じストレージバックエンドを共有しながら、プロジェクト固有のバックログを分離して維持できます。
S3バックエンド
チーム共有やクラウドでの永続化のために、タスクデータをS3に保存します。@backloghq/opslog-s3 が必要です:
npm install @backloghq/opslog-s3.claude/settings.json の環境変数で設定します:
{
"mcpServers": {
"backlog": {
"command": "node",
"args": ["/path/to/backlog/dist/index.js"],
"env": {
"TASKDATA": "my-project/tasks",
"BACKLOG_BACKEND": "s3",
"BACKLOG_S3_BUCKET": "my-team-backlog",
"BACKLOG_S3_REGION": "us-east-1"
}
}
}
}S3を使用する場合、TASKDATA はファイルシステムパスではなく、バケット内のキープレフィックスになります。
Docker
docker build -t backlog .
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' \
| docker run --rm -i backlog開発
npm install
npm run build # compile TypeScript
npm run lint # run ESLint
npm test # run tests
npm run test:coverage # run tests with coverage
npm run dev # watch modeコミュニティ
GitHub Discussions — 質問、アイデア、共有
Issue Tracker — バグ報告と機能リクエスト
Documentation — 完全なドキュメント、スキルリファレンス、フィルタ構文
backlogが役に立った場合は、スターを付けることを検討してください。他の人がプロジェクトを見つける助けになります。
ライセンス
MIT
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
20 tool updates
v1.5.0- Changed
task_add12 fields changed- changed
Input schema / properties / agent / descriptionPrevious value: -"Agent identity, e.g. 'explorer', 'planner', 'reviewer'"New value: +"Agent identity for tracking task ownership across agent teams. E.g. 'explorer', 'planner', 'reviewer'." - changed
Input schema / properties / depends / descriptionPrevious value: -"UUID(s) of tasks this depends on, comma-separated"New value: +"Comma-separated UUIDs of tasks this depends on. Task shows as +BLOCKED until dependencies are completed." - changed
Input schema / properties / description / descriptionPrevious value: -"Task description text"New value: +"Task description (required, max 500 chars). Brief summary of what needs to be done." - changed
Input schema / properties / due / descriptionPrevious value: -"Due date, e.g. 'tomorrow', '2025-12-31', 'eow'"New value: +"Due date. Accepts: ISO dates ('2025-12-31'), relative ('3d', '2w'), named ('tomorrow', 'friday', 'eow', 'eom'), compound ('now+3d')." - changed
Input schema / properties / extra / descriptionPrevious value: -"Additional raw attributes"New value: +"Space-separated additional attributes or +tag/-tag modifiers." - changed
Input schema / properties / priority / descriptionPrevious value: -"Priority: H (high), M (medium), L (low)"New value: +"Priority: H (high), M (medium), L (low). Affects urgency score and sort order." - changed
Input schema / properties / project / descriptionPrevious value: -"Project name, e.g. 'backend'"New value: +"Project name for grouping (alphanumeric, hyphens, underscores). E.g. 'backend', 'auth-refactor'" - changed
Input schema / properties / recur / descriptionPrevious value: -"Recurrence frequency, e.g. 'daily', 'weekly', '2wks', 'monthly'. Requires a due date."New value: +"Recurrence pattern. Requires 'due' to be set. Values: 'daily', 'weekly', 'weekdays', 'biweekly', 'monthly', 'quarterly', 'yearly', or numeric like '3d', '2w'." - changed
Input schema / properties / scheduled / descriptionPrevious value: -"Scheduled date — when to start working on the task, e.g. 'monday', 'tomorrow'"New value: +"Scheduled start date — when to begin working. Same date formats as 'due'." - changed
Input schema / properties / tags / descriptionPrevious value: -"Tags to apply, as comma-separated list or JSON array. E.g. 'bug,urgent' or '[\"bug\",\"urgent\"]'"New value: +"Tags as comma-separated list or JSON array. E.g. 'bug,urgent' or '[\"bug\",\"urgent\"]'. Used for filtering with +tag/-tag syntax." - changed
Input schema / properties / until / descriptionPrevious value: -"End date for recurrence — no instances generated past this date, e.g. '2026-12-31'"New value: +"End date for recurrence — no instances generated past this date. Only meaningful with 'recur'. Same date formats as 'due'." - changed
Input schema / properties / wait / descriptionPrevious value: -"Wait date — task hidden until this date"New value: +"Wait date — task is hidden from default views until this date. Same date formats as 'due'."
- Changed
task_annotate2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID." - changed
Input schema / properties / text / descriptionPrevious value: -"Annotation text"New value: +"Annotation text to add. Stored with a timestamp. Keep concise — use task_doc_write for longer content."
- Changed
task_archive1 field changed- changed
Input schema / properties / older_than_days / descriptionPrevious value: -"Number of days. Archive tasks completed/deleted more than this many days ago. Default: 90"New value: +"Archive tasks completed/deleted more than this many days ago. Default: 90. E.g. '30' for tasks older than a month."
- Changed
task_archive_load1 field changed- changed
Input schema / properties / segment / descriptionPrevious value: -"Archive segment name, e.g. '2026-Q1'"New value: +"Archive segment name, e.g. '2026-Q1'. Use task_archive_list to see available segments."
- Changed
task_count1 field changed- changed
Input schema / properties / filter / descriptionPrevious value: -"Filter expression. Leave empty for all pending tasks."New value: +"Filter expression. Same syntax as task_list. Examples: 'status:pending', '+OVERDUE', 'project:backend +bug'. Leave empty for all pending tasks."
- Changed
task_delete1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID of the task to delete."
- Changed
task_denotate2 fields changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID." - changed
Input schema / properties / text / descriptionPrevious value: -"Exact annotation text to remove"New value: +"Exact annotation text to remove (case-sensitive). Must match a previously added annotation."
- Changed
task_doc_delete1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID."
- Changed
task_doc_read1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID."
- Changed
task_doc_write2 fields changed- changed
Input schema / properties / content / descriptionPrevious value: -"Document content (markdown)"New value: +"Document content in markdown format. Replaces any existing document on this task." - changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID."
- Changed
task_done1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID. Task must be in pending or active status."
- Changed
task_duplicate8 fields changed- changed
Input schema / properties / agent / descriptionPrevious value: -"Agent identity"New value: +"Agent identity for the new task." - changed
Input schema / properties / description / descriptionPrevious value: -"New description (overrides original)"New value: +"New description to override the original." - changed
Input schema / properties / due / descriptionPrevious value: -"New due date"New value: +"New due date. Pass empty string to clear." - changed
Input schema / properties / extra / descriptionPrevious value: -"Additional raw attributes"New value: +"Space-separated additional attributes or +tag/-tag modifiers." - changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID to duplicate"New value: +"Task ID number (e.g. '1') or UUID of the task to copy." - changed
Input schema / properties / priority / descriptionPrevious value: -"New priority"New value: +"New priority. Pass empty string to clear." - changed
Input schema / properties / project / descriptionPrevious value: -"New project"New value: +"New project. Pass empty string to clear." - changed
Input schema / properties / tags / descriptionPrevious value: -"Tags to add or remove, as comma-separated list. E.g. 'frontend,urgent' or '-old,+new'"New value: +"Tags to add (+) or remove (-). E.g. '+frontend,-old'. Applied on top of the copied tags."
- Changed
task_import1 field changed- changed
Input schema / properties / tasks / descriptionPrevious value: -"JSON array of task objects, e.g. '[{\"description\":\"My task\",\"project\":\"foo\"}]'"New value: +"JSON array of task objects. Required field: 'description'. Optional: 'project', 'tags' (string[]), 'priority' (H/M/L), 'due', 'status', 'depends' (UUID[]), 'recur', 'agent', 'uuid' (to set explicit ID). Example: '[{\"description\":\"My task\",\"project\":\"foo\",\"priority\":\"H\"}]'"
- Changed
task_info1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID. Returns an error if no task matches."
- Changed
task_list1 field changed- changed
Input schema / properties / filter / descriptionPrevious value: -"Filter expression. Leave empty for all pending tasks."New value: +"Filter expression to match tasks. Examples: 'status:pending', 'project:backend +bug', 'due.before:tomorrow', '+OVERDUE', '+BLOCKED', 'priority:H', 'agent:explorer'. Combine with 'and'/'or' and parentheses. Leave empty for all pending tasks."
- Changed
task_log6 fields changed- changed
Input schema / properties / agent / descriptionPrevious value: -"Agent identity"New value: +"Agent identity that completed the work." - changed
Input schema / properties / description / descriptionPrevious value: -"Task description text"New value: +"Description of the completed work (required, max 500 chars)." - changed
Input schema / properties / extra / descriptionPrevious value: -"Additional raw attributes"New value: +"Space-separated additional attributes or +tag modifiers." - changed
Input schema / properties / priority / descriptionPrevious value: -"Priority: H/M/L"New value: +"Priority: H (high), M (medium), L (low)." - changed
Input schema / properties / project / descriptionPrevious value: -"Project name"New value: +"Project name for grouping." - changed
Input schema / properties / tags / descriptionPrevious value: -"Tags to apply, as comma-separated list. E.g. 'done,reviewed'"New value: +"Tags as comma-separated list. E.g. 'done,reviewed'"
- Changed
task_modify13 fields changed- changed
Input schema / properties / agent / descriptionPrevious value: -"Agent identity, e.g. 'explorer', 'planner', 'reviewer'"New value: +"Agent identity. Pass empty string to unassign." - changed
Input schema / properties / depends / descriptionPrevious value: -"New dependency UUIDs"New value: +"New dependency UUIDs (comma-separated). Replaces existing dependencies. Pass empty string to clear." - changed
Input schema / properties / description / descriptionPrevious value: -"New description text"New value: +"New description text (max 500 chars). Only set if you want to change it." - changed
Input schema / properties / due / descriptionPrevious value: -"New due date"New value: +"New due date. Accepts ISO dates, relative ('3d'), named ('friday', 'eow'). Pass empty string to clear." - changed
Input schema / properties / extra / descriptionPrevious value: -"Additional raw attributes"New value: +"Space-separated additional attributes or +tag/-tag modifiers." - changed
Input schema / properties / filter / descriptionPrevious value: -"Filter to select tasks to modify (ID, UUID, or filter expression)"New value: +"Filter to select tasks. Can be a numeric ID ('1'), UUID, or filter expression ('project:backend priority:H'). Matches may update multiple tasks." - changed
Input schema / properties / priority / descriptionPrevious value: -"New priority (empty string to clear)"New value: +"New priority. Pass empty string to clear priority entirely." - changed
Input schema / properties / project / descriptionPrevious value: -"New project name"New value: +"New project name. Pass empty string to clear." - changed
Input schema / properties / recur / descriptionPrevious value: -"New recurrence frequency"New value: +"New recurrence pattern ('daily', 'weekly', '3d', etc). Pass empty string to clear." - changed
Input schema / properties / scheduled / descriptionPrevious value: -"New scheduled date"New value: +"New scheduled start date. Pass empty string to clear." - changed
Input schema / properties / tags / descriptionPrevious value: -"Tags to add (+) or remove (-), as comma-separated list. E.g. 'frontend,urgent' or '-old,+new'"New value: +"Tags to add (+) or remove (-). E.g. '+frontend,+urgent' or '-old,+new'. Prefix with + to add, - to remove. Without prefix, tags are added." - changed
Input schema / properties / until / descriptionPrevious value: -"End date for recurrence — no instances generated past this date, e.g. '2026-12-31'"New value: +"End date for recurrence. Pass empty string to clear." - changed
Input schema / properties / wait / descriptionPrevious value: -"New wait date"New value: +"New wait date. Task hidden from default views until this date. Pass empty string to clear."
- Changed
task_purge1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID of a deleted task"New value: +"Task ID number (e.g. '1') or UUID. Task must be in 'deleted' status."
- Changed
task_start1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID. Task must be in pending status."
- Changed
task_stop1 field changed- changed
Input schema / properties / id / descriptionPrevious value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID. Task must be currently active (started)."
24 tool updates
v1.4.0- First observed
task_add - First observed
task_annotate - First observed
task_archive - First observed
task_archive_list - First observed
task_archive_load - First observed
task_count - First observed
task_delete - First observed
task_denotate - First observed
task_doc_delete - First observed
task_doc_read - First observed
task_doc_write - First observed
task_done - First observed
task_duplicate - First observed
task_import - First observed
task_info - First observed
task_list - First observed
task_log - First observed
task_modify - First observed
task_projects - First observed
task_purge - First observed
task_start - First observed
task_stop - First observed
task_tags - First observed
task_undo
TDQS
Scored across 24 tools
Each tool has a distinct, clearly separated purpose with explicit cross-references in descriptions (e.g., 'use task_log instead', 'use task_doc_write instead'). No overlapping functionality—CRUD, lifecycle, archival, and document operations are cleanly partitioned.
Strict snake_case convention with consistent 'task_' prefix. Sub-resources follow predictable patterns (task_doc_read/write/delete, task_archive_list/load). Verbs are clear and consistently placed (task_add, task_delete, task_modify).
24 tools is above the typical ideal range but justified by the domain complexity. The set covers full task lifecycle, document attachments, archival management, annotations, and discovery without redundancy. Each tool earns its place for a comprehensive backlog system.
Excellent coverage of CRUD, status workflow (start/stop/done), soft-delete with purge, annotations, document attachments, and archival. Minor gap: archived tasks are view-only with no restore-to-active operation, though this appears to be an intentional cold-storage design.
Maintenance
Related MCP Connectors
Persistent AI memory shared across Claude, ChatGPT, coding agents, and compatible MCP clients.
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
AI-native Kanban board — connect Claude to claim, work and move your tasks over MCP.
- mcpOAuthai.butlerbrain
Persistent memory for AI assistants. Save once; recall from Claude, ChatGPT, or any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAI-native project management with persistent memory for coding agents. 17 MCP tools for features, stories, sprints, architecture decisions, knowledge base, and session tracking.3MIT
- AlicenseAqualityBmaintenancePersistent memory and task board for Claude Code. 14 tools spanning projects, tasks, sessions, and activity logs — backed by Firestore, runs on the free tier. Handoff notes survive context compaction; the next session reads the last handoff and picks up where you stopped.14MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive project management and workflow tracking system that integrates with Claude Code via MCP, automatically capturing sessions, tools, agents, and project tasks into a centralized dashboard and database.11 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server for project planning inside Claude. It tracks progress, knows your codebase, and resumes exactly where you left off every session.5 npm5-