EVM代理智能合约分析服务

一个用于高级EVM智能合约分析的服务,提供代理检测、实现解析和安全分析功能,支持多链环境。

  • by 0xGval
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 0xGval/evm-proxy-mcp

使用说明

EVM代理MCP

MCP服务器,用于高级EVM智能合约分析,包括代理检测、实施解析和安全分析。

A. 模型上下文协议 服务器,为AI助手提供分析以太坊和EVM兼容智能合约的工具。

特性

  • 9代理模式检测 -EIP-1967、UUPS、信标、钻石、最小克隆、GnosisSafe等
  • 自动执行解决方案 -跟踪代理链以找到实际的逻辑契约
  • 管理功能检测 -识别特权功能(升级、暂停、刷新、刻录等)
  • 安全分析 -生成安全说明和风险评估
  • 多链支持 -以太坊、多边形、Arbitrum、乐观主义、Base、BSC、雪崩

安装

来自PyPI

pip install evm-proxy-mcp

来源

git clone https://github.com/0xGval/evm-proxy-mcp.git
cd evm-proxy-mcp
pip install -e .

配置

使用克劳德代码

claude mcp add evm-proxy-mcp -e ETHERSCAN_API_KEY=your_api_key -- uvx evm-proxy-mcp

或者使用pip安装:

claude mcp add evm-proxy-mcp -e ETHERSCAN_API_KEY=your_api_key -- python -m src.server

使用Claude桌面版

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "evm-proxy-mcp": {
      "command": "uvx",
      "args": ["evm-proxy-mcp"],
      "env": {
        "ETHERSCAN_API_KEY": "your_etherscan_api_key"
      }
    }
  }
}

环境变量

变量 描述 必填
ETHERSCAN_API_KEY 您的Etherscan API密钥(免费获得一个) 推荐
ETH_RPC_URL 自定义RPC端点 可选

工具

detect_proxy

检测EVM智能合约的代理模式。

参数:

  • address (必填):合同地址(0x…)
  • chain (可选):链名(默认:ethereum)
  • follow_chain (可选):遵循嵌套代理(默认值:false)

支持的代理模式:

  1. EIP-1967透明代理
  2. EIP-1967信标代理
  3. EIP-1822 UUPS代理
  4. ZeppelinOS传统代理
  5. EIP-1167最小代理克隆
  6. GnosisSafe代理
  7. 钻石代理(EIP-2535)
  8. EIP-897委派代理
  9. 自定义/未知代理

get_contract_source

获取智能合约的验证源代码。

参数:

  • address (必填):合同地址(0x…)
  • chain (可选):链名(默认:ethereum)
  • resolve_proxy (可选):同时获取实现源(默认值:true)

analyze_abi

分析合同ABI以获取安全相关信息。

参数:

  • address (必填):合同地址(0x…)
  • chain (可选):链名(默认:ethereum)
  • include_full_abi (可选):包含完整功能列表(默认值:false)

检测:

  • 升级功能
  • 暂停/取消暂停功能
  • 薄荷/燃烧功能
  • 所有权管理
  • 黑名单/白名单
  • 自毁能力

get_contract_creation

获取合同部署者地址和创建事务。

参数:

  • address (必填):合同地址(0x…)
  • chain (可选):链名(默认:ethereum)

full_analysis

结合所有工具进行全面的合同分析。

参数:

  • address (必填):合同地址(0x…)
  • chain (可选):链名(默认:ethereum)

list_chains

列出所有支持的区块链网络。

支撑链

链 链ID
以太坊 1
威立雅 11155111
多边形 137
裁判 42161
乐观主义 10
基数 8453
bsc 56
雪崩 43114

示例用法

分析USDC合同

User: Analyze the USDC contract on Ethereum

Claude: [Uses full_analysis tool with address 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48]

## Analysis Results

### Proxy Status
- **Is Proxy**: Yes
- **Type**: EIP-1967 Transparent Proxy
- **Implementation**: 0x43506...

### Admin Functions Detected
- pause()
- unpause()
- blacklist(address)
- mint(address,uint256)

### Security Notes
- Contract can be paused - centralization risk
- Contract has blacklist functionality
- Contract has mint capabilities

检查合同是否为代理

User: Is 0x1234... a proxy contract?

Claude: [Uses detect_proxy tool]

The contract at 0x1234... is an EIP-1967 Transparent Proxy.
- Implementation: 0x5678...
- Admin: 0x9abc...

发展

设置

git clone https://github.com/0xGval/evm-proxy-mcp.git
cd evm-proxy-mcp
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e ".[dev]"

运行测试

pytest

以开发模式运行

python run.py

建筑

src/
├── __init__.py        # Package metadata
├── server.py          # MCP server entry point
├── config.py          # Storage slots, selectors, chain configs
├── client.py          # Etherscan API client
├── proxy_detector.py  # 9 proxy pattern detection
└── abi_analyzer.py    # ABI analysis + admin detection

代理检测的工作原理

服务器通过以下方式检测代理:

  1. 字节码分析 -检查字节码中的EIP-1167最小代理模式
  2. 存储插槽读取 -读取标准化的EIP-1967存储插槽
  3. 函数调用 -尝试常见的getter函数实现

已使用的存储插槽

图案 插槽
EIP-1967实施 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
EIP-1967管理员 0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103
EIP-1967信标 0xa3f0ad74e5423aebfd80d3ef4346578335a9a72aeaee59ff6cb3582b35133d50
EIP-1822 UUPS 0xc5f16f0fcc639fa48a6947836d9850f504798523bf8c9a3a87d5876cf622bcf7

贡献

欢迎投稿!请阅读我们的 贡献指南 了解详情。

许可证

MIT许可证-请参阅 许可证 了解详情。

作者

0xGval - GitHub


为 模型上下文协议 生态系统。