代码验证服务器

Elenchus是一个基于模型上下文协议(MCP)的服务器,通过验证者与批评者的辩论循环实现对抗性代码验证,适用于多语言代码的安全性和正确性检查。

  • by jhlee0409
  • TypeScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 jhlee0409/elenchus-mcp

使用说明

Elenchus MCP服务器

英语 | 韩语

使用验证器的对抗码验证系统↔批评辩论循环

Elenchus (ἔλεγχος):苏格拉底通过系统提问进行反驳的方法——揭露矛盾以达到真理。

目录


概述

Elenchus是一个 模型上下文协议(MCP)服务器 实现对抗性代码验证。与简单的linting或静态分析不同,Elenchus编排了一个 验证者和批判者之间的争论 通过辩证推理系统地揭示问题。

为什么要进行对抗性验证?

传统方法 Elenchus方法
单次通过分析 多轮辩论
基于检查表 基于意图的语义分析
固定规则 自适应收敛
对干净代码保持沉默 显式否定断言

验证者↔批评循环

┌──────────────────────────────────────────────────────────────┐
│                    VERIFICATION LOOP                          │
├──────────────────────────────────────────────────────────────┤
│  Round 1: Verifier → Examines code, RAISES issues            │
│  Round 2: Critic   → Challenges issues (VALID/INVALID/PARTIAL)│
│  Round 3: Verifier → Defends, resolves, or finds new issues  │
│  Round 4: Critic   → Re-evaluates, checks coverage           │
│  ...continues until convergence...                            │
│  Final: Verdict (PASS / FAIL / CONDITIONAL)                  │
└──────────────────────────────────────────────────────────────┘

主要特点

🔄 对抗性辩论制度

  • 验证器:查找证据问题
  • 批评家:质疑调查结果,验证索赔
  • 角色执行:与合规评分严格交替

📊 基于意图的融合

  • 语义理解而不是关键字匹配
  • 5类覆盖范围(安全性、正确性、可靠性、可维护性、性能)
  • 边缘案例文件要求
  • 对干净代码的否定断言

🧠 基于LLM的评估(可选)

  • 收敛性评估:LLM判断验证质量(与严格的布尔检查相比)
  • 严重性分类:情境感知影响分析
  • 边缘案例验证:验证实际分析,而不仅仅是关键字的存在
  • 假阳性检测:基于证据的问题验证

🔍 自动影响分析

  • 多语言依赖关系图 (通过树保姆提供15种语言)
  • 涟漪效应预测
  • 梯级深度计算
  • 风险等级评估

🌐 多语言支持

依赖性分析由树型AST解析提供支持:

类别 语言
Web TypeScript、TSX、JavaScript、CSS
系统 Rust、Go、C、C++
企业版 Java、C#
脚本 Python、Ruby、PHP、Bash、PowerShell

💾 会话管理

  • 检查点/回滚支持
  • 全局会话存储
  • 审计跟踪保存

⚡ 令牌优化(可选)

  • 差分分析(仅验证更改的代码)
  • 响应缓存
  • 选择性组块
  • 分层验证管道

快速开始

添加到MCP客户端配置中:

{
  "mcpServers": {
    "elenchus": {
      "command": "npx",
      "args": ["-y", "@jhlee0409/elenchus-mcp"]
    }
  }
}

然后自然地使用你的AI助手:

"Please verify src/auth for security issues"

看 安装 有关特定于客户端的设置说明。


安装

支持的客户

客户 状态 备注
克劳德桌面 ✅ 支持 macOS、Windows
克劳德代码 ✅ 支持 CLI工具
VS代码(副本) ✅ 支持 需要v1.102+
光标 ✅ 支持 40刀具限制
其他MCP客户端 ✅ 兼容 任何基于stdio的客户端

克劳德桌面版

添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "elenchus": {
      "command": "npx",
      "args": ["-y", "@jhlee0409/elenchus-mcp"]
    }
  }
}

克劳德代码

添加到您的克劳德代码设置(.mcp.json 或 ~/.claude/settings.json):

{
  "mcpServers": {
    "elenchus": {
      "command": "npx",
      "args": ["-y", "@jhlee0409/elenchus-mcp"]
    }
  }
}

VS代码(GitHub副本)

增添 .vscode/mcp.json:

{
  "mcp": {
    "servers": {
      "elenchus": {
        "command": "npx",
        "args": ["-y", "@jhlee0409/elenchus-mcp"]
      }
    }
  }
}

光标

