mcpField
T
task-graph-mcp

task-graph-mcp

ローカル
github.com/OortonautAI・エージェント234 週間前に更新

task-graph-mcp について

task-graph-mcpは、単一または複数のエージェントによる複雑な作業を構造化するMCPサーバーです。フェーズ、遷移ゲート、タスク依存関係で実行を管理し、データをSQLiteに保存します。

主な機能

  1. 01入れ子タスクと依存グラフ
  2. 02フェーズとワークフローによる整理
  3. 03要件に基づく状態遷移ゲート
  4. 04アトミックなタスク取得とファイルロック
  5. 05トークン、コスト、時間の記録
  6. 06全文検索と添付ファイル

活用シーン

  1. 01複雑な開発をフェーズごとに進行
  2. 02並行エージェントへの作業割り当て
  3. 03遷移前にテストやレビュー要件を確認
  4. 04タスク記録の検索とコミット情報の添付

MCP 対応

MCPサーバーは、タスクの作成、検索、更新、取得、全文検索のツールを提供し、エージェント登録、協調、ワークフロー設定にも対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ
パッケージ
mcpbtask-graph-mcp-x86_64-unknown-linux-gnu.mcpb0.3.0
mcpbtask-graph-mcp-x86_64-apple-darwin.mcpb0.3.0
mcpbtask-graph-mcp-aarch64-apple-darwin.mcpb0.3.0
mcpbtask-graph-mcp-x86_64-pc-windows-msvc.mcpb0.3.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Task Graph MCP Server

実際に機能するエージェントのタスクワークフロー。

AI エージェントに複雑なタスクを任せると、すぐに問題が起こります。エージェントはコンテキストを失い、手順を飛ばし、連携を忘れてしまいます。Task Graph は、作業を導くフェーズ、自動ガイダンスを提供するプロンプト、品質を保証するゲート、複数エージェントのシナリオに対応する調整プリミティブを備えた、構造化ワークフローでこの問題を解決します。これらはすべて Model Context Protocol を通じて利用できます。

Task Graph を選ぶ理由

課題:構造化された実行が必要な複雑なタスクがあります。フェーズに沿って作業する単一のエージェントの場合もあれば、複数のエージェントが並行して連携する場合もあります。適切なワークフローがなければ、エージェントは進捗を見失い、手順を飛ばし、一貫性のない結果を生み出します。

できること:

  • 構造化ワークフロー — フェーズ(調査、実装、レビュー、テスト)に沿ってエージェントを作業に導きます。遷移プロンプトが各ステップで自動的にガイダンスを提供します。
  • 品質ゲート — 遷移の前に、テストの合格、コードのコミット、レビューの完了を必須にできます。基準を自動的に徹底します。
  • すぐに使えるトポロジー — 単独作業、並列スウォーム、スペシャリスト間のリレー、階層型の委任に対応する、すぐに使えるワークフローを用意しています。すぐに始めて、後からカスタマイズできます。
  • 設定可能なワークフロー — 独自の状態、フェーズ、プロンプト、ゲートを定義できます。こちらのプロセスではなく、あなたのプロセスに合わせられます。
  • マルチエージェントの調整 — アドバイザリーファイルロック、DAG 依存関係、アトミックなタスク取得に対応しています。競合や作業の重複を防ぎます。
  • トークン効率に優れた設計 — LLM のコンテキスト制限を考慮しています。コンパクトなクエリ、最小限の往復、構造化された出力を実現します。
  • 組み込みの使用状況管理 — タスクごとのトークン数、コスト、時間を追跡できます。エージェントが何にどれだけ費やしているかを正確に把握できます。
  • インフラ不要 — WAL モードの SQLite を使用します。データベースサーバーを実行する必要はありません。ファイルを指定するだけです。

機能

