智能合约审计服务

提供智能合约漏洞检测和审计报告生成的服务,支持Web界面、REST API和MCP协议集成。

  • by BofAI
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 BofAI/evmbench-mcp-server

使用说明

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)

流动

  1. 用户或MCP客户端向后端提交一个压缩的合同文件(以及可选的OpenAI API密钥)。
  2. 后端在Postgres中创建一个作业,在Secrets Service中存储一个秘密包,并发布到RabbitMQ。
  3. 实例化器使用消息并启动一个worker(Docker或K8s)。
  4. Worker获取包,提取zip到 audit/,并运行Codex检测专用代理(参见 backend/worker_runner/).
  5. 代理人写道 submission/audit.md。工作人员验证JSON报告并将其上传到结果服务。
  6. 前端或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 --build

3.启动前端

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 并且以相同的术语使用: 阿帕奇-2.0The 许可证 此存储库中的文件适用于此处的代码。修改和添加(包括MCP集成)由BankofAI完成。

致谢

  • evmBench/边境评估 --原始基准和代理工具。
  • OtterSec团队(es3n1n、jktrn、TrixterTheTux、sahuang)——前端和工具支持。