首选 设置>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 (string,必填):相对路径的工作目录
  • maxRounds (数字,可选):停止前的最大轮次数(默认值:10)
  • verificationMode (对象,可选):模式配置
    • mode: "standard" | "fast-track" | "single-pass"
    • skipCriticForCleanCode:boolean
  • differentialConfig (对象,可选):仅验证更改的文件
  • cacheConfig (object,可选):缓存以前的验证
  • chunkingConfig (object,可选):将大文件分割成块
  • pipelineConfig (对象,可选):分层验证
  • llmEvalConfig (对象,可选):基于LLM的评估设置
    • enabled:boolean-启用LLM计算
    • convergenceEval:boolean-使用LLM获得收敛质量
    • severityEval:boolean-使用LLM进行严重性分类
    • edgeCaseEval:boolean-使用LLM进行边缘案例验证
    • falsePositiveEval:boolean-使用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 (string[],可选):已解决的问题ID(评论家角色)

问题架构:

{
  id: string,
  category: "SECURITY" | "CORRECTNESS" | "RELIABILITY" | "MAINTAINABILITY" | "PERFORMANCE",
  severity: "CRITICAL" | "HIGH" | "MEDIUM" | "LOW",
  summary: string,
  location: string,        // "file:line" format
  description: string,
  evidence: string         // Code snippet or proof
}

退货: 轮数、收敛状态、调解员干预、角色合规评分。

elenchus_end_session

以最终裁决结束会议。

输入:

  • sessionId (字符串,必填):会话ID
  • verdict ("PASS" | "FAIL" | "CONDITIONAL",必填):最终裁决

退货: 会议总结,包括总轮次、按类别和严重程度列出的问题。

elenchus_get_issues

查询可选筛选的问题。

输入:

  • sessionId (字符串,必填):会话ID
  • status ("all" | "unresolved" | "critical",可选):按状态筛选

退货: 与筛选器匹配的问题数组。

其他工具(31个)

除了上述核心工具外,Elenchus还为高级工作流提供了31个附加工具:

类别 工具
法学硕士评估 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提示(Slash命令)

提示名称 描述
verify 运行完整验证器↔批评循环
consolidate 创建优先级修复计划
apply 应用带有验证的修复程序
complete 完整的管道,直到零问题
cross-verify 对抗性交叉验证

调用格式因客户端而异。检查MCP客户的文档。


验证模式

针对不同用例的三种模式:

模式 最小轮次 需要评论 最适合
standard 3 是 彻底验证
fast-track 1 可选 快速验证
single-pass 1 否 最快,仅限验证器

例子:

elenchus_start_session({
  target: "src/",
  requirements: "Security audit",
  workingDir: "/project",
  verificationMode: {
    mode: "fast-track",
    skipCriticForCleanCode: true
  }
})

Issue Lifecycle

通过国家过渡的问题:

RAISED → CHALLENGED → RESOLVED
           ↓
        DISMISSED (false positive)
           ↓
        MERGED (combined)
           ↓
        SPLIT (divided)

问题国家

状态 描述
RAISED 最初由Verifier发现
CHALLENGED 验证者和评论家之间的争论
RESOLVED 已修复并验证
DISMISSED 无效为假阳性
MERGED 结合另一个问题
SPLIT 分为多个问题

批评判决

判决 含义
VALID 问题是合法的
INVALID 假阳性
PARTIAL 部分有效,需要改进
Convergence Detection

当满足所有条件时,会话会收敛:

  • 无关键或高度严重的未解决问题
  • 稳定2轮以上(无新问题)
  • 完成的最少轮次(因模式而异)
  • 所有5个类别均已检查
  • 最近没有问题状态转换
  • 记录边缘案例
  • 明确规定的清洁区域(否定断言)
  • 审查了受影响的高风险文件

类别覆盖范围

必须检查所有5个类别:

  1. 安全 -身份验证、授权、注入
  2. 正确性 -逻辑错误、类型不匹配
  3. 可靠性 -错误处理、资源管理
  4. 可维护性 -代码结构、文档
  5. 表现 -效率、资源使用

令牌优化

Differential Analysis

仅验证已更改的文件:

{
  differentialConfig: {
    enabled: true,
    baseRef: "main"  // Compare against main branch
  }
}
Response Caching

缓存以前的验证结果:

{
  cacheConfig: {
    enabled: true,
    ttlSeconds: 3600  // Cache for 1 hour
  }
}
Selective Chunking

将大文件拆分为集中的块:

{
  chunkingConfig: {
    enabled: true,
    maxChunkSize: 500  // Lines per chunk
  }
}
Tiered Pipeline

从快速分析开始,必要时升级:

{
  pipelineConfig: {
    enabled: true,
    startTier: "screen"  // screen → focused → exhaustive
  }
}

配置

环境变量

变量 描述 默认值
ELENCHUS_DATA_DIR 自定义存储目录 ~/.elenchus
XDG_DATA_HOME XDG基本目录(Linux/macOS) -
LOCALAPPDATA Windows应用程序数据位置 -

