mcpField
T
Tirith

Tirith

ローカル
eabz.github.ioAI・エージェント43 週間前に更新

Tirith について

Tirithは、複数のコーディングエージェントが同じリポジトリで作業するためのMCPサーバーです。ファイルの確保、タスク管理、インターフェース契約、変更通知、パス単位のメモを扱い、会話履歴や埋め込みデータは保存しません。

主な機能

  1. 01ファイルとディレクトリの期限付き確保
  2. 02優先度と依存関係付きタスク
  3. 03バージョン管理されるインターフェース契約
  4. 04変更通知と決定記録
  5. 05パス単位の検索可能なメモ
  6. 06エージェント間メッセージとエスカレーション

活用シーン

  1. 01複数エージェントによるファイル編集の競合防止
  2. 02並行エージェントへのリポジトリ作業の割り当て
  3. 03実装前のインターフェース変更共有
  4. 04後続の担当者へのファイル固有の知見の伝達

MCP 対応

TirithはstdioまたはHTTP経由で、MCPクライアントに協調作業用ツールとプロトコル指示を提供します。MCP対応クライアントで利用でき、同じMCP経路を使うCLIも備えています。

設定

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

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

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

リポジトリ
パッケージ
cargotirith-mcp1.2.0

ツール

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

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

詳細

Tirith

Tirith

並行して動作するコーディングエージェント向けの調整サーバー。
MCP を介して、作業の確保、タスクボード、インターフェース契約、変更通知、決定ログ、パスの範囲を限定したメモ、エージェント間メッセージを提供します。

CI リリース crates.io ライセンス:MIT

1つのリポジトリで5つ、あるいは10のコーディングエージェントを動かすと、同じファイルを編集したり、他のエージェントが依存しているものの名前を変更したり、インターフェースの両側を異なる形で実装したりします。Tirith は、すべてのエージェントがやり取りする小さなデーモンです。エージェントは編集前にファイルの作業を確保し、確保とともに、そのファイルに関する通知、契約、決定、メモを受け取ります。また、どちらかの側が実装する前に、インターフェースの仕様を公開します。

stdio または HTTP 経由で MCP を話すものなら何とでも連携できます。Claude Code、Cursor、Codex、LangGraph、CrewAI、または単純なスクリプトに対応しています。

また、情報を記憶します。エージェントはリポジトリ内のパスに紐づけたメモを残すため、あるエージェントがファイルについて学んだことを、そのファイルを次に確保するエージェントが利用できます。Tirith は会話履歴も埋め込みも保存しません。

ステータス:v1 リリース済み。 ADR-0013 の定義に基づき、すべてのプリミティブ、CLI、永続化機能、ダッシュボードを実装し、テスト済みです。ツールスキーマはセマンティックバージョニングに従います。

インストール

macOS と Linux:

curl -LsSf https://eabz.github.io/tirith/install.sh | sh

Windows(PowerShell):

irm https://eabz.github.io/tirith/install.ps1 | iex

cargo を使用する場合(パッケージ名は tirith-mcp、バイナリ名は tirith です):

cargo install tirith-mcp

すでにインストール済みですか?tirith update を実行すると、最新リリースでバイナリをその場で置き換えます。x86_64 および ARM64 向けの macOS、Linux、Windows 用のビルド済みバイナリはリリースページにあります。すべてのオプションについては、docs/1-about/05-installation.mdをご覧ください。

MCP Registryに登録されています: mcp-name: io.github.eabz/tirith。

クイックスタート

リポジトリで、次を実行します。

tirith init

.mcp.json に tirith stdio を登録し、AGENTS.md に短いブロックを追加します(別のファイルを指定する場合は --file を使用します)。最初のクレームから、どのエージェントがスウォームを率いるかに至るまで、プロトコル自体はセッション接続のたびに MCP サーバーの指示として渡されます。独自のプロトコルを使いたいリポジトリでは、.tirith/instructions.md に記述します(tirith init --instructions を実行すると、編集用の組み込みプロトコルがそこに書き込まれます)。他のクライアントでは、同じコマンドを手動で登録します。シムはセッションで初めて必要になったときにリポジトリのデーモンを起動し、別バージョンのデーモンがあれば置き換え、その後はデーモンにリクエストを中継します。手動で起動する必要はありません。

クライアントセットアップ
Claude Codeclaude mcp add tirith -- tirith stdio
Cursor.cursor/mcp.json: { "mcpServers": { "tirith": { "command": "tirith", "args": ["stdio"] } } }
Codexcodex mcp add tirith -- tirith stdio
LangGraph、CrewAI、curlHTTP 経由で接続します。docs/2-examples/02-client-setup.md を参照してください。