機能説明
タスク階層親子関係を持つ、無制限の階層化
DAG 依存関係型付きエッジ(blocks、follows、contains)と循環検出
フェーズ作業の種類を分類(調査、実装、レビュー、テスト、デプロイ)
ワークフロー名前付きワークフロートポロジー(solo、swarm、relay、hierarchical)
遷移プロンプトステータスやフェーズの変更時にエージェントへ自動的にガイダンスを提供
ゲートステータスやフェーズの遷移に必要な終了条件
アトミックなタスク取得上限とタグベースのルーティングを備えた厳密なロック
ファイル調整理由と変更ポーリングを備えたアドバイザリーロック
コスト追跡タスクごとのトークン使用量と USD コスト
時間追跡状態遷移からの自動累積
ライブステータス他のエージェントから見えるリアルタイムの「現在の思考」
全文検索タスクと添付ファイルを対象とする FTS5 ベースの検索
添付ファイルインラインコンテンツ、ファイル参照、またはメディアストレージ
エージェントフィードバックカテゴリー分けされたエージェント間コミュニケーション(設定に応じて有効)
動的オーバーレイオーバーレイの追加・削除ツールによる実行時のワークフローカスタマイズ

クイックスタート

# Install
cargo install task-graph-mcp

# Add to your MCP client (Claude Code, etc.)
{
  "mcpServers": {
    "task-graph": {
      "command": "task-graph-mcp"
    }
  }
}
# Agent workflow (worker_id auto-generated if omitted)
connect(workflow="swarm", tags=["code"])                 → "bright-lunar-swift-fox"
list_tasks(ready=true, agent="bright-lunar-swift-fox")   → claimable work
claim(worker_id="bright-lunar-swift-fox", task="add-auth")  → you own it
update(..., phase="implement")                           → enter implementation phase
thinking(agent="bright-lunar-swift-fox", thought="Adding JWT...")  → visible to others
update(worker_id="bright-lunar-swift-fox", task="add-auth",
       status="completed",
       attachments=[{type:"commit", content:"abc123"}])  → done

インストール

crates.io から(推奨)
cargo install task-graph-mcp
ビルド済みバイナリ

GitHub Releases から、お使いのプラットフォーム用の最新リリースをダウンロードします。

プラットフォームダウンロード
Linux(x64)task-graph-mcp-x86_64-unknown-linux-gnu.tar.gz
macOS(Intel)task-graph-mcp-x86_64-apple-darwin.tar.gz
macOS(Apple Silicon)task-graph-mcp-aarch64-apple-darwin.tar.gz
Windows(x64)task-graph-mcp-x86_64-pc-windows-msvc.zip

展開し、バイナリを PATH に配置します。

ソースから
git clone https://github.com/Oortonaut/task-graph-mcp.git
cd task-graph-mcp
cargo build --release

バイナリは target/release/task-graph-mcp に生成されます。

使い方

MCP サーバーとして

MCP クライアントの設定に追加します。

{
  "mcpServers": {
    "task-graph": {
      "command": "task-graph-mcp",
      "args": []
    }
  }
}
CLI オプション
task-graph-mcp [OPTIONS]

Options:
  -c, --config <FILE>     Path to configuration file
  -d, --database <FILE>   Path to database file (overrides config)
  -v, --verbose           Enable verbose logging
  -h, --help              Print help
  -V, --version           Print version

構成

完全なリファレンス:ワークフロー、プロンプト、ゲート、ロール、タグを含む構成の詳細については、docs/CONFIGURATION.md を参照してください。

.task-graph/config.yaml を作成します。

server:
  db_path: .task-graph/tasks.db
  media_dir: .task-graph/media  # Directory for file attachments
  skills_dir: .task-graph/skills  # Custom skill overrides
  stale_timeout_seconds: 900
  default_format: json  # or markdown

paths:
  style: relative  # or project_prefixed

auto_advance:
  enabled: false        # Auto-transition unblocked tasks
  target_state: ready   # Target state (requires custom state in states config)
状態の構成

タスクの状態は構成できます。デフォルトの状態は pending、working、completed、failed、cancelled です。

自動進行用に ready 状態を追加するには、次のようにします。

states:
  initial: pending
  disconnect_state: pending  # State for tasks when owner disconnects (must be untimed)
  blocking_states: [pending, working]
  definitions:
    pending:
      exits: [ready, working, cancelled]
    ready:
      exits: [working, cancelled]
    working:
      exits: [completed, failed, pending]
      timed: true    # Time in this state counts toward time_actual_ms
    completed:
      exits: []
    failed:
      exits: [pending]
    cancelled:
      exits: []

