About EVMole
EVMole is a local MCP server for structured analysis of deployed EVM runtime bytecode. It is aimed at agents and clients that need to inspect contract bytecode offline, communicates over stdio, and requires no network access or credentials.
Key features
- 01Function selector and dispatch location extraction
- 02Inferred function arguments and state mutability
- 03Inferred persistent and transient storage access
- 04Compiler metadata output
- 05Disassembly, basic blocks and control-flow graph
Use cases
- 01Analyzing deployed contract bytecode without network access
- 02Letting an agent list selectors and storage access of a contract
- 03Paging through large disassembly or control-flow output
MCP support
This project is an MCP server that exposes a single tool, analyze_evm_bytecode, over stdio. MCP clients pass hexadecimal bytecode and receive a structured analysis in return.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
Tools
1Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | number | No | |
| offset | number | No | |
| include | array | No | Analysis features to include: selectors, arguments, stateMutability, storage, transientStorage, metadata, disassembly, basicBlocks, controlFlowGraph. arguments and stateMutability imply selectors. |
| bytecode | string | Yes | Deployed EVM runtime bytecode as hexadecimal; maximum 1 MiB. |
Details
From the project READMEevmole-mcp
evmole-mcp is the local MCP server for
EVMole, a structured analyzer for deployed
EVM runtime bytecode. It exposes one tool, analyze_evm_bytecode, for use by
MCP-compatible agents and clients.
Start the server
npx -y evmole-mcp@latest
Node.js 22 or newer is required.
Configure an MCP client
{
"mcpServers": {
"evmole": {
"command": "npx",
"args": ["-y", "evmole-mcp@latest"]
}
}
}
The server communicates over stdio.
Analyze runtime bytecode
The analyze_evm_bytecode tool accepts hexadecimal bytecode, optional
include feature names, and optional offset and limit values. It can
extract:
- function selectors and dispatch locations;
- inferred arguments and state mutability;
- inferred persistent and transient storage access;
- compiler metadata;
- disassembly, basic blocks, and a control-flow graph.
Function selectors can be requested on their own with selectors. Requesting
arguments or stateMutability also enables selector extraction, and the
requested function information is combined in analysis.functions. Other
requested analyses are returned in their corresponding analysis fields.
If include is omitted, the tool analyzes selectors, arguments, state
mutability, both storage domains, and metadata. Disassembly and control-flow
features are opt-in because their output can be large. The tool returns the
canonical version 1 EVMole response as structured content plus a JSON text
fallback. Check warnings and pagination before interpreting the result.
Privacy and limitations
The server uses stdio only, makes no network requests, requires no credentials, does not fetch contract addresses, and writes no files. It does not decode calldata, verify source, execute creation bytecode, or fully decompile source. Arguments, mutability, and storage descriptions are inferred rather than verified source-level facts.
Each evmole-mcp release depends on the matching exact evmole version.
See https://github.com/cdump/evmole/tree/master/agent for full setup and privacy guidance. Report problems at https://github.com/cdump/evmole/issues.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.