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(字符串,必填):会话IDrole("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(字符串,必填):会话IDverdict("PASS"|"FAIL"|"CONDITIONAL",必填):最终裁决
退货: 会议总结,包括总轮次、按类别和严重程度列出的问题。
elenchus_get_issues
查询可选筛选的问题。
输入:
sessionId(字符串,必填):会话IDstatus("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个类别:
- 安全 -身份验证、授权、注入
- 正确性 -逻辑错误、类型不匹配
- 可靠性 -错误处理、资源管理
- 可维护性 -代码结构、文档
- 表现 -效率、资源使用
______________________________________________________________________
令牌优化
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优先级顺序:
$ELENCHUS_DATA_DIR-显式覆盖$XDG_DATA_HOME/elenchus-XDG规范%LOCALAPPDATA%\elenchus-窗户~/.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/用于会话存储
报告安全问题
请通过以下方式报告安全漏洞 .
______________________________________________________________________
故障排除
常见问题
Server not found / Tools not available
症状: 您的MCP客户端无法识别Elenchus命令或工具。
解决:
- 在客户端的MCP设置中验证安装
- 添加服务器后重新启动MCP客户端
- 检查配置语法(JSON必须有效)
- 确保安装了Node.js≥18:
node --versionSession not found
症状: 错误“找不到会话:xxx”
解决:
- 列出活动会话:
Read elenchus://sessions/- 会话可能已清理完毕-启动新会话
- 验证会话ID是否正确(检查拼写错误)
Permission denied errors
症状: 无法读取文件或写入会话。
解决:
- 检查目标目录上的文件权限
- 验证对的写入权限
~/.elenchus/:
ls -la ~/.elenchus/- 尝试自定义存储位置:
export ELENCHUS_DATA_DIR=/tmp/elenchusRole compliance rejection
症状: 由于合规得分,轮次被拒绝。
解决:
- 检查当前角色要求:
elenchus_get_role_prompt({ role: "verifier" })- 较低的最低合规分数:
elenchus_update_role_config({
sessionId: "...",
minComplianceScore: 50,
strictMode: false
})- 确保角色交替(验证人→ 批评家→ 验证人)
调试
使用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贡献
欢迎投稿!拜托:
- 分叉存储库
- 创建要素分支
- 提交拉取请求
______________________________________________________________________
许可证
麻省理工学院

