Skip to main content
Glama
backloghq

backlog

by backloghq

backlog

GitHub stars License: MIT CI Docs

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

スキル

スキル

説明

/backlog:tasks

現在のバックログを表示(保留中、アクティブ、ブロック中、期限切れのタスク)

/backlog:plan

目標を依存関係、優先順位、仕様を含むタスクに分解

/backlog:standup

デイリースタンドアップ(完了、進行中、ブロック中、次に行うこと)

/backlog:refine

バックログの整理(曖昧なタスク、優先順位の欠如、壊れた依存関係、古い項目の修正)

/backlog:spec

実装前にタスクの仕様書を作成

/backlog:implement

タスクを選択し、仕様を読み込み、実装し、完了としてマーク

/backlog:handoff

次のセッションへの準備(進捗の注釈、アクティブなタスクの停止、状態の要約)

エージェント

task-planner エージェントは、作業計画が必要な際にClaudeから自動的に呼び出されます。コードベースを読み取り、目標を依存関係のあるタスクに分解し、複雑な項目については仕様書を作成します。

フック

イベント

動作

SessionStart

セッション開始時に保留中のタスク数を表示

TaskCreated

Claudeの組み込みタスクを永続バックログと同期

TaskCompleted

Claudeが組み込みタスクを完了した際に、対応するバックログタスクを完了としてマーク

SubagentStart

未割り当ての保留中タスクを、生成されたエージェントに自動割り当て

ツール (MCP)

タスクのライフサイクル全体を管理するためのツール:

ツール

説明

task_list

フィルタ構文を使用してタスクをクエリ。全フィールドを含むJSON配列を返します。

task_count

フィルタに一致するタスクをカウント。task_listと同じ構文。

task_add

新しい保留中タスクを作成。説明のみ必須で、他のフィールドは任意。

task_log

既に完了した作業を完了ステータスで直接記録。

task_modify

フィルタに一致する1つ以上のタスクを部分更新。指定されたフィールドのみ変更されます。

task_duplicate

既存のタスクをコピー(オプションでフィールドの上書きが可能)。

task_done

タスクを完了としてマークし、終了タイムスタンプを記録。

task_delete

タスクを論理削除。task_undoで復元可能。完全に削除するにはtask_purgeを使用。

task_annotate

タイムスタンプ付きのメモを追加。長いコンテンツにはtask_doc_writeを使用。

task_denotate

テキストの一致により注釈を削除。

task_start

タスクをアクティブな作業中としてマーク。+ACTIVEクエリで表示可能。

task_stop

タスクの作業を停止。保留ステータスに戻します。

task_undo

直前の操作を元に戻す。繰り返し呼び出し可能。

task_info

IDまたはUUIDで単一タスクの完全なJSON詳細を取得。

task_import

JSON配列からタスクを一括作成。アトミックなバッチ操作。

task_purge

削除されたタスクを完全に削除。元に戻せません。

task_doc_write

タスクにMarkdownドキュメント(仕様、メモ、コンテキスト)を添付/置換。

task_doc_read

タスクに添付されたMarkdownドキュメントを読み取り。

task_doc_delete

タスクのドキュメントを削除。永続的。

task_archive

古い完了/削除済みタスクを四半期ごとのアーカイブセグメントに移動。

task_archive_list

利用可能なアーカイブセグメントを一覧表示。

task_archive_load

アーカイブされたタスクを読み取り専用で読み込み。

task_projects

保留中/定期的なタスクを持つプロジェクト名を一覧表示。

task_tags

保留中/定期的なタスクを持つタグを一覧表示。

フィルタ構文

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 を明示的に設定してください。

変数

説明

TASKDATA

タスクデータディレクトリへの明示的なパス(自動導出を上書き)

TASKDATA_ROOT

プロジェクトごとのタスクデータを自動導出するためのルートディレクトリ

BACKLOG_NAMESPACE

