🚀 Elenchus MCP Server
Elenchusは、対立的なコード検証を実装するモデルコンテキストプロトコル(MCP)サーバーです。単純なリンティングや静的解析とは異なり、Elenchusは検証者(Verifier)と批判者(Critic)エージェント間の討論を組織し、弁証法的な推論を通じて問題を体系的に明らかにします。
🚀 クイックスタート
MCPクライアントの設定に以下を追加します。
{
"mcpServers": {
"elenchus": {
"command": "npx",
"args": ["-y", "@jhlee0409/elenchus-mcp"]
}
}
}
その後、AIアシスタントと自然に使用します。
"Please verify src/auth for security issues"
クライアント固有のセットアップ手順については、インストールを参照してください。
✨ 主な機能
🔄 対立的な討論システム
- 検証者(Verifier):証拠を持って問題を見つけます。
- 批判者(Critic):調査結果に異議を唱え、主張を検証します。
- 役割の強制:コンプライアンススコア付きの厳格な交代制。
📊 意図ベースの収束
- キーワードマッチングではなく、意味的な理解。
- 5つのカテゴリ(セキュリティ、正確性、信頼性、保守性、パフォーマンス)を網羅。
- エッジケースの文書化要件。
- クリーンなコードに対する否定的な主張。
🧠 LLMベースの評価(オプション)
- 収束評価:LLMが検証品質を判断します(厳格なブールチェックとは対照的)。
- 深刻度分類:コンテキストを考慮した影響分析。
- エッジケースの検証:実際の分析を検証し、キーワードの存在だけでなく。
- 誤検出の検出:証拠に基づく問題の検証。
🔍 自動影響分析
- 多言語依存グラフ(tree-sitterを通じて15言語)。
- 波及効果の予測。
- カスケード深度の計算。
- リスクレベルの評価。
🌐 多言語対応
tree-sitter AST解析による依存関係分析:
| カテゴリ |
言語 |
| Web |
TypeScript, TSX, JavaScript, CSS |
| システム |
Rust, Go, C, C++ |
| エンタープライズ |
Java, C# |
| スクリプト |
Python, Ruby, PHP, Bash, PowerShell |
💾 セッション管理
- チェックポイント/ロールバックのサポート。
- グローバルセッションストレージ。
- 監査証跡の保存。
⚡ トークン最適化(オプション)
- 差分分析(変更されたコードのみを検証)。
- レスポンスキャッシュ。
- 選択的なチャンキング。
- 階層的な検証パイプライン。
📦 インストール
サポートされるクライアント
| クライアント |
状態 |
注意事項 |
| Claude Desktop |
✅ サポートされています |
macOS、Windows |
| Claude Code |
✅ サポートされています |
CLIツール |
| VS Code (Copilot) |
✅ サポートされています |
v1.102以上が必要 |
| Cursor |
✅ サポートされています |
ツール制限は40まで |
| その他のMCPクライアント |
✅ 互換性あり |
標準入出力ベースのクライアント |
Claude Desktop
Claude Desktopの設定ファイルに以下を追加します。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"elenchus": {
"command": "npx",
"args": ["-y", "@jhlee0409/elenchus-mcp"]
}
}
}
Claude Code
Claude Codeの設定(.mcp.jsonまたは~/.claude/settings.json)に以下を追加します。
{
"mcpServers": {
"elenchus": {
"command": "npx",
"args": ["-y", "@jhlee0409/elenchus-mcp"]
}
}
}
VS Code (GitHub Copilot)
.vscode/mcp.jsonに以下を追加します。
{
"mcp": {
"servers": {
"elenchus": {
"command": "npx",
"args": ["-y", "@jhlee0409/elenchus-mcp"]
}
}
}
}
Cursor
設定 > MCP > 新しいグローバルMCPサーバーを追加に移動し、以下を入力します。
{
"mcpServers": {
"elenchus": {
"command": "npx",
"args": ["-y", "@jhlee0409/elenchus-mcp"]
}
}
}
💻 使用例
検証したい内容を簡単に記述します。
"Verify src/auth for security vulnerabilities"
"Check the payment module for edge cases"
"Review src/api for correctness and reliability issues"
AIアシスタントは自動的にElenchusツールを使用します。
構造化されたワークフローについては、MCPプロンプトを参照してください。
📚 詳細ドキュメント
MCPツールリファレンス
elenchus_start_session
新しい検証セッションを初期化します。
入力:
target (文字列、必須): 検証するターゲットパス(ファイルまたはディレクトリ)
requirements (文字列、必須): 検証要件/焦点領域
workingDir (文字列、必須): 相対パスの作業ディレクトリ
maxRounds (数値、オプション): 停止前の最大ラウンド数(デフォルト: 10)
verificationMode (オブジェクト、オプション): モード設定
mode: "standard" | "fast-track" | "single-pass"
skipCriticForCleanCode: ブール値
differentialConfig (オブジェクト、オプション): 変更されたファイルのみを検証
cacheConfig (オブジェクト、オプション): 以前の検証をキャッシュ
chunkingConfig (オブジェクト、オプション): 大きなファイルをチャンクに分割
pipelineConfig (オブジェクト、オプション): 階層的な検証
llmEvalConfig (オブジェクト、オプション): LLMベースの評価設定
enabled: ブール値 - LLM評価を有効にする
convergenceEval: ブール値 - 収束品質にLLMを使用する
severityEval: ブール値 - 深刻度分類にLLMを使用する
edgeCaseEval: ブール値 - エッジケースの検証にLLMを使用する
falsePositiveEval: ブール値 - 誤検出の検出にLLMを使用する
戻り値: セッションIDと、収集されたファイル、依存関係グラフの統計、および役割設定を含む初期コンテキスト。
例:
elenchus_start_session({
target: "src/auth",
requirements: "Security audit for authentication",
workingDir: "/path/to/project",
verificationMode: { mode: "fast-track" }
})
elenchus_get_context
現在のセッションコンテキスト(ファイル、問題、および積極的なガイダンス)を取得します。
入力:
sessionId (文字列、必須): セッションID
戻り値: ファイル、問題の概要、焦点領域、未レビューのファイル、推奨事項。
elenchus_submit_round
検証者または批判者のラウンドを送信します。
入力:
sessionId (文字列、必須): セッションID
role ("verifier" | "critic", 必須): このラウンドの役割
output (文字列、必須): エージェントの完全な分析出力
issuesRaised (Issue[], オプション): 新しい問題(検証者の役割)
issuesResolved (文字列[], オプション): 解決された問題のID(批判者の役割)
問題のスキーマ:
{
id: string,
category: "SECURITY" | "CORRECTNESS" | "RELIABILITY" | "MAINTAINABILITY" | "PERFORMANCE",
severity: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW",
summary: string,
location: string,
description: string,
evidence: string
}
戻り値: ラウンド数、収束状態、仲介者の介入、役割のコンプライアンススコア。
elenchus_end_session
最終判定を伴ってセッションを終了します。
入力:
sessionId (文字列、必須): セッションID
verdict ("PASS" | "FAIL" | "CONDITIONAL", 必須): 最終判定
戻り値: 総ラウンド数、カテゴリと深刻度別の問題を含むセッションの概要。
elenchus_get_issues
オプションのフィルターで問題をクエリします。
入力:
sessionId (文字列、必須): セッションID
status ("all" | "unresolved" | "critical", オプション): ステータスでフィルターする
戻り値: フィルターに一致する問題の配列。
追加ツール(31個以上)
上記のコアツール以外に、Elenchusは高度なワークフロー用の31個以上の追加ツールを提供します。
| カテゴリ |
ツール |
| LLM評価 |
elenchus_evaluate_convergence, elenchus_evaluate_severity, elenchus_evaluate_edge_cases, elenchus_submit_llm_evaluation |
| 状態管理 |
elenchus_checkpoint, elenchus_rollback, elenchus_apply_fix |
| 分析 |
elenchus_ripple_effect, elenchus_mediator_summary |
| 役割の強制 |
elenchus_get_role_prompt, elenchus_role_summary, elenchus_update_role_config |
| 再検証 |
elenchus_start_reverification |
| 差分 |
elenchus_save_baseline, elenchus_get_diff_summary, elenchus_get_project_history |
| キャッシュ |
elenchus_get_cache_stats, elenchus_clear_cache |
| パイプライン |
elenchus_get_pipeline_status, elenchus_escalate_tier, elenchus_complete_tier |
| セーフガード |
elenchus_get_safeguards_status, elenchus_update_confidence, elenchus_record_sampling_result, elenchus_check_convergence_allowed |
| 最適化 |
elenchus_set_compression_mode, elenchus_get_optimization_stats, elenchus_configure_optimization, elenchus_estimate_savings |
| 動的な役割 |
elenchus_generate_roles, elenchus_set_dynamic_roles |
すべてのツールはMCPクライアントによって自動検出されます。詳細なスキーマについては、MCPインスペクター (npm run inspector) を使用してください。
MCPリソース
URIベースのリソースを介してセッションデータにアクセスします。
| URIパターン |
説明 |
elenchus://sessions/ |
すべてのアクティブなセッションをリスト表示 |
elenchus://sessions/{sessionId} |
特定のセッションの詳細を取得 |
使用方法:
Read elenchus://sessions/
Read elenchus://sessions/2026-01-17_src-auth_abc123
MCPプロンプト(スラッシュコマンド)
| プロンプト名 |
説明 |
verify |
完全な検証者↔批判者のループを実行 |
consolidate |
優先順位付けされた修正計画を作成 |
apply |
検証付きで修正を適用 |
complete |
問題がゼロになるまで完全なパイプラインを実行 |
cross-verify |
対立的な相互検証 |
呼び出し形式はクライアントによって異なります。MCPクライアントのドキュメントを確認してください。
検証モード
異なるユースケースに対応する3つのモードがあります。
| モード |
最小ラウンド数 |
批判者が必要か |
最適なシナリオ |
standard |
3 |
はい |
徹底的な検証 |
fast-track |
1 |
オプション |
迅速な検証 |
single-pass |
1 |
いいえ |
最速、検証者のみ |
例:
elenchus_start_session({
target: "src/",
requirements: "Security audit",
workingDir: "/project",
verificationMode: {
mode: "fast-track",
skipCriticForCleanCode: true
}
})
問題のライフサイクル
問題は以下の状態を遷移します。
RAISED → CHALLENGED → RESOLVED
↓
DISMISSED (false positive)
↓
MERGED (combined)
↓
SPLIT (divided)
問題の状態
| ステータス |
説明 |
RAISED |
検証者によって最初に発見された |
CHALLENGED |
検証者と批判者の間で議論中 |
RESOLVED |
修正され、検証された |
DISMISSED |
誤検出として無効化された |
MERGED |
別の問題と結合された |
SPLIT |
複数の問題に分割された |
批判者の判定
| 判定 |
意味 |
VALID |
問題は正当なもの |
INVALID |
誤検出 |
PARTIAL |
部分的に有効で、改善が必要 |
収束検出
すべての基準が満たされたときにセッションは収束します。
- 未解決の重大または高レベルの深刻度の問題がない
- 2ラウンド以上安定している(新しい問題がない)
- 最小ラウンド数が完了している(モードによって異なる)
- すべての5つのカテゴリが検査された
- 最近の問題の状態遷移がない
- エッジケースが文書化されている
- クリーンな領域が明示的に記載されている(否定的な主張)
- 高リスクの影響を受けるファイルがレビューされている
カテゴリの網羅
すべての5つのカテゴリが検査されなければなりません。
- セキュリティ - 認証、承認、インジェクション
- 正確性 - 論理エラー、型ミスマッチ
- 信頼性 - エラーハンドリング、リソース管理
- 保守性 - コード構造、ドキュメント
- パフォーマンス - 効率、リソース使用量
🔧 技術詳細
トークン最適化
差分分析
変更されたファイルのみを検証します。
{
differentialConfig: {
enabled: true,
baseRef: "main"
}
}
レスポンスキャッシュ
以前の検証結果をキャッシュします。
{
cacheConfig: {
enabled: true,
ttlSeconds: 3600
}
}
選択的なチャンキング
大きなファイルを焦点を絞ったチャンクに分割します。
{
chunkingConfig: {
enabled: true,
maxChunkSize: 500
}
}
階層的なパイプライン
最初に迅速な分析を行い、必要に応じてエスカレートします。
{
pipelineConfig: {
enabled: true,
startTier: "screen"
}
}
設定
環境変数
| 変数 |
説明 |
デフォルト |
ELENCHUS_DATA_DIR |
カスタムストレージディレクトリ |
~/.elenchus |
XDG_DATA_HOME |
XDGベースディレクトリ(Linux/macOS) |
- |
LOCALAPPDATA |
WindowsのAppDataの場所 |
- |
ストレージの場所
セッションとデータはクライアントに依存しない場所に保存されます。
~/.elenchus/
├── sessions/ # 検証セッション
├── baselines/ # 差分分析のベースライン
├── cache/ # レスポンスキャッシュ
└── safeguards/ # 品質セーフガードデータ
優先順位:
$ELENCHUS_DATA_DIR - 明示的なオーバーライド
$XDG_DATA_HOME/elenchus - XDG仕様
%LOCALAPPDATA%\elenchus - Windows
~/.elenchus - デフォルトのフォールバック
カスタムストレージ
export ELENCHUS_DATA_DIR=/path/to/custom/storage
export XDG_DATA_HOME=~/.local/share
セッションのクリーンアップ
セッションは監査記録として保存されます。手動でクリーンアップするには、以下を実行します。
rm -rf ~/.elenchus/sessions/*
rm -rf ~/.elenchus/sessions/2026-01-17_*
アーキテクチャ
システム図
┌─────────────────────────────────────────────────────────────────────┐
│ ELENCHUS MCP SERVER │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ MCP PROTOCOL LAYER │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │
│ │ │ Tools │ │Resources │ │ Prompts │ │ Notifications│ │ │
│ │ │ (36) │ │ (URI) │ │ (5) │ │ (optional) │ │ │
│ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └──────────────┘ │ │
│ └───────┼─────────────┼─────────────┼──────────────────────────┘ │
│ │ │ │ │
│ ┌───────┴─────────────┴─────────────┴──────────────────────────┐ │
│ │ CORE MODULES │ │
│ │ Session Manager │ Context Manager │ Mediator System │ │
│ │ Role Enforcement │ Issue Lifecycle │ Pipeline (Tiered) │ │
│ └───────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌──────────────────┐ │
│ │ STORAGE │ │
│ │ ~/.elenchus/ │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
モジュールの責任
| モジュール |
目的 |
| セッションマネージャー |
検証セッションの作成、永続化、管理 |
| コンテキストマネージャー |
ターゲットファイルと依存関係の収集と整理 |
| 仲介者システム |
多言語依存グラフ(tree-sitter)、問題検出、介入 |
| 役割の強制 |
検証者↔批判者の交代を保証し、コンプライアンスを検証 |
| 問題のライフサイクル |
問題の状態をRAISEDからRESOLVEDまで追跡 |
| パイプライン |
階層的な検証(screen → focused → exhaustive) |
セキュリティ
セキュリティモデル
Elenchusは以下のセキュリティ上の考慮事項を持って動作します。
- コード実行なし:Elenchusは検証するコードを実行しません。静的分析のみを行います。
- ローカルストレージ:すべてのセッションデータは
~/.elenchus/にローカルに保存されます。外部サーバーにデータは送信されません。
- パス検証:すべてのファイルパスはパストラバーサル攻撃を防ぐために検証されます。
- 出力に機密情報を含まない:ツールの出力は機密データの露出を避けるためにサニタイズされます。
パーミッション
Elenchusには以下が必要です。
- 検証対象のファイルへの読み取りアクセス
- セッションストレージ用の
~/.elenchus/への書き込みアクセス
セキュリティ問題の報告
セキュリティの脆弱性は、GitHub Security Advisoriesを通じて報告してください。
トラブルシューティング
一般的な問題
サーバーが見つからない / ツールが利用できない
症状: MCPクライアントがElenchusのコマンドやツールを認識しない。
解決策:
- クライアントのMCP設定でインストールを確認する
- サーバーを追加した後、MCPクライアントを再起動する
- 設定の構文を確認する(JSONは有効でなければならない)
- Node.js ≥18がインストールされていることを確認する:
node --version
セッションが見つからない
症状: エラー "Session not found: xxx"
解決策:
- アクティブなセッションをリストする:
Read elenchus://sessions/
- セッションがクリーンアップされている可能性がある - 新しいセッションを開始する
- セッションIDが正しいことを確認する(タイプミスをチェックする)
アクセス許可エラー
症状: ファイルを読み取ったり、セッションを書き込んだりできない。
解決策:
- ターゲットディレクトリのファイルパーミッションを確認する
~/.elenchus/への書き込みアクセスを確認する:ls -la ~/.elenchus/
- カスタムストレージ場所を試す:
export ELENCHUS_DATA_DIR=/tmp/elenchus
役割のコンプライアンス拒否
症状: コンプライアンススコアによりラウンドが拒否される。
解決策:
- 現在の役割要件を確認する:
elenchus_get_role_prompt({ role: "verifier" })
- 最小コンプライアンススコアを下げる:
elenchus_update_role_config({
sessionId: "...",
minComplianceScore: 50,
strictMode: false
})
- 役割の交代(検証者 → 批判者 → 検証者)を確保する
デバッグ
MCPインスペクターを使用してデバッグします。
npm run inspector
npx @modelcontextprotocol/inspector node dist/index.js
ヘルプの取得
開発
ビルドコマンド
npm run build
npm run dev
npm run start
npm run inspector
プロジェクト構造
elenchus-mcp/
├── src/
│ ├── index.ts # エントリポイント、MCPサーバーの設定
│ ├── tools/ # ツールの定義とハンドラー
│ ├── resources/ # リソースの定義
│ ├── prompts/ # プロンプトテンプレート
│ ├── types/ # TypeScriptインターフェース
│ ├── state/ # セッションとコンテキストの管理
│ ├── mediator/ # 多言語依存分析(tree-sitter)
│ ├── roles/ # 役割の強制
│ ├── config/ # 設定定数
│ ├── cache/ # レスポンスキャッシュ
│ ├── chunking/ # コードのチャンキング
│ ├── diff/ # 差分分析
│ ├── pipeline/ # 階層的な検証
│ └── safeguards/ # 品質セーフガード
├── dist/ # コンパイルされた出力
├── package.json
├── tsconfig.json
└── README.md
コントリビューション
コントリビューションを歓迎します!以下の手順を実行してください。
- リポジトリをフォークする
- 機能ブランチを作成する
- プルリクエストを送信する
📄 ライセンス
MIT