🚀 Elenchus MCP 服务器
Elenchus MCP 服务器是一个实现对抗性代码验证的模型上下文协议(MCP)服务器。它通过验证器与批评者的辩论循环,系统地揭示代码中的问题,为代码质量保驾护航。
🚀 快速开始
将以下内容添加到你的 MCP 客户端配置中:
{
"mcpServers": {
"elenchus": {
"command": "npx",
"args": ["-y", "@jhlee0409/elenchus-mcp"]
}
}
}
然后就可以自然地与你的 AI 助手配合使用,例如:
"请验证 src/auth 是否存在安全问题"
有关特定客户端的设置说明,请参阅 安装指南。
✨ 主要特性
🔄 对抗性辩论系统
- 验证器:找出有证据支持的问题。
- 批评者:挑战发现的问题,验证主张。
- 角色强制:严格交替角色,并进行合规性评分。
📊 基于意图的收敛
- 语义理解而非关键字匹配。
- 覆盖 5 个类别(安全性、正确性、可靠性、可维护性、性能)。
- 边缘情况文档要求。
- 对干净代码进行否定断言。
🧠 基于大语言模型的评估(可选)
- 收敛评估:大语言模型判断验证质量(而非严格的布尔检查)。
- 严重性分类:上下文感知的影响分析。
- 边缘情况验证:验证实际分析,而非仅检查关键字存在性。
- 误报检测:基于证据的问题验证。
🔍 自动影响分析
- 多语言依赖图(通过 tree-sitter 支持 15 种语言)。
- 涟漪效应预测。
- 级联深度计算。
- 风险级别评估。
🌐 多语言支持
依赖分析由 tree-sitter AST 解析提供支持:
| 类别 |
语言 |
| 网页 |
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"]
}
}
}
💻 使用示例
只需描述你想要验证的内容:
"验证 src/auth 是否存在安全漏洞"
"检查支付模块是否存在边缘情况"
"审查 src/api 是否存在正确性和可靠性问题"
你的 AI 助手将自动使用 Elenchus 工具。
有关结构化工作流,请参阅 MCP 提示。
📚 详细文档
MCP 工具参考
会话生命周期
elenchus_start_session:初始化一个新的验证会话。
elenchus_start_session({
target: "src/auth",
requirements: "Security audit for authentication",
workingDir: "/path/to/project",
verificationMode: { mode: "fast-track" }
})
elenchus_get_context:获取当前会话上下文,包括文件、问题和主动指导。
elenchus_submit_round:提交验证器或批评者回合。
elenchus_end_session:以最终裁决结束会话。
elenchus_get_issues:查询问题,并可选择进行过滤。
其他工具(31 个)
Elenchus 还提供 31 个额外的工具,用于高级工作流。
MCP 资源
通过基于 URI 的资源访问会话数据:
| URI 模式 |
描述 |
elenchus://sessions/ |
列出所有活动会话 |
elenchus://sessions/{sessionId} |
获取特定会话的详细信息 |
MCP 提示(斜杠命令)
| 提示名称 |
描述 |
verify |
运行完整的验证器↔批评者循环 |
consolidate |
创建优先修复计划 |
apply |
应用修复并进行验证 |
complete |
执行完整管道,直到没有问题为止 |
cross-verify |
进行对抗性交叉验证 |
验证模式
| 模式 |
最小回合数 |
批评者是否必需 |
适用场景 |
standard |
3 |
是 |
彻底的验证 |
fast-track |
1 |
可选 |
快速验证 |
single-pass |
1 |
否 |
最快,仅使用验证器 |
问题生命周期
问题会经历以下状态转换:
RAISED → CHALLENGED → RESOLVED
↓
DISMISSED (false positive)
↓
MERGED (combined)
↓
SPLIT (divided)
收敛检测
会话在满足所有条件时收敛:
- 没有严重或高严重性的未解决问题。
- 连续 2 轮以上稳定(无新问题)。
- 完成最小回合数(因模式而异)。
- 检查了所有 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/ # Verification sessions
├── baselines/ # Differential analysis baselines
├── cache/ # Response cache
└── safeguards/ # Quality safeguards data
自定义存储
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)、问题检测、干预 |
| 角色强制 |
确保验证器↔批评者交替,验证合规性 |
| 问题生命周期 |
跟踪问题从提出到解决的状态 |
| 管道 |
分层验证(筛选 → 聚焦 → 详尽) |
🔧 技术细节
安全模型
- 无代码执行:Elenchus 不会执行它验证的代码,仅执行静态分析。
- 本地存储:所有会话数据存储在本地
~/.elenchus/ 中,不会将数据发送到外部服务器。
- 路径验证:验证所有文件路径,防止路径遍历攻击。
- 输出无秘密信息:清理工具输出,避免暴露敏感数据。
权限
Elenchus 需要:
- 读取权限:对目标文件进行验证。
- 写入权限:对
~/.elenchus/ 进行会话存储。
报告安全问题
请通过 GitHub 安全建议 报告安全漏洞。
🛠️ 故障排除
常见问题
服务器未找到/工具不可用
症状:你的 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 # 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
贡献
欢迎贡献代码!请按以下步骤操作:
- 分叉仓库。
- 创建功能分支。
- 提交拉取请求。
📄 许可证
本项目采用 MIT 许可证。