evmBench mcp服务器

MCP服务器和用于智能合约审计的web界面。上传合同源代码,选择模型,并接收结构化漏洞报告。基于 evmBench;为代理和工具添加了MCP(模型上下文协议)端点。
背景
该项目由以下人员维护 人工智能银行 并且是 基于 evmBench。我们用以下内容扩展了原始代码库:
- 原始审计服务 -Web UI和API,用于提交合同和运行可检测的Codex代理,在精神上保持不变。
- MCP集成 --新的MCP(模型上下文协议)端点,以便其他代理或启用MCP的工具可以触发审计并以编程方式使用结果。
如果您需要从MCP客户端或其他代理运行智能合约审计,此项目提供了必要的API和工具定义。
特性
- Web用户界面 --上传合同源的压缩文件,选择一个模型,并查看带有文件导航和注释的漏洞报告。
- REST API --作业提交、状态、历史和每日限制(
/v1/jobs/start,/v1/jobs/{id},/v1/jobs/history,/v1/jobs/daily-limit). - MCP API --可通过MCP调用的工具,用于启动作业和查询结果(请参阅 后端/README.md 用于MCP设置)。
- 灵活的后端 --通过Docker(默认)或可选的Kubernetes执行Worker。
- OpenAI/Azure -支持直接API密钥、代理令牌模式或Azure OpenAI(单一部署)。
运作原理
建筑
Frontend (Next.js)
│
├─ POST /v1/jobs/start ───► Backend API (FastAPI, port 1337)
├─ GET /v1/jobs/{id} ├─► PostgreSQL (job state)
├─ GET /v1/jobs/history ├─► Secrets Service (port 8081)
├─ GET /v1/jobs/daily-limit └─► RabbitMQ (job queue)
└─ MCP tools
│
Instancer (consumer)
│
┌─────────┴──────────┐
▼ ▼
Docker backend K8s backend (optional)
│ │
└────────┬───────────┘
▼
Worker container
├─► Secrets Service (fetch bundle)
├─► (optional) OAI Proxy / Azure OpenAI
└─► Results Service (port 8083)流动
- 用户或MCP客户端向后端提交一个压缩的合同文件(以及可选的OpenAI API密钥)。
- 后端在Postgres中创建一个作业,在Secrets Service中存储一个秘密包,并发布到RabbitMQ。
- 实例化器使用消息并启动一个worker(Docker或K8s)。
- Worker获取包,提取zip到
audit/,并运行Codex检测专用代理(参见backend/worker_runner/). - 代理人写道
submission/audit.md。工作人员验证JSON报告并将其上传到结果服务。 - 前端或MCP客户端轮询作业状态并显示报告。
安全
工人运行LLM驱动的代理 不可信的 上传的代码。将工作运行时(文件系统、日志、输出)视为不受信任。
看 安全.md 用于信任模型和操作指导。
凭证处理:
- 直接BYOK(默认) --Worker收到一个明文OpenAI密钥。
- 代理令牌模式 --Worker收到一个不透明的令牌;请求通过
oai_proxy(密钥永远不会离开代理)。 - Azure OpenAI --配置
AZURE_OPENAI_*worker使用env中的单个部署名称。
入门
先决条件
- 码头工人
- 包子 (前端)
1.建立基地和工人形象
cd backend
docker build -t evmbench/base:latest -f docker/base/Dockerfile .
docker build -t evmbench/worker:latest -f docker/worker/Dockerfile .2.配置并启动堆栈
cp .env.example .env
# Edit .env: set DATABASE_DSN, RABBITMQ_DSN, BACKEND_JWT_SECRET, etc.
# For proxy-token mode: BACKEND_OAI_KEY_MODE=proxy, OAI_PROXY_AES_KEY=...
docker compose up -d --build3.启动前端
cd frontend
bun install
bun dev- 前端: http://127.0.0.1:3000
- 后端配置: http://127.0.0.1:1337/v1/integration/frontend
看 后端/README.md 有关MCP、环境变量和部署详细信息。
关键服务
| 服务 | 端口 | 描述 |
|---|---|---|
| 后端 | 1337 | 主API+MCP;作业、身份验证、集成 |
| secretsvc | 8081 | 每个作业的秘密包 |
| resultsvc | 8083 | 工人结果摄入 |
| oai_proxy | 8084 | 可选OpenAI代理 |
| 实例化器 | -- | RabbitMQ消费者;启动工人 |
| Postgres | 5432 | 作业状态 |
| RabbitMQ | 5672 | 作业队列 |
项目结构
.
├── README.md
├── SECURITY.md
├── LICENSE
├── frontend/ Next.js UI (upload, model selection, report view)
├── backend/
│ ├── api/ FastAPI API (jobs, auth, integration, MCP)
│ ├── instancer/ RabbitMQ consumer; Docker/K8s worker launcher
│ ├── secretsvc/ Bundle storage
│ ├── resultsvc/ Result ingestion + DB
│ ├── oai_proxy/ Optional OpenAI proxy (profile: proxy)
│ ├── prunner/ Optional cleanup of stale workers (profile: cleanup)
│ ├── worker_runner/ Detect prompt, model map, Codex runner script
│ ├── docker/ Base, backend, and worker images
│ └── compose.yml Full stack
└── deploy/ Deployment scripts (e.g. GCE)许可证
致谢
- evmBench/边境评估 --原始基准和代理工具。
- OtterSec团队(es3n1n、jktrn、TrixterTheTux、sahuang)——前端和工具支持。
