0xendale/evm-agent-toolkit
GitHub: 0xendale/evm-agent-toolkit
该工具包为自主 AI 智能体提供确定性的、经过 schema 验证的工具接口,用于可靠地审计和优化 EVM 智能合约。
Stars: 2 | Forks: 0
# EVM MCP Server
[](https://smithery.ai/servers/0xendale/evm-agent-toolkit)
[](https://glama.ai/mcp/servers/0xendale/evm-agent-toolkit)
一个 MCP (Model Context Protocol) 服务器,为自主编程智能体提供确定性的、经过 schema 验证的工具,用于 EVM 智能合约开发——包括安全扫描、gas 性能分析、编译器诊断和交易模拟。
## 为什么开发此项目
像 Slither 和 Foundry 这样的工具,其原始 CLI 输出包含大量噪音、具有非确定性,且经常导致 LLM 产生幻觉。本服务器会拦截这些输出,通过 Zod schema 对其进行验证,并返回任何智能体都能可靠解析的干净 JSON 数据。
## 工具
| 工具 | 注解 | 描述 |
|------|-------------|-------------|
| `evm_scan_vulnerabilities` | `readOnly`, `idempotent` | 运行 Slither 分析。返回带有提取代码片段的严重性评级结果。支持 `severityFilter` 和 `maxFindings`。 |
| `evm_analyze_gas_profile` | `readOnly`, `idempotent` | 运行 `forge test --gas-report`。返回结构化的、按函数划分的 gas 数据。 |
| `evm_compile_and_diagnose` | `readOnly`, `idempotent` | 运行 `forge build`。在失败时返回结构化的编译器诊断信息。 |
| `evm_simulate_transaction` | `readOnly`, `idempotent` | 运行 `cast call`。返回解码后的返回数据或回退原因。 |
| `evm_inspect_storage_layout` | `readOnly`, `idempotent` | 运行 `forge inspect storage-layout`。返回每个状态变量的插槽/偏移量/类型——用于代理冲突和打包检查。 |
| `evm_trace_call` | `readOnly`, `idempotent` | 运行 `cast call --trace`。返回包含 gas、调用类型、事件和回退帧的结构化调用树。 |
| `evm_decode_calldata` | `readOnly`, `idempotent` | 通过 `cast calldata-decode`(使用签名的离线模式)或 `cast 4byte-decode`(选择器查询)解码十六进制 calldata。 |
| `evm_run_tests` | `readOnly` | 运行 `forge test`(可选 `matchTest`/`matchPath`)。返回包含 gas、fuzz 运行和失败反例的按测试套件划分的结果。 |
| `evm_toolchain_versions` | `readOnly`, `idempotent` | 报告 `slither`、`forge` 和 `cast` 的已安装/缺失状态及确切版本。 |
## 资源
| URI | 描述 |
|-----|-------------|
| `evm://patterns/vulnerabilities` | 安全漏洞模式库 |
| `evm://gas/optimizations` | Gas 优化模式库 |
| `evm://patterns/arbitrage` | 套利策略参考 |
## 提示词
对于不支持原生技能的客户端,技能工作流以 MCP prompt 的形式暴露。每个都嵌入了完整的 SKILL.md 工作流。
| 提示词 | 参数 | 描述 |
|--------|------|-------------|
| `audit_contract` | `contractPath` | 严重性评级的安全审计(漏洞扫描工作流) |
| `optimize_gas` | `projectPath` | 测量的 gas 优化过程(gas 优化工作流) |
| `analyze_arbitrage` | `scenario` | 抵扣费用/gas/滑点后的机会分类账(套利分析工作流) |
## 架构
```
evm-agent-toolkit/
├── src/
│ ├── mcp/ # MCP server entry point (stdio transport)
│ ├── tools/ # Zod-validated CLI output parsers
│ │ ├── slither.ts # Slither JSON → SanitizedFinding[]
│ │ ├── forge.ts # Forge gas tables → ContractGas[]
│ │ ├── compiler.ts # Forge build errors → CompilerDiagnostic[]
│ │ ├── simulator.ts# Cast call output → SimulatorDiagnostic
│ │ ├── storage.ts # Forge storage layout → StorageEntry[]
│ │ ├── trace.ts # Cast call traces → TraceEvent[]
│ │ ├── decoder.ts # Cast calldata decode → DecodedCalldata
│ │ ├── testrunner.ts # Forge test output → TestSuite[]
│ │ └── versions.ts # Toolchain --version output → ToolVersion
│ ├── rules/ # Agent system prompt injections
│ └── hooks/ # Lifecycle hooks (UserPromptSubmit, Statusline)
├── tests/ # Vitest unit tests for all parsers
├── bench/ # Performance benchmarks
├── evals/ # Agent evaluation framework (vulnerable contracts + eval XML)
├── skills/ # Markdown reference libraries
├── .claude-plugin/ # Claude Code plugin manifest
└── gemini-extension.json # Antigravity plugin manifest
```
## 安装说明
```
npm install
npm run build
```
## Agent 配置
这是一个 stdio MCP server。它由 MCP 客户端生成,而不是手动启动。
**Claude Desktop / Cursor:**
```
{
"mcpServers": {
"evm-agent-toolkit": {
"command": "npx",
"args": ["-y", "@0xendale/evm-agent-toolkit"]
}
}
}
```
**前置条件:** 必须在主机上安装 `slither`、`forge` 和 `cast`。
## 开发说明
```
npm run dev # Watch mode with tsx
npm run test # Run all unit tests
npm run bench # Run parser benchmarks
npm run build # Compile TypeScript → build/
```
## 性能
解析器吞吐量(在 Apple Silicon 上测量):
| 解析器 | 迭代次数 | 时间 | 每次调用耗时 |
|--------|-----------|------|----------|
| Slither (100 个检测器) | 1,000 | ~109ms | ~0.1ms |
| Forge Gas 表 | 10,000 | ~32ms | ~0.003ms |
## 许可证
MIT
标签:AI智能体, EVM, MCP协议, SOC Prime, 开发工具, 智能合约, 自定义脚本