# EVMole

A local MCP server that inspects deployed EVM runtime bytecode: function selectors, arguments, mutability, storage access and compiler metadata.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 473
- Author: cdump
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/cdump/evmole/tree/HEAD/agent/mcp
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/evmole

## What it does

The server exposes a single tool called `analyze_evm_bytecode`. You hand it hexadecimal `bytecode`, optionally a list of `include` feature names plus `offset` and `limit`. Leave `include` out and it works through selectors, arguments, state mutability, both storage domains and compiler metadata on its own. Disassembly, basic blocks and the control-flow graph stay opt-in, since they produce a lot of output.

Want selectors alone? Ask for `selectors`. Asking for `arguments` or `stateMutability` pulls selector extraction in as well, and everything about the functions lands together under `analysis.functions`. Results arrive as canonical version 1 structured content with a JSON text fallback. Read `warnings` and `pagination` before you trust the numbers.

Transport is stdio only. No network calls, no credentials, no fetching of contract addresses, no files written. Arguments, mutability and storage descriptions are inferred, not read from verified source — treat them as hints. Calldata decoding, source verification and execution of creation bytecode are all out of scope. Node.js 22 or newer is required, and each `evmole-mcp` release is pinned to one exact `evmole` version, so upgrade the pair together.

## Requirements
- Needs: Node.js (commands run via npx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add evmole -- npx -y evmole-mcp
```

### Codex

**Platform CLI**
```bash
codex mcp add mcp -- npx -y evmole-mcp
```

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "mcp": {
            "command": "npx",
            "args": [
                "-y",
                "evmole-mcp"
            ]
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "mcp": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "evmole-mcp"
            ]
        }
    }
}
```

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add mcp npx -y evmole-mcp
```

## When to use it
- pull function selectors out of deployed contract bytecode
- guess argument types and mutability without source
- see which persistent and transient storage slots a contract touches
- get a disassembly and control-flow graph for manual review
- read compiler metadata embedded in the bytecode

## Example prompts
- Analyze bytecode `0x6080604052...` and list the function selectors
- Request arguments and state mutability for this bytecode
- Include disassembly and the control-flow graph, first 200 bytes

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [mcp](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — MCP server · ★ 12109
- [Robin: AI-Powered Dark Web OSINT](https://affpapa.org/en/nevibecode/mcp/robin-ai-powered-dark-web-osint.md) — MCP server · ★ 7658
- [jshookmcp](https://affpapa.org/en/nevibecode/mcp/jshookmcp.md) — MCP server · ★ 2061
- [OpenOSINT](https://affpapa.org/en/nevibecode/mcp/openosint.md) — MCP server · ★ 1802

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