デーモンは MCP を http://127.0.0.1:7477/mcp で、ライブダッシュボードを http://127.0.0.1:7477/ で提供します。状態はリポジトリ内の .tirith/ に書き込まれます。コントラクト、通知、決定、メモリノートはコミットすることを想定しています。.tirith/runtime/(クレーム、タスク、メッセージ)は、Tirith が自動作成する .gitignore によって Git の追跡対象外になります。

各エージェントは、すべての呼び出しに一貫した agent 名を渡します。従う必要がある規約はこれだけです。複数のエージェントを同時に実行するには、プロジェクトのエージェント指示に docs/2-examples/03-swarm-playbook.md のプロトコルブロックを貼り付けます。このブロックには、どのセッションがリードするか、いつワーカーを起動するか、各ワーカーに何を伝えるか、各ワーカーがどのモデルで動作するかが記されています。デーモンは同じルールを指示として提供します。

機能

プリミティブツール目的
クレームclaim、release、renew、claims_list編集前にファイルまたはディレクトリのリースを取得します。重複する場合は、所有者、理由、有効期限とともに拒否されるか、wait_secs を指定してサーバー側で待機します。エージェントが停止するとリースは期限切れになり、エージェントには次の呼び出し時にそのことが通知されます。
タスクボードtask_create、task_pull、task_update、task_list優先度、所有者、依存関係を持つタスクを管理します。エージェントは他のエージェントが保持しているタスクをスキップして、次のブロックされていないタスクを取得します。また、wait_secs を指定してサーバー側でタスクを待つこともできます。所有者から応答がなくなったタスクはボードに戻されます。
コントラクトcontract_publish、contract_get、contract_list実装前にインターフェースの形状を公開し、バージョン管理します。新しいバージョンが公開されると、利用者に自動で通知されます。
変更通知notice_publish、notice_list「X を Y に改名しました。次のパスに影響します。」といった通知です。依存するエージェントには、クレーム取得時に返される概要に一度だけ通知が含まれます。
決定ログdecision_record、decision_list理由を添えて確定した選択を記録し、同じことを二度決めないようにします。
メモリノートmemory_write、memory_read、memory_search、memory_deleteリポジトリのパスに関連付けた教訓、注意点、引き継ぎ事項を記録します。コミット可能な Markdown 形式で検索でき、ノートが対象とするパスのクレームを取得したエージェントに届けられます。
メッセージmessage_send、message_listエージェント間の短いメモです。受信者の次の呼び出し時に届けられるため、どの MCP クライアントからでも参加できます。ランタイムのみで保持されます。
ステータスstatus件数、永続化、負荷の問題を表示します。verbose を指定すると、誰が何を保持しているかも表示します。

各パラメーターの説明、MCP アノテーション、出力スキーマを備えた 22 個のツールに加え、接続時にサーバーの指示として渡されるプロトコルがあります(ADR-0038)。すべての結果は status フィールドを含む JSON 形式で、リストはページ分割されます。また、どの結果にも、終了したリースを示す lost や、未読メッセージを示す inbox が含まれる場合があります。ツールスキーマの唯一の信頼できる情報源である完全なリファレンスは、docs/1-about/04-primitives.md をご覧ください。

例

2つのエージェントが1つのディレクトリを使用します。2つ目のエージェントは、次にどうするか判断できるだけの情報とともに拒否されます。

tirith claim --agent alice --reason "refactor session handling" src/auth/
# ok       alice  src/auth  expires 04:14:34Z

tirith claim --agent bob --reason "fix login redirect" src/auth/login.rs
# conflict src/auth/login.rs overlaps src/auth (alice: "refactor session handling", expires 04:14:34Z)

次にパスを編集する人へのメモです。Alice が一度書くと、Bob がそのパスを要求した際に、誰も検索することなく抜粋として返されます。本文として返されることはありません。

tirith memory write --agent alice "Session ids are opaque" -k gotcha --path src/auth/ <<'NOTE'
Tokens are opaque strings. Compare them, never parse them.
NOTE

tirith release --agent alice
tirith claim --agent bob --reason "fix login redirect" src/auth/login.rs
# ok       bob  src/auth/login.rs  expires 04:14:34Z
# memory:
#   session-ids-are-opaque gotcha   04:04:34Z  paths src/auth  Session ids are opaque: Tokens are opaque strings. Compare them, never parse them.