auto_advance:
  enabled: true
  target_state: ready

状態の定義に関する詳細については、SCHEMA.md を参照してください。

依存関係の構成

依存関係のタイプは、タスク同士の関係を定義します。デフォルトのタイプは blocks、follows、contains、duplicate、see-also、relates-to です。

dependencies:
  definitions:
    blocks:
      display: horizontal  # Same-level relationship
      blocks: start        # Blocks claiming the dependent task
    follows:
      display: horizontal
      blocks: start
    contains:
      display: vertical    # Parent-child relationship
      blocks: completion   # Blocks completing the parent
    duplicate:
      display: horizontal
      blocks: none         # Informational only
    see-also:
      display: horizontal
      blocks: none
    relates-to:
      display: horizontal
      blocks: none
プロパティ値説明
displayhorizontal、vertical視覚的な関係(同じレベルか親子か)
blocksnone、start、completion依存関係によってブロックされる対象
添付ファイルの構成

事前構成済みの添付ファイルキーを使うと、一般的なコンテンツタイプを添付する際の定型記述を減らし、デフォルトの MIME タイプとモードを指定できます。

attachments:
  unknown_key: warn  # allow | warn (default) | reject
  definitions:
    commit:
      mime: text/git.hash
      mode: append
    checkin:
      mime: text/p4.changelist
      mode: append
    meta:
      mime: application/json
      mode: replace
    note:
      mime: text/plain
      mode: append
プロパティ値説明
unknown_keyallow、warn、reject未定義の添付ファイルキーに対する動作
definitions.<key>.mimeMIME タイプの文字列このキーのデフォルト MIME タイプ
definitions.<key>.modeappend、replaceデフォルトのモード(append は既存の内容を保持し、replace は上書きします)

組み込みのデフォルト:

キーMIME タイプモード用途
committext/git.hashappendGit コミットハッシュ
checkintext/p4.changelistappendPerforce のチェンジリスト
changelisttext/plainappend変更されたファイル
metaapplication/jsonreplace構造化メタデータ
notetext/plainappend一般的なメモ
logtext/plainappendログ出力
errortext/plainappendエラーメッセージ
outputtext/plainappendコマンド/ツールの出力
difftext/x-diffappendパッチと差分
plantext/markdownreplace計画と仕様
resultapplication/jsonreplace構造化された結果
contexttext/plainreplace現在のコンテキスト/状態

使用方法:

# MIME and mode auto-filled from config:
attach(task="123", name="commit", content="abc1234")
# → mime=text/git.hash, mode=append

attach(task="123", name="meta", content='{"v":1}')
# → mime=application/json, mode=replace (overwrites existing meta)

# Explicit values override defaults:
attach(task="123", name="commit", mime="text/plain", content="override")

環境変数:

  • TASK_GRAPH_CONFIG_PATH:構成ファイルへのパス(.task-graph/config.yaml より優先されます)
  • TASK_GRAPH_DB_PATH:データベースファイルのパス(構成ファイルがない場合のフォールバック)
  • TASK_GRAPH_MEDIA_DIR:ファイル添付用のメディアディレクトリ(構成ファイルがない場合のフォールバック)
  • TASK_GRAPH_LOG_DIR:ログディレクトリのパス(構成ファイルがない場合のフォールバック)

MCP ツール

