关于 EVMole
EVMole 的本地 MCP 服务,用于对已部署的 EVM 运行时字节码进行结构化分析。面向需要在本地检查合约字节码的 Agent 与客户端,通过 stdio 通信,不发起网络请求,也不需要凭证。
主要功能
- 01提取函数选择器与分发位置
- 02推断函数参数与状态可变性
- 03推断持久与瞬态存储访问
- 04输出编译器元数据
- 05提供反汇编、基本块与控制流图
适用场景
- 01在不访问网络的情况下分析已部署合约的字节码
- 02让 Agent 查看合约暴露的函数选择器与存储访问方式
- 03分析大型反汇编或控制流输出时使用分页参数
MCP 相关
该项目是一个 MCP 服务,通过 stdio 向 MCP 客户端暴露单个工具 analyze_evm_bytecode,用于接收十六进制字节码并返回结构化分析结果。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | number | 否 | |
| offset | number | 否 | |
| include | array | 否 | 要包含的分析功能:selectors、arguments、stateMutability、storage、transientStorage、metadata、disassembly、basicBlocks、controlFlowGraph。arguments 和 stateMutability 会隐含包含 selectors。 |
| bytecode | string | 是 | 已部署的 EVM 运行时字节码,使用十六进制表示;最大 1 MiB。 |
详细介绍
evmole-mcp
evmole-mcp 是EVMole的本地 MCP 服务。EVMole 是一款用于分析已部署 EVM 运行时字节码的结构化分析器。它提供一个工具 analyze_evm_bytecode,供兼容 MCP 的 Agent 和客户端使用。
启动服务
npx -y evmole-mcp@latest
需要 Node.js 22 或更高版本。
配置 MCP 客户端
{
"mcpServers": {
"evmole": {
"command": "npx",
"args": ["-y", "evmole-mcp@latest"]
}
}
}
服务通过标准输入/输出进行通信。
分析运行时字节码
analyze_evm_bytecode 工具接受十六进制 bytecode、可选的 include 功能名称,以及可选的 offset 和 limit 值。它可以提取:
- 函数选择器和分发位置;
- 推断出的参数和状态可变性;
- 推断出的持久化和瞬态存储访问;
- 编译器元数据;
- 反汇编结果、基本块和控制流图。
可以只使用 selectors 请求函数选择器。请求 arguments 或 stateMutability 也会启用选择器提取,请求的函数信息会合并到 analysis.functions 中。其他请求的分析结果会返回在对应的 analysis 字段中。
如果省略 include,工具会分析选择器、参数、状态可变性、两个存储域和元数据。反汇编和控制流功能默认不启用,因为它们的输出可能很大。工具会以结构化内容和 JSON 文本备用形式返回规范的 EVMole 版本 1 响应。解读结果前,请先检查 warnings 和 pagination。
隐私与限制
服务仅使用标准输入/输出,不会发出网络请求,无需凭据,不会获取合约地址,也不会写入文件。它不会解码 calldata、验证源代码、执行创建字节码或完整反编译源代码。参数、可变性和存储说明均为推断结果,并非经过验证的源代码级事实。
每个 evmole-mcp 版本都依赖与之匹配的确切 evmole 版本。
完整的设置和隐私指南请参阅 https://github.com/cdump/evmole/tree/master/agent。请在 https://github.com/cdump/evmole/issues 报告问题。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。