存储位置

会话和数据存储在与客户端无关的位置:

~/.elenchus/
├── sessions/          # Verification sessions
├── baselines/         # Differential analysis baselines
├── cache/             # Response cache
└── safeguards/        # Quality safeguards data

优先级顺序:

  1. $ELENCHUS_DATA_DIR -显式覆盖
  2. $XDG_DATA_HOME/elenchus -XDG规范
  3. %LOCALAPPDATA%\elenchus -窗户
  4. ~/.elenchus -默认回退

自定义存储

# Set custom location
export ELENCHUS_DATA_DIR=/path/to/custom/storage

# Or use XDG spec
export XDG_DATA_HOME=~/.local/share

会话清理

会话作为审计记录保存。手动清理:

rm -rf ~/.elenchus/sessions/*
# Or for specific sessions
rm -rf ~/.elenchus/sessions/2026-01-17_*

建筑

System Diagram
┌─────────────────────────────────────────────────────────────────────┐
│                       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/     │                             │
│                    └──────────────────┘                             │
└─────────────────────────────────────────────────────────────────────┘

模块职责

模块 目的
会话管理器 创建、持久化和管理验证会话
上下文管理器 收集和组织目标文件和依赖关系
调解员制度 多语言依赖图(树状图)、问题检测、干预
角色执行 确保验证者↔批评变更,验证合规性
问题生命周期 跟踪从已提出到已解决的问题状态
管道 分层验证(屏幕→ 专注的→ 详尽无遗)

安全

安全模型

Elenchus的操作考虑了以下安全因素:

  • 无代码执行:Elenchus不会执行它验证的代码。它仅执行静态分析。
  • 本地存储:所有会话数据都存储在本地 ~/.elenchus/。没有数据发送到外部服务器。
  • 路径验证:所有文件路径都经过验证,以防止路径遍历攻击。
  • 输出中没有秘密:工具输出经过消毒,以避免暴露敏感数据。

权限

Elenchus要求:

  • 读取权限 以目标文件进行验证
  • 写入权限 到 ~/.elenchus/ 用于会话存储

报告安全问题

请通过以下方式报告安全漏洞 GitHub安全公告.


故障排除

常见问题

Server not found / Tools not available

症状: 您的MCP客户端无法识别Elenchus命令或工具。

解决:

  1. 在客户端的MCP设置中验证安装
  2. 添加服务器后重新启动MCP客户端
  3. 检查配置语法(JSON必须有效)
  4. 确保安装了Node.js≥18:
    node --version
    
Session not found

症状: 错误“找不到会话:xxx”

解决:

  1. 列出活动会话:
    Read elenchus://sessions/
    
  2. 会话可能已清理完毕-启动新会话
  3. 验证会话ID是否正确(检查拼写错误)
Permission denied errors

症状: 无法读取文件或写入会话。

解决:

  1. 检查目标目录上的文件权限
  2. 验证对的写入权限 ~/.elenchus/:
    ls -la ~/.elenchus/
    
  3. 尝试自定义存储位置:
    export ELENCHUS_DATA_DIR=/tmp/elenchus
    
Role compliance rejection

症状: 由于合规得分,轮次被拒绝。

解决:

  1. 检查当前角色要求:
    elenchus_get_role_prompt({ role: "verifier" })
    
  2. 较低的最低合规分数:
    elenchus_update_role_config({
      sessionId: "...",
      minComplianceScore: 50,
      strictMode: false
    })
    
  3. 确保角色交替(验证人→ 批评家→ 验证人)

调试

使用MCP检查器进行调试:

npm run inspector
# or
npx @modelcontextprotocol/inspector node dist/index.js

获取帮助


发展

构建命令

npm run build      # Compile TypeScript to dist/
npm run dev        # Watch mode with auto-rebuild
npm run start      # Run the compiled server
npm run inspector  # Launch MCP Inspector for debugging

项目结构

elenchus-mcp/
├── src/
│   ├── index.ts           # Entry point, MCP server setup
│   ├── tools/             # Tool definitions and handlers
│   ├── resources/         # Resource definitions
│   ├── prompts/           # Prompt templates
│   ├── types/             # TypeScript interfaces
│   ├── state/             # Session and context management
│   ├── mediator/          # Multi-language dependency analysis (tree-sitter)
│   ├── roles/             # Role enforcement
│   ├── config/            # Configuration constants
│   ├── cache/             # Response caching
│   ├── chunking/          # Code chunking
│   ├── diff/              # Differential analysis
│   ├── pipeline/          # Tiered verification
│   └── safeguards/        # Quality safeguards
├── dist/                  # Compiled output
├── package.json
├── tsconfig.json
└── README.md

贡献

欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 提交拉取请求

许可证

麻省理工学院