契約、通知、MCP を直接使った同じ呼び出しを含む詳しい手順はdocs/2-examples/01-two-agents-demo.md、スクリプトはexamples/demo.shをご覧ください。

CLI

すべてのツールにサブコマンドがあり、CLI はエージェントと同じ MCP パスを使用します。

tirith serve                               # run the repo's daemon by hand
tirith stdio                               # per-session shim clients spawn; starts the daemon if needed
tirith update                              # replace the binary with the latest release
tirith status                              # counts, and who holds what
tirith init [--file AGENTS.md] [--instructions]  # register the server, add the agents block
tirith claim | release | renew | claims
tirith task     create | pull | update | list
tirith contract publish | get | list
tirith notice   publish | list
tirith decision record | list
tirith memory   write | read | search | delete   # body from --body, --file, or stdin
tirith message  send | list                # talk to other agents; the inbox shows on any result
tirith lead log                            # the swarm lead and its policy's decisions
tirith lead human                          # items waiting for you, most agents blocked first
tirith lead human done <id> [--reply TEXT] # answer one; the reply reaches its sender
tirith tray                                # macOS only: menu bar icon listing every daemon
tirith tools                               # list tools with descriptions
tirith call <tool> '<json>'                # call any tool directly

--agent で名前を設定し、--json で生の結果を出力します。また、ok 以外の結果では終了ステータス 1 を返します。

Swarm のリードとエスカレーション

ほかのエージェントを起動するセッションは、予約済みのパス .tirith/lead を要求して swarm のリードになります。status とダッシュボードで、誰が保持しているかを確認できます。以降、デーモンは LLM のターンを消費することなく、定められたルールに従って定型的なエスカレーションを処理します。

  • リードの権限: .tirith/lead を保持している間、契約の公開、タスクの作成、決定の記録、メモリノートの削除、ほかのエージェントのタスクの強制を行えるのはリードだけです。それ以外のエージェントには、リードの名前を示す conflict が返され、変更案を message_send で送信するよう案内されます (ADR-0036)。リードがいない場合、こうした制限は適用されません。また、コミット、プッシュ、プルリクエストの作成、デプロイを行えるのもリードセッションだけです (ADR-0037)。
  • エスカレーションの条件: タスクが blocked に設定された場合(その理由はタスクのメモに記載されます)、または同じ要求が 360 s 以内に 3 回拒否された場合です。リードへのメッセージはエスカレーションになりません。
  • 送信先: リードがいる間は、tirith からのメッセージとしてリードの受信箱に届きます。認証情報、権限、支出、破壊的な操作に言及している場合は、「人間の確認が必要かもしれない」というタグが付きます。エスカレーションが自動的にあなたに届くことはありません。あなたの対応が必要なものは、リードがあなた宛ての文面にして message_send で human に中継します。リードがいない場合、エスカレーションはあなたのキューに届きます。
  • あなたのキュー: ダッシュボードの「Needs you」リスト、tirith lead human、ダッシュボードのポートにある /api/human、macOS のトレイから確認できます。macOS のトレイには各項目の送信者と冒頭の行が表示され、新着が通知されます。ダッシュボードの Done ボタン、または tirith lead human done <id> --reply "..." で返信できます。返信は human からのメッセージとして送信者に届きます。

要求の許可、拒否、待機、解放、リース終了、通知の送信、エスカレーションは、リードの決定ログに追記されます。ログは tirith lead log またはダッシュボードのポートにある /api/lead で確認できます。設計については ADR-0027、各ツールについては 04-primitives.mdをご覧ください。

ドキュメント

セクション内容
1-about目的、アーキテクチャ、プロジェクト構成、ツールリファレンス、インストール
2-examplesデモ、サポート対象の各フレームワーク向けのクライアント設定、リード、ワーカー、ブリーフ、モデルを扱う swarm プレイブック
3-testsテスト戦略
4-styleRust のルールとその出典、git の規約
5-decisionsアーキテクチャ決定記録
6-agent-workflowこのリポジトリでエージェントが作業する方法:Serena、メモリ、Tirith 自身での Tirith の使用
7-releaseリリースプロセスとバージョンの更新
index.htmleabz.github.io/tirith のランディングページ

コントリビューション

コーディングエージェントは、まず AGENTS.md を読む必要があります。このリポジトリは Tirith 自身を使って調整されています。リポジトリ用のデーモンが稼働しており、エージェントは編集前にそのデーモンを通じてファイルを要求します。.agents/skills/ に手順が記載されています。

ライセンス

MIT

コメント

MCP は初めてですか?

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

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