ワーカー管理
ツール説明
connect(worker_id?, tags?, workflow?, force?, db_path?, media_dir?, log_dir?, config_path?, overlays?: str[])ワーカーを登録します。任意の workflow で名前付きワークフロー(solo、swarm、relay、hierarchical)を選択します。worker_id と有効な paths を返します。
disconnect(worker_id: worker_str, final_status?: status_str = "pending")ワーカーの登録を解除し、すべてのクレーム/ロックを解放します。
list_agents(tags?: str[], file?: filename, task?: task_str, depth?: int, stale_timeout?: int)フィルターを指定して、接続中のワーカーを一覧表示します。
cleanup_stale(timeout?: int, final_status?: status_str)古いワーカーを削除し、そのクレームを解放します。
add_overlay(worker_id: str, overlay: str)接続中のワーカーに動的なワークフローオーバーレイを追加します。
remove_overlay(worker_id: str, overlay: str)接続中のワーカーからワークフローオーバーレイを削除します。
タスクの CRUD
ツール説明
create(description: str, id?: task_str, parent?: task_str, priority?: int = 5, points?: int, time_estimate_ms?: int, tags?: str[])タスクを作成します。優先度は 0~10 です(数値が高いほど重要です)。
create_tree(tree, parent?, child_type?, sibling_type?)入れ子のタスクツリーを作成します。child_type(デフォルト:"contains")は親→子の依存関係に、sibling_type は兄弟タスク間の依存関係に使用します。
get(task: task_str)添付ファイルのメタデータと件数を含め、ID でタスクを取得します。
list_tasks(status?: status_str[], ready?: bool, blocked?: bool, claimed?: bool, owner?: worker_str, parent?: task_str, recursive?: bool, agent?: worker_str, tags_any?: str[], tags_all?: str[], sort_by?: str, sort_order?: str, limit?: int, offset?: int)フィルターを指定してタスクを検索します。着手可能なタスクには ready=true を指定します。
update(worker_id: worker_str, task: task_str, status?: status_str, phase?: str, assignee?: worker_str, title?: str, description?: str, priority?: int, points?: int, tags?: str[], needed_tags?: str[], wanted_tags?: str[], time_estimate_ms?: int, reason?: str, force?: bool, attachments?: object[])タスクを更新します。ステータスやフェーズの変更に伴い、所有者が自動管理され、プロンプトがトリガーされます。コミットや変更リストを記録するには、attachments を指定します。
delete(worker_id: worker_str, task: task_str, cascade?: bool, reason?: str, obliterate?: bool, force?: bool)タスクを削除します。デフォルトではソフト削除されます。完全に削除するには obliterate=true を指定します。
scan(task: task_str, before?: int, after?: int, above?: int, below?: int)タスクグラフを複数の方向にスキャンします。深さは 0=なし、N=階層数、-1=すべてです。
search(query: str, limit?: int = 20, include_attachments?: bool, status_filter?: status_str)FTS5 検索です。フレーズ、prefix*、AND/OR/NOT、title:word に対応しています。
rename(worker_id: worker_str, task: task_str, new_id: task_str)参照しているすべてのテーブルで、タスク ID をアトミックに変更します。
タスクの取得
ツール説明
claim(worker_id: worker_str, task: task_str, force?: bool)タスクを取得します。依存関係が未解決の場合、上限に達している場合、またはタグが不足している場合は失敗します。横取りするには force を指定します。

注:update(status="pending") で解放します。update(status="completed") で完了します。ステータスの変更に伴い、所有者が自動管理されます。

