tetrad について
TetradはClaude Code向けのRust製MCPサーバーです。Codex、Gemini CLI、Qwenでコードや計画を評価し、結果を集約します。セッションをまたぐパターン保存、キャッシュ、設定可能な合意ルールも備えています。
主な機能
- 01複数モデルでコードと計画をレビュー
- 02評価結果の合意を集約
- 03ReasoningBankでパターンを学習
- 04LRU方式で結果をキャッシュ
- 05SQLiteでセッション間の履歴を保存
- 06CLIで設定と診断
活用シーン
- 01実装前に計画をレビュー
- 02保存前に生成コードを確認
- 03完了前にテストと変更を評価
- 04レビューのパターンを記録して再利用
MCP 対応
stdio上のJSON-RPC 2.0を介して、計画・コード・テストのレビューと評価ツールの状態確認を行う6つのツールをClaude Codeに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Tetrad
Claude Code 用の四者合意 MCP サーバー
Tetrad は、Rust で記述された高性能な MCP(Model Context Protocol)サーバーです。3 つの AI 搭載 CLI コード評価ツール(Codex、Gemini CLI、Qwen)を調整し、Claude Code が生成したすべてのコードを検証します。
このシステムは四者合意プロトコルを実装しており、4 つの知性、すなわち 3 つの外部評価ツールと Claude Code 自身の承認なしには、コードも計画も受け入れられません。
特長
- 四者合意:コードの承認には 4 つの AI モデルすべての合意が必要です
- ReasoningBank:RETRIEVE→JUDGE→DISTILL→CONSOLIDATE のサイクルによる継続学習システム
- 高性能:Rust で記述され、Tokio による並列実行に対応
- MCP サーバー:Claude Code と連携する、stdio 経由の JSON-RPC 2.0 サーバー
- 充実した CLI:直感的なコマンド(
init、serve、status、doctor、configなど) - LRU キャッシュ:TTL を設定できる結果キャッシュ
- フックシステム:カスタマイズ用の評価前後のコールバック
- 拡張可能:カスタムエグゼキューター用のプラグインシステム
- セッションをまたぐ永続化:パターンと履歴を SQLite に保存
クイックスタート
1. Tetrad をインストールする
# Via npm (recommended - works seamlessly with Claude Code)
npm install -g @samoradc/tetrad
# Or via cargo (requires additional setup)
cargo install tetrad
sudo cp ~/.cargo/bin/tetrad /usr/local/bin/
1.1 プロジェクトで初期化する(任意)
npx @samoradc/tetrad init
これにより、次の処理が行われます。
tetrad.toml設定ファイルを作成します- データベース用の
.tetrad/ディレクトリを作成します .gitignoreに.tetrad/を追加します
2. 外部 CLI ツールをインストールして設定する
Tetrad には、以下の AI CLI ツールのうち少なくとも 1 つが必要です。朗報です。既存のサブスクリプションがあれば、別途 API キーを用意する必要はありません!
Codex CLI(OpenAI)
npm install -g @openai/codex
認証方法:
| 方法 | 必要条件 | API キーが必要ですか? |
|---|---|---|
| ChatGPT ログイン | ChatGPT Plus、Pro、Business、Edu、または Enterprise のサブスクリプション | いいえ |
| API キー | クレジット残高のある OpenAI API アカウント | はい |
# Option 1: Login with your ChatGPT subscription (recommended)
codex login
# Opens browser for OAuth - follow the prompts
# Option 2: Use API key
export OPENAI_API_KEY="your-openai-key"
注記: ヘッドレス/リモートサーバーでは、
codex login --device-authを使用し、デバイスコードフローに従ってください。
Gemini CLI(Google)
npm install -g @google/gemini-cli
認証方法:
| 方法 | 必要条件 | API キーが必要ですか? | 無料枠 |
|---|---|---|---|
| Google ログイン | 個人の Google アカウント | いいえ | 60 リクエスト/分、1,000 リクエスト/日 |
| API キー | Google AI Studio アカウント | はい | 同じ制限 |
# Option 1: Login with Google account (recommended)
gemini auth login
# Opens browser for OAuth - follow the prompts
# Option 2: Use API key from Google AI Studio
export GEMINI_API_KEY="your-gemini-key"
無料枠: 個人の Google アカウントを使用すると、100 万トークンのコンテキストウィンドウに対応した Gemini 2.5 Pro を無料で利用できます!
Qwen CLI(Alibaba)
npm install -g qwen-code
認証方法:
| 方法 | 必要条件 | API キーが必要ですか? | 無料枠 |
|---|---|---|---|
| DashScope API | Alibaba Cloud アカウント | はい | 2,000 リクエスト/日 |
| Coding Plan | Qwen Coding サブスクリプション | はい(形式が異なります) | 含まれています |
# Get your API key from DashScope console
export DASHSCOPE_API_KEY="your-dashscope-key"
# For international users (outside China)
export OPENAI_BASE_URL="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
リージョン別エンドポイント:
- シンガポール:
dashscope-intl.aliyuncs.com- バージニア:
dashscope-us.aliyuncs.com- 北京:
dashscope.aliyuncs.com
3. インストールを確認する
# Check Tetrad version
tetrad version
# Check CLI availability
tetrad status
# Diagnose any issues
tetrad doctor
4. Claude Code CLI に追加
# Add Tetrad as MCP server (all projects)
claude mcp add --scope user tetrad -- npx @samoradc/tetrad serve
# Verify it's configured
claude mcp list
別のインストール方法
# Current project only
claude mcp add tetrad -- npx @samoradc/tetrad serve
# If installed via cargo
claude mcp add --scope user tetrad -- tetrad serve
Note: Tetrad は、発見しやすさとドキュメントのためにMCP Registryに公開されています。
5. 別の方法:手動で設定
プロジェクトのルートに .mcp.json を作成するか、編集します。
{
"mcpServers": {
"tetrad": {
"type": "stdio",
"command": "npx",
"args": ["@samoradc/tetrad", "serve"],
"env": {
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"GOOGLE_API_KEY": "${GOOGLE_API_KEY}",
"DASHSCOPE_API_KEY": "${DASHSCOPE_API_KEY}"
}
}
}
}
または、~/.claude.json の mcpServers セクションで、ユーザー全体の設定を行います。
{
"mcpServers": {
"tetrad": {
"type": "stdio",
"command": "npx",
"args": ["@samoradc/tetrad", "serve"]
}
}
}
仕組み
Claude Code にコードの作成を依頼すると、Tetrad が自動的に検証します。
You: "Create a function in Rust that calculates the average of a vector"
Claude Code:
1. Writes the code
2. Calls tetrad_review_code automatically
3. Tetrad sends to Codex, Gemini and Qwen for evaluation
4. Returns consolidated consensus from all 3 evaluators
Tetrad Response:
┌─────────────────────────────────────────────┐
│ DECISION: PASS ✓ │
│ Score: 92/100 │
│ Consensus: Yes (3/3 approved) │
│ │
│ Votes: │
│ • Codex: Pass (95) │
│ • Gemini: Pass (90) │
│ • Qwen: Pass (92) │
│ │
│ Suggestions: │
│ - Consider handling empty vector case │
└─────────────────────────────────────────────┘
Claude Code: Saves the approved code
問題が見つかった場合:
Tetrad Response:
┌─────────────────────────────────────────────┐
│ DECISION: BLOCK ✗ │
│ Score: 26/100 │
│ Consensus: Yes (3/3 rejected) │
│ │
│ Votes: │
│ • Codex: Fail (30) - division by zero │
│ • Gemini: Fail (25) - no error handling │
│ • Qwen: Fail (25) - unsafe operation │
│ │
│ Issues: │
│ - Division by zero not handled │
│ - Missing input validation │
│ - No Result/Option return type │
└─────────────────────────────────────────────┘
Claude Code: Fixes the code and resubmits
CLI コマンド
tetrad - Quadruple Consensus CLI for Claude Code
COMMANDS:
init Initialize configuration in current directory
serve Start the MCP server (used by Claude Code)
status Show CLI status (codex, gemini, qwen)
config Configure options interactively
doctor Diagnose configuration issues
version Show version
evaluate Evaluate code manually (without MCP)
history Show evaluation history from ReasoningBank
export Export patterns from ReasoningBank
import Import patterns into ReasoningBank
OPTIONS:
-c, --config <FILE> Configuration file (default: tetrad.toml)
-v, --verbose Verbose mode
-q, --quiet Quiet mode
-h, --help Show help
MCP ツール
MCP サーバーとして実行すると、Tetrad は 6 つのツールを公開します。
| ツール | 説明 |
|---|---|
tetrad_review_plan | コーディング前に実装計画をレビューします |
tetrad_review_code | 保存前にコードをレビューします |
tetrad_review_tests | 最終確定前にテストをレビューします |
tetrad_confirm | 受け取ったフィードバックへの合意を確認します |
tetrad_final_check | コミット前に最終検証を行います |
tetrad_status | 評価器の健全性を確認します |
ワークフローの例
1. Claude Code generates plan → tetrad_review_plan → Feedback
2. Claude Code implements → tetrad_review_code → Feedback
3. Claude Code adjusts → tetrad_confirm → Confirmation
4. Claude Code finalizes → tetrad_final_check → Certificate
アーキテクチャ
Claude Code → MCP Protocol (stdio) → Tetrad Server (Rust)
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
Codex CLI Gemini CLI Qwen CLI
(syntax) (architecture) (logic)
│ │ │
└─────────────────────┼─────────────────────┘
▼
Consensus Engine
│
┌─────────────┴─────────────┐
▼ ▼
LRU Cache ReasoningBank
(results) (SQLite)
RETRIEVE→JUDGE→DISTILL→CONSOLIDATE
実行器の専門分野
| 実行器 | CLI | 専門分野 |
|---|---|---|
| Codex | codex exec --json | 構文とコード規約 |
| Gemini | gemini -o json | アーキテクチャと設計 |
| Qwen | qwen | ロジックのバグと正確性 |
合意形成ルール
| ルール | 要件 | ユースケース |
|---|---|---|
| Golden | 全会一致(3/3) | 重要なコード、セキュリティ |
| Strong | 高い信頼度で 3/3 または 2/3 | デフォルト |
| Weak | 単純多数決(2/3) | 迅速なプロトタイピング |
ReasoningBank
ReasoningBank は、コードパターンを保存して統合する継続的な学習システムです。
学習サイクル
RETRIEVE → JUDGE → DISTILL → CONSOLIDATE
│ │ │ │
│ │ │ └─ Merge similar patterns
│ │ └─ Extract new patterns
│ └─ Evaluate code with context
└─ Search for relevant patterns
パターンの種類
- AntiPattern:避けるべきパターン(バグ、脆弱性、コードの臭い)
- GoodPattern:従うべきパターン(ベストプラクティス、慣用的なパターン)
- Ambiguous:分類が不確かなパターン(追加データが必要)
ReasoningBank のコマンド
# View evaluation history
tetrad history --limit 50
# Export patterns to share
tetrad export -o team-patterns.json
# Import patterns from another ReasoningBank
tetrad import team-patterns.json
設定
tetrad init を実行すると、tetrad.toml ファイルが自動的に作成されます。
[general]
log_level = "info"
timeout_secs = 60
[executors.codex]
enabled = true
command = "codex"
args = ["exec", "--json"]
timeout_secs = 30
[executors.gemini]
enabled = true
command = "gemini"
args = ["-o", "json"]
timeout_secs = 30
[executors.qwen]
enabled = true
command = "qwen"
args = []
timeout_secs = 30
[consensus]
default_rule = "strong"
min_score = 70
max_loops = 3
[reasoning]
enabled = true
db_path = ".tetrad/tetrad.db"
max_patterns_per_query = 10
consolidation_interval = 100
[cache]
enabled = true
capacity = 1000
ttl_secs = 300
対話形式の設定
対話形式で設定するには、tetrad config を使用します。
🔧 Tetrad Interactive Configuration
What would you like to configure?
❯ General Settings
Executors (Codex, Gemini, Qwen)
Consensus
ReasoningBank
Save and Exit
Exit without Saving
LRU キャッシュ
不要な再評価を避けるために、LRU キャッシュが組み込まれています。
- 容量:設定可能(デフォルト:1000 エントリ)
- TTL:設定可能な有効期間(デフォルト:5 分)
- キー:コード + 言語 + 評価タイプのハッシュ
- 無効化:TTL による自動無効化または手動無効化
フックシステム
フックを使うと、特定の時点での動作をカスタマイズできます。
| フック | 実行タイミング | 用途 |
|---|---|---|
pre_evaluate | 評価の前 | リクエストの変更、評価のスキップ |
post_evaluate | 評価の後 | ロギング、メトリクス、通知 |
on_consensus | 合意形成時 | 承認時の自動アクション |
on_block | コードがブロックされた時 | アラート、自動ロールバック |
組み込みフック
- LoggingHook:すべての評価を記録します
- MetricsHook:使用統計を収集します
プロジェクト構成
tetrad/
├── Cargo.toml # Crate manifest
├── CLAUDE.md # Documentation for Claude Code
├── README.md # This file
├── Tetrad.md # Complete specification
├── src/
│ ├── main.rs # Entry point (CLI)
│ ├── lib.rs # Exportable library
│ ├── cli/
│ │ ├── mod.rs # CLI definition with clap
│ │ ├── commands.rs # Command implementations
│ │ └── interactive.rs # Interactive configuration (dialoguer)
│ ├── executors/
│ │ ├── mod.rs
│ │ ├── base.rs # CliExecutor trait
│ │ ├── codex.rs # Codex executor
│ │ ├── gemini.rs # Gemini executor
│ │ └── qwen.rs # Qwen executor
│ ├── types/
│ │ ├── mod.rs
│ │ ├── config.rs # TOML configuration
│ │ ├── errors.rs # TetradError/TetradResult
│ │ ├── requests.rs # EvaluationRequest
│ │ └── responses.rs # EvaluationResult, ModelVote
│ ├── consensus/
│ │ ├── mod.rs # Exports
│ │ ├── engine.rs # ConsensusEngine
│ │ ├── aggregator.rs # Vote aggregation
│ │ └── rules.rs # Voting rules
│ ├── reasoning/
│ │ ├── mod.rs # Exports
│ │ ├── bank.rs # ReasoningBank
│ │ ├── patterns.rs # Pattern types
│ │ ├── sqlite.rs # SQLite storage
│ │ └── export.rs # Import/Export
│ ├── mcp/
│ │ ├── mod.rs # Exports
│ │ ├── server.rs # MCP server
│ │ ├── protocol.rs # JSON-RPC types
│ │ ├── tools.rs # Tool handlers
│ │ └── transport.rs # Stdio transport
│ ├── cache/
│ │ ├── mod.rs # Exports
│ │ └── lru.rs # LRU cache
│ └── hooks/
│ ├── mod.rs # Hook trait and HookSystem
│ └── builtin.rs # Default hooks
└── tests/
├── cli_integration.rs
├── consensus_integration.rs
├── mcp_integration.rs
└── reasoning_integration.rs
開発
# Build
cargo build
cargo build --release
# Tests
cargo test # All tests
cargo test --lib # Unit tests only
cargo test --tests # Integration tests only
# Lint
cargo clippy --all-targets --all-features -- -D warnings
# Format
cargo fmt
cargo fmt --check
# Documentation
cargo doc --open
# Run CLI
cargo run -- status
cargo run -- doctor
cargo run -- version
cargo run -- config
トラブルシューティング
「CLI が見つかりません」
# Check if CLIs are in PATH
which codex
which gemini
which qwen
# Check configuration
tetrad doctor
「stdin is not a terminal」(Codex)
設定で exec --json が使用されていることを確認してください。
[executors.codex]
args = ["exec", "--json"]
「Response does not contain valid JSON」(Gemini)
設定で -o json が使用されていることを確認してください。
[executors.gemini]
args = ["-o", "json"]
Claude Code で MCP のステータスを確認する
Claude Code 内で、次を実行します。
/mcp
前提条件
Tetrad を使用するには、少なくとも 1 つの AI CLI がインストールされ、認証されている必要があります。
| CLI | インストール | API キーなしで認証可能? | 無料枠 |
|---|---|---|---|
| Codex CLI | npm i -g @openai/codex | ✅ ChatGPT Plus/Pro/Business | サブスクリプション経由 |
| Gemini CLI | npm i -g @google/gemini-cli | ✅ Google アカウント | 1,000 req/day |
| Qwen CLI | npm i -g qwen-code | ❌ DashScope キーが必要 | 2,000 req/day |
利用可能かどうかは、次のコマンドで確認できます。
tetrad status
tetrad doctor
貢献
貢献を歓迎します!お気軽にプルリクエストを送信してください。
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add some amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
ライセンス
MIT
作者
SamoraDC
リンク:
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。