明示的なコレクション名(デフォルト: tasks

BACKLOG_AUTO_NAMESPACE

true に設定すると、現在の作業ディレクトリからコレクション名を導出

BACKLOG_AGENT_ID

マルチライターサポート用エージェントID(Claude、Geminiなど)

BACKLOG_BACKEND

ストレージバックエンド:ファイルシステム(デフォルト)または s3

BACKLOG_S3_BUCKET

S3バケット名 (BACKLOG_BACKEND=s3 の場合に必須)

BACKLOG_S3_REGION

AWSリージョン(デフォルト認証情報を使用する場合はオプション)

マルチライターサポート

Backlogは、同じデータを共有する複数のプロセス(例:Claude DesktopとGemini CLI)からの同時アクセスをサポートしています。これを有効にするには:

  1. 各プロセスに一意の BACKLOG_AGENT_ID を割り当てます(例:claude, gemini)。

  2. エージェントIDが設定されると、エンジンはエージェントごとの書き込みログを使用し、ファイルロックを回避します。

  3. 各プロセスは操作前に自動的に refresh() を呼び出し、他のエージェントからの変更を取り込みます。

名前空間

複数のプロジェクトで単一の TASKDATA ディレクトリ(共有S3バケットやグローバルな ~/.backlog フォルダなど)を使用したい場合は、名前空間を使用してタスクを分離できます:

  1. 手動: BACKLOG_NAMESPACE=my-project を設定して特定のコレクション名を使用します。

  2. 自動: 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

コミュニティ

backlogが役に立った場合は、スターを付けることを検討してください。他の人がプロジェクトを見つける助けになります。

ライセンス

MIT

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 20 tool updatesv1.5.0
    • Changedtask_add12 fields changed
      • changedInput schema / properties / agent / description
        Previous value: -"Agent identity, e.g. 'explorer', 'planner', 'reviewer'"New value: +"Agent identity for tracking task ownership across agent teams. E.g. 'explorer', 'planner', 'reviewer'."
      • changedInput schema / properties / depends / description
        Previous 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."
      • changedInput schema / properties / description / description
        Previous value: -"Task description text"New value: +"Task description (required, max 500 chars). Brief summary of what needs to be done."
      • changedInput schema / properties / due / description
        Previous 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')."
      • changedInput schema / properties / extra / description
        Previous value: -"Additional raw attributes"New value: +"Space-separated additional attributes or +tag/-tag modifiers."
      • changedInput schema / properties / priority / description
        Previous value: -"Priority: H (high), M (medium), L (low)"New value: +"Priority: H (high), M (medium), L (low). Affects urgency score and sort order."
      • changedInput schema / properties / project / description
        Previous value: -"Project name, e.g. 'backend'"New value: +"Project name for grouping (alphanumeric, hyphens, underscores). E.g. 'backend', 'auth-refactor'"
      • changedInput schema / properties / recur / description
        Previous 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'."
      • changedInput schema / properties / scheduled / description
        Previous 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'."
      • changedInput schema / properties / tags / description
        Previous 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."
      • changedInput schema / properties / until / description
        Previous 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'."
      • changedInput schema / properties / wait / description
        Previous 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'."
    • Changedtask_annotate2 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID."
      • changedInput schema / properties / text / description
        Previous value: -"Annotation text"New value: +"Annotation text to add. Stored with a timestamp. Keep concise — use task_doc_write for longer content."
    • Changedtask_archive1 field changed
      • changedInput schema / properties / older_than_days / description
        Previous 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."
    • Changedtask_archive_load1 field changed
      • changedInput schema / properties / segment / description
        Previous 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."
    • Changedtask_count1 field changed
      • changedInput schema / properties / filter / description
        Previous 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."
    • Changedtask_delete1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID of the task to delete."
    • Changedtask_denotate2 fields changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID."
      • changedInput schema / properties / text / description
        Previous value: -"Exact annotation text to remove"New value: +"Exact annotation text to remove (case-sensitive). Must match a previously added annotation."
    • Changedtask_doc_delete1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID."
    • Changedtask_doc_read1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID."
    • Changedtask_doc_write2 fields changed
      • changedInput schema / properties / content / description
        Previous value: -"Document content (markdown)"New value: +"Document content in markdown format. Replaces any existing document on this task."
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID."
    • Changedtask_done1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID. Task must be in pending or active status."
    • Changedtask_duplicate8 fields changed
      • changedInput schema / properties / agent / description
        Previous value: -"Agent identity"New value: +"Agent identity for the new task."
      • changedInput schema / properties / description / description
        Previous value: -"New description (overrides original)"New value: +"New description to override the original."
      • changedInput schema / properties / due / description
        Previous value: -"New due date"New value: +"New due date. Pass empty string to clear."
      • changedInput schema / properties / extra / description
        Previous value: -"Additional raw attributes"New value: +"Space-separated additional attributes or +tag/-tag modifiers."
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID to duplicate"New value: +"Task ID number (e.g. '1') or UUID of the task to copy."
      • changedInput schema / properties / priority / description
        Previous value: -"New priority"New value: +"New priority. Pass empty string to clear."
      • changedInput schema / properties / project / description
        Previous value: -"New project"New value: +"New project. Pass empty string to clear."
      • changedInput schema / properties / tags / description
        Previous 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."
    • Changedtask_import1 field changed
      • changedInput schema / properties / tasks / description
        Previous 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\"}]'"
    • Changedtask_info1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID. Returns an error if no task matches."
    • Changedtask_list1 field changed
      • changedInput schema / properties / filter / description
        Previous 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."
    • Changedtask_log6 fields changed
      • changedInput schema / properties / agent / description
        Previous value: -"Agent identity"New value: +"Agent identity that completed the work."
      • changedInput schema / properties / description / description
        Previous value: -"Task description text"New value: +"Description of the completed work (required, max 500 chars)."
      • changedInput schema / properties / extra / description
        Previous value: -"Additional raw attributes"New value: +"Space-separated additional attributes or +tag modifiers."
      • changedInput schema / properties / priority / description
        Previous value: -"Priority: H/M/L"New value: +"Priority: H (high), M (medium), L (low)."
      • changedInput schema / properties / project / description
        Previous value: -"Project name"New value: +"Project name for grouping."
      • changedInput schema / properties / tags / description
        Previous value: -"Tags to apply, as comma-separated list. E.g. 'done,reviewed'"New value: +"Tags as comma-separated list. E.g. 'done,reviewed'"
    • Changedtask_modify13 fields changed
      • changedInput schema / properties / agent / description
        Previous value: -"Agent identity, e.g. 'explorer', 'planner', 'reviewer'"New value: +"Agent identity. Pass empty string to unassign."
      • changedInput schema / properties / depends / description
        Previous value: -"New dependency UUIDs"New value: +"New dependency UUIDs (comma-separated). Replaces existing dependencies. Pass empty string to clear."
      • changedInput schema / properties / description / description
        Previous value: -"New description text"New value: +"New description text (max 500 chars). Only set if you want to change it."
      • changedInput schema / properties / due / description
        Previous value: -"New due date"New value: +"New due date. Accepts ISO dates, relative ('3d'), named ('friday', 'eow'). Pass empty string to clear."
      • changedInput schema / properties / extra / description
        Previous value: -"Additional raw attributes"New value: +"Space-separated additional attributes or +tag/-tag modifiers."
      • changedInput schema / properties / filter / description
        Previous 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."
      • changedInput schema / properties / priority / description
        Previous value: -"New priority (empty string to clear)"New value: +"New priority. Pass empty string to clear priority entirely."
      • changedInput schema / properties / project / description
        Previous value: -"New project name"New value: +"New project name. Pass empty string to clear."
      • changedInput schema / properties / recur / description
        Previous value: -"New recurrence frequency"New value: +"New recurrence pattern ('daily', 'weekly', '3d', etc). Pass empty string to clear."
      • changedInput schema / properties / scheduled / description
        Previous value: -"New scheduled date"New value: +"New scheduled start date. Pass empty string to clear."
      • changedInput schema / properties / tags / description
        Previous 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."
      • changedInput schema / properties / until / description
        Previous 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."
      • changedInput schema / properties / wait / description
        Previous value: -"New wait date"New value: +"New wait date. Task hidden from default views until this date. Pass empty string to clear."
    • Changedtask_purge1 field changed
      • changedInput schema / properties / id / description
        Previous 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."
    • Changedtask_start1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID. Task must be in pending status."
    • Changedtask_stop1 field changed
      • changedInput schema / properties / id / description
        Previous value: -"Task ID number or UUID"New value: +"Task ID number (e.g. '1') or UUID. Task must be currently active (started)."
  2. 24 tool updatesv1.4.0
    • First observedtask_add
    • First observedtask_annotate
    • First observedtask_archive
    • First observedtask_archive_list
    • First observedtask_archive_load
    • First observedtask_count
    • First observedtask_delete
    • First observedtask_denotate
    • First observedtask_doc_delete
    • First observedtask_doc_read
    • First observedtask_doc_write
    • First observedtask_done
    • First observedtask_duplicate
    • First observedtask_import
    • First observedtask_info
    • First observedtask_list
    • First observedtask_log
    • First observedtask_modify
    • First observedtask_projects
    • First observedtask_purge
    • First observedtask_start
    • First observedtask_stop
    • First observedtask_tags
    • First observedtask_undo

TDQS

A4.4/5.0

Scored across 24 tools

Disambiguation5/5

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.

Naming Consistency5/5

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

Tool Count4/5

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.

Completeness4/5

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

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Persistent 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.
    14
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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 npm
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for project planning inside Claude. It tracks progress, knows your codebase, and resumes exactly where you left off every session.
    5 npm
    5
    -