依存関係
ツール説明
link(from: task_str|task_str[], to: task_str|task_str[], type?: dep_str = "blocks")依存関係を作成します。種類は blocks、follows、contains、duplicate、see-also、relates-to です。
unlink(from: task_str|"*", to: task_str|"*", type?: dep_str)依存関係を削除します。ワイルドカードとして * を使用します。
relink(prev_from: task_str[], prev_to: task_str[], from: task_str[], to: task_str[], type?: dep_str = "contains")依存関係をアトミックに移動します(unlink の後に link を実行します)。
トラッキング
ツール説明
thinking(worker_id: worker_str, thought: str, tasks?: task_str[])ステータスをリアルタイムで通知します。他のワーカーからも確認できます。ハートビートを更新します。
task_history(task: task_str, states?: status_str[])時間の記録を含むステータス遷移履歴を取得します。
project_history(from?: datetime_str, to?: datetime_str, states?: status_str[], limit?: int = 100)日付範囲で絞り込んだプロジェクト全体の履歴を取得します。
log_metrics(worker_id: worker_str, task: task_str, cost_usd?: float, values?: int[8])メトリクスを記録します(集計されます)。
get_metrics(task: task_str|task_str[])タスクのメトリクスを取得します。
give_feedback(message: str, category?: str, sentiment?: str, agent_id?: str, tool_name?: str, task_id?: str)ツール、ワークフロー、UX に関するフィードバックを記録します。デフォルトで有効です。サイズ上限(デフォルト:1MB)を超える書き込みは拒否されます。
list_feedback()フィードバックの Markdown ファイルを読み込みます。
ファイルの調整
ツール説明
mark_file(worker_id: worker_str, file: filename|filename[], task?: task_str, reason?: str)意図を示すためにファイルにマークを付けます。助言目的であり、処理をブロックしません。
unmark_file(worker_id: worker_str, file?: filename|filename[]|"*", task?: task_str, reason?: str)マークを削除します。すべてのマークを削除するには * を使用します。
list_marks(files?: filename[], worker_id?: worker_str, task?: task_str)現在のファイルマークを取得します。
mark_updates(worker_id: worker_str)前回の呼び出し以降のマークの変更を確認します。
添付ファイル
ツール説明
attach(task: task_str|task_str[], name: str, content?: str, mime?: mime_str, file?: filename, store_as_file?: bool, mode?: str)添付ファイルを追加します。参照には file を、メディアの保存には store_as_file を使用します。
attachments(task: task_str, name?: str, mime?: mime_str)添付ファイルのメタデータを取得します。名前にはグロブパターンを使用できます。
detach(worker_id: worker_str, task: task_str, name: str, delete_file?: bool)名前を指定して添付ファイルを削除します。
詳細
ツール説明
check_gates(task: task_str)ステータス/フェーズを遷移する前に、ゲートの要件を確認します。未達のゲートが、合格/警告/失敗の状態とともに返されます。
get_advisory(topic?: str, task?: task_str, worker_id?: worker_str)ガバナンスに関する助言を取得します。トピックを指定しない場合は、すべてのトピックが一覧表示されます。トピックを指定すると、テンプレートを展開した助言の全文が返されます。
query(sql: str, params?: str[], limit?: int = 100, format?: str)読み取り専用 SQL を実行します。SELECT のみ使用できます。権限が必要です。
get_schema(table?: str, include_sql?: bool)データベーススキーマを取得します。テーブル名、列、型、外部キーが返されます。
get_prompts(status?: str, phase?: str, task?: task_str, worker_id?: worker_str)ワークフロープロンプトを取得します。パラメーターを指定しない場合は、トリガーが一覧表示されます。ステータス/フェーズを指定すると、その遷移向けに展開されたプロンプトが返されます。
list_workflows()利用可能なワークフロー設定(solo、swarm、relay、hierarchical など)を一覧表示します。
list_skills()利用可能な同梱スキルとその説明を一覧表示します。
get_skill(name: str)同梱スキルの全文を取得します。

MCP リソース

URI説明
query://tasks/all依存関係を含むタスクグラフ全体
query://tasks/ready取得可能なタスク
query://tasks/blocked依存関係によってブロックされているタスク
query://tasks/claimed取得済みのすべてのタスク
query://tasks/agent/{id}エージェントが所有するタスク
query://tasks/tree/{id}すべての子孫タスクを含むタスク
query://files/marksすべてのファイルマーク
query://agents/all登録済みエージェント
query://stats/summary集計統計
config://currentすべての設定をまとめて返します
config://statesタスクの状態定義
config://phasesフェーズの定義
config://dependencies依存関係の種類の定義
config://tagsタグの定義
docs://index利用可能なドキュメントファイルをすべて一覧表示します
docs://search/{query}ドキュメント全体の全文検索
docs://skills/list利用可能なスキルを一覧表示します
docs://skills/{name}指定したスキルの内容を取得します
docs://workflows/list利用可能なワークフローを一覧表示します
docs://workflows/{name}ワークフローの詳細を取得します
docs://overlays/list利用可能なオーバーレイを一覧表示します
docs://overlays/{name}オーバーレイの詳細を取得します
docs://{path}指定したドキュメントファイルの内容

タスクツリー構造

create_tree を使用して階層型タスクを作成します:

{
  "tree": {
    "title": "Implement auth",
    "children": [
      { "title": "Design schema" },
      { "title": "Write migrations" },
      { "title": "Implement endpoints", "children": [
        { "title": "Login endpoint" },
        { "title": "Logout endpoint" },
        { "title": "Refresh endpoint" }
      ]},
      { "title": "Write tests" }
    ]
  },
  "sibling_type": "follows"
}
ツリーノードのフィールド
フィールド説明
titleタスクのタイトル(新しいタスクでは必須)
descriptionタスクの説明
idカスタムタスク ID(省略した場合は UUID7 が生成されます)
refID で既存のタスクを参照します(設定すると他のフィールドは無視されます)
priority優先度 0~10(デフォルトは 5)
pointsストーリーポイント/複雑さの見積もり
time_estimate_msミリ秒単位の所要時間の見積もり
tagsタスクの分類タグ
needed_tagsタスクを取得するには、エージェントがこれらのタグをすべて持っている必要があります(AND)
wanted_tagsタスクを取得するには、エージェントがこれらのタグのうち少なくとも 1 つを持っている必要があります(OR)
childrenネストされた子ノード
トップレベルのパラメーター
パラメーターデフォルト説明
tree必須タスクツリーのルートノード
parentnullツリーのルートを既存の親タスクに追加します
child_type"contains"親から子への依存関係の種類
sibling_typenull兄弟間の依存関係の種類(順次の場合は "follows"、並列の場合は null)
既存のタスクの参照

ref を使用して、既存のタスクをツリー構造に組み込みます。

{
  "tree": {
    "title": "Sprint 5",
    "children": [
      { "title": "New feature" },
      { "ref": "existing-task-id" },
      { "title": "Another task" }
    ]
  },
  "sibling_type": "follows"
}

タグベースの適合性

ワーカーは接続時にタグで能力を宣言します。タスクに特定のタグを要求することで、取得できるワーカーを制御できます。

タグカテゴリーの例:

  • モデルの能力:image-in、audio-out、video-in、code、bulk
  • アクセスレベル:prod-access、admin、external
  • 専門分野:rust、python、frontend、database

注:コーディネーター/レビュアー/デプロイヤーなどの役割は、フェーズで表すほうが適しています。

タスクの要件:

  • needed_tags(AND):エージェントはこれらをすべて持っている必要があります
  • wanted_tags(OR):エージェントはこれらのうち少なくとも 1 つを持っている必要があります
{
  "title": "Analyze screenshot and generate code",
  "needed_tags": ["image-in", "code"],
  "wanted_tags": ["bulk"]
}
{
  "title": "Deploy to production",
  "phase": "deploy",
  "needed_tags": ["prod-access"],
  "wanted_tags": ["aws", "gcp"]
}

ワークフローとフェーズ

フェーズ

タスクには、実行する作業の種類を分類する phase を設定できます。

{
  "title": "Add authentication",
  "phase": "implement"
}

組み込みのフェーズ:explore、implement、review、test、security、deploy、triage、diagnose、design、plan、doc、integrate、monitor、optimize

フェーズにより、次のことが可能になります。

  • 遷移時のプロンプト — フェーズへの入退出時に自動でガイダンスを表示します
  • ゲート — フェーズ遷移前に満たす必要がある要件です
  • 役割ベースのルーティング — リレーワークフローでは、専門家が特定のフェーズを担当します
名前付きワークフロー

あらかじめ構築されたワークフローのトポロジーにより、さまざまな調整パターンに最適化できます。

ワークフロー説明最適な用途
solo単一のエージェントによる完全な自律実行シンプルなタスク、プロトタイピング
swarmプル型の並列ジェネラリスト高スループット、独立したタスク
relay順次処理する専門家による引き継ぎ複雑なタスク、ドメインの専門知識
hierarchicalリードからワーカーへの委任大規模プロジェクト、チームの調整
pushプッシュ型のタスク配分トポロジー集中型の割り当て、負荷分散
kanbanWIP 制限付きのボード形式のタスク管理継続的なフロー、視覚的な追跡
sprint期間を定めた反復計画スクラムチーム、固定されたサイクル

接続時にワークフローを選択します。

connect(worker_id="agent-1", workflow="swarm")

各ワークフローには、用途に合わせたプロンプトと調整ガイダンスが用意されています。詳しいパターンについては、WORKFLOW_TOPOLOGIES.md を参照してください。

遷移時のプロンプト

ステータスまたはフェーズが変わると、エージェントに自動でガイダンスが表示されます。

# workflows.yaml
states:
  working:
    prompts:
      enter: |
        You are now working on this task.
        From {{current_status}} you can transition to: {{valid_exits}}
      exit: |
        Before leaving:
        - [ ] Attach results
        - [ ] Log costs

プロンプトでは、テンプレート変数 {{current_status}}、{{valid_exits}}、{{current_phase}}、{{valid_phases}} を使用できます。

ゲート

ゲートは、ステータスまたはフェーズの遷移前に満たす必要がある要件です。

gates:
  status:working:
    - type: gate/tests
      enforcement: warn
      description: "Tests must pass"

証拠を添付してゲートを満たします。

attach(task="123", type="gate/tests", content="All tests passing")

適用レベル:allow(助言)、warn(force=true でない限りブロック)、reject(強制ブロック)

ファイルの調整

エージェントは、変更追跡機能付きのアドバイザリーマークを使用して、ファイル編集を調整できます。

Worker A: connect() -> "worker-a"
Worker A: mark_file("worker-a", "src/main.rs", "refactoring")
Worker B: connect() -> "worker-b"
Worker B: mark_updates("worker-b") -> sees worker-a's mark
Worker A: unmark_file("worker-a", "src/main.rs", "ready for review")
Worker B: mark_updates("worker-b") -> sees removal with reason
Worker B: mark_file("worker-b", "src/main.rs", "adding tests")

アーキテクチャ

┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  Agent A    │     │  Agent B    │     │  Agent C    │
│  (Claude)   │     │  (GPT-4)    │     │  (Worker)   │
└──────┬──────┘     └──────┬──────┘     └──────┬──────┘
       │ stdio             │ stdio             │ stdio
       ▼                   ▼                   ▼
┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│ task-graph  │     │ task-graph  │     │ task-graph  │
│    MCP      │     │    MCP      │     │    MCP      │
└──────┬──────┘     └──────┬──────┘     └──────┬──────┘
       │                   │                   │
       └───────────────────┼───────────────────┘
                           ▼
                  ┌─────────────────┐
                  │   SQLite + WAL  │
                  │  .task-graph/   │
                  │    tasks.db     │
                  └─────────────────┘
  • トランスポート:Stdio — 各ワーカーが独自のサーバープロセスを起動します
  • データベース:プロセス間の同時アクセスに対応するWALモードのSQLite
  • デプロイ:単一のバイナリで、外部依存関係がなく、オフラインで動作します

代替手段との比較

タスクグラフ線形タスクリストカスタムデータベース
ワークフローフェーズ✓ プロンプトで標準搭載✗ 手動で追跡DIY
品質ゲート✓ 設定可能な適用✗DIY
マルチエージェント対応✓ アトミックな確保、ファイルロック✗ 競合状態場合による、DIY
依存関係の追跡✓ サイクル検出機能付きDAG✗ 手動で順序付けDIY
MCP ネイティブ✓ ネイティブ対応✗ ラッパーが必要✗ ラッパーが必要
トークンの計上✓ 標準搭載✗DIY
セットアップ不要不要データベースサーバー

ドキュメント

ドキュメント説明
CONFIGURATION.md設定リファレンス全般(config.yaml、ワークフロー、プロンプト、ゲート、タグ)
SCHEMA.mdデータベーススキーマとステートマシンのドキュメント
DESIGN.mdアーキテクチャと設計上の判断
WORKFLOW_TOPOLOGIES.mdマルチエージェントのワークフローパターン(単独、スウォーム、リレー、階層型)
EXPORT_IMPORT.mdデータのエクスポートおよびインポート機能
PROCESSES.mdリリースプロセス、変更履歴の管理
GATES.mdワークフローのゲート条件と適用
METRICS.md実験メトリクスの定義とSQLの例

ライセンス

Apache 2.0


構造化されたワークフローと信頼性の高い連携を必要とするAIエージェントのために構築されています。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。