Perform static and symbolic analysis of Solidity smart contracts using Slither and Mythril to detect reentrancy, integer overflow, access control, and other vulnerability classes before deployment to Ethereum mainnet.
日本語の概要は準備中です。原文の説明を表示しています。
MCP server integrating Slither + Aderyn + SWC patterns into Claude Code for smart contract auditing. Use when analyzing Solidity files, running DeFi-specific detectors, or generating invariants. 10 MCP tools, 86 SWC detectors, DeFi preset pack, CI/CD workflow.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
From: github.com/mariano-aguero/solidity-audit-mcp — MCP server plugging Slither + Aderyn + SWC patterns into Claude Code 10 tools. 19 built-in finding explainers. 86 SWC detectors. DeFi + Web3 preset detector packs. CI/CD ready.
An MCP server that gives Claude Code direct access to Slither, Aderyn, Slang AST, SWC pattern matching, and a gas optimizer — all in one unified pipeline with auto-deduplication. Instead of context-switching between tools, you ask Claude to audit a contract and get a merged, severity-sorted report.
Stack:
External (install separately):
Slither → Trail of Bits, 90+ detectors, deep data flow
Aderyn → Cyfrin Rust-based, fast AST analysis
Echidna → Property fuzzer (optional)
Halmos → Symbolic execution (optional)
Built-in (no install):
Slang → Nomic Foundation AST parser, precise pattern matching
SWC → 86 detectors against Smart Contract Weakness Classification registry
Gas → Storage packing, loop, calldata optimizations
# Prerequisites
pip install slither-analyzer solc-select
solc-select install 0.8.20 && solc-select use 0.8.20
curl -L https://foundry.paradigm.xyz | bash && foundryup
# Aderyn (Rust)
cargo install aderyn
# or: curl -L https://raw.githubusercontent.com/Cyfrin/aderyn/dev/cyfrinup/install | bash
# MCP server
npm install -g solidity-audit-mcp
# or: npx solidity-audit-mcp
# Optional fuzzers
brew install echidna # macOS
pip install halmos # symbolic execution
Wire into Claude Code — add to ~/.claude/mcp.json:
{
"mcpServers": {
"audit": {
"command": "npx",
"args": ["solidity-audit-mcp"]
}
}
}
Or project-level .mcp.json in repo root:
{
"mcpServers": {
"audit": {
"command": "node",
"args": ["/path/to/solidity-audit-mcp/dist/index.js"]
}
}
}
Docker (all tools pre-installed):
docker run -v $(pwd):/contracts solidity-audit-mcp audit /contracts/Token.sol
analyze_contract — Full Pipeline (Start Here)analyze_contract(
contractPath: "contracts/Vault.sol",
analyzers: ["slither", "aderyn", "slang"], # or omit for all
runTests: true # run forge tests too
)
Pipeline:
get_contract_info — Attack Surface Map (No Analysis)get_contract_info("contracts/Protocol.sol")
Returns instantly:
Use before full audit to understand the attack surface.
check_vulnerabilities — SWC Pattern Scancheck_vulnerabilities(
contractPath: "contracts/Token.sol",
detectors: ["SWC-107", "SWC-115", "CUSTOM-017"] # or omit for all 86
)
19 built-in finding explainers (full Foundry PoC + remediation):
| ID | Finding | Severity |
|---|---|---|
| SWC-107 | Reentrancy | Critical |
| SWC-112 | Delegatecall to untrusted callee | Critical |
| CUSTOM-017 | Missing access control on critical function | Critical |
| CUSTOM-018 | ERC-7702 unprotected initializer | Critical |
| CUSTOM-004 | Price oracle manipulation / flash loan | Critical |
| CUSTOM-032 | ERC-4337 paymaster drain | Critical |
| SWC-101 | Integer overflow/underflow (unchecked) | High |
| SWC-104 | Unchecked call return value | High |
| SWC-115 | Authorization through tx.origin | High |
| CUSTOM-001 | Array length mismatch | High |
| CUSTOM-011 | Signature without replay protection | High |
| CUSTOM-029 | Merkle double-claim | High |
| SWC-116 | Block timestamp dependence | Medium |
| CUSTOM-005 | Missing zero address validation | Medium |
| CUSTOM-013 | Hash collision via abi.encodePacked | Medium |
| CUSTOM-015 | Division before multiplication | Medium |
| CUSTOM-016 | Permit without deadline | Medium |
| SWC-100 | Function default visibility | Medium |
| SWC-103 | Floating pragma | Low |
explain_finding — Deep Dive on Any Findingexplain_finding(
findingId: "CUSTOM-011", # or "SWC-107", or keyword "reentrancy"
contractContext: "ERC4626 vault with harvest callback"
)
Returns: root cause → impact → step-by-step exploit → vulnerable code → secure code → Foundry PoC template → remediation → references.
Use this mid-hunt when you find a suspicious pattern and want the full exploit scenario before writing a PoC.
Supported keywords: reentrancy, overflow, flash loan, oracle, replay, nonce, encodepacked, precision loss, permit, access control, merkle, airdrop, erc-7702, paymaster, erc-4337, delegatecall, tx.origin, zero address, timestamp
generate_invariants — Auto-Generate Foundry Invariant Testsgenerate_invariants(
contractPath: "contracts/Vault.sol",
protocolType: "vault" # auto, erc20, erc721, vault, lending, amm, governance, staking
)
Returns ready-to-paste invariant_*() functions + handler contract + forge test --invariant run commands.
Protocol-specific invariants generated:
ERC-4626 vault: totalAssets >= total share value
share price non-decreasing
deposit/withdraw round-trip solvency
Lending: protocol solvency, liquidatable positions
AMM: constant product k, no free lunch on swap
Staking: reward monotonicity, total staked balance, slash accounting
Governance: proposal state machine, quorum immutability
diff_audit — Audit Only Changesdiff_audit(
oldContractPath: "v1/Vault.sol",
newContractPath: "v2/Vault.sol",
focusOnly: true # only report issues in changed code
)
Returns: functions added/removed/modified, new vulns introduced, issues resolved. Use on upgrade PRs.
audit_project — Whole Directoryaudit_project(
projectRoot: "./contracts",
exclude: ["node_modules/**", "test/**", "mocks/**"]
)
Aggregated findings across all .sol files + per-contract breakdown + project-level risk score.
optimize_gas — Gas Analysisoptimize_gas("contracts/Protocol.sol", includeInformational: true)
Returns: storage packing opportunities, loop optimizations, calldata vs memory, visibility suggestions, estimated savings per change.
run_tests — Forge Integrationrun_tests(projectRoot: ".", contractName: "Vault")
Returns: pass/fail/skip counts, coverage %, gas report, execution time.
generate_report — Formatted Outputgenerate_report(findings, contractInfo, format: "markdown", projectName: "Protocol")
Formats into: executive summary + risk level + findings table + remediation guidance.
The defi.json preset contains 10 high/medium severity DeFi-specific detectors:
oracle-manipulation → HIGH — spot price used, no TWAP, no staleness check
flash-loan-risk → HIGH — balance check before/after single tx
slippage-check → HIGH — swap with no minOut parameter
reentrancy-erc777 → HIGH — ERC777 tokensReceived callback reentrancy
donation-attack → HIGH — totalAssets() uses balanceOf (inflatable)
price-stale-check → HIGH — Chainlink latestRoundData without check
unchecked-transfer → MEDIUM — transfer/transferFrom return value ignored
precision-loss → MEDIUM — division before multiplication
front-running-vulnerable → MEDIUM — state change in predictable order
liquidity-removal-risk → MEDIUM — LP withdrawal without reserve check
Load in Claude Code:
analyze_contract("contracts/Vault.sol", analyzers: ["slither", "aderyn"], detectorPreset: "defi")
Drop this in .github/workflows/audit.yml to block PRs with Critical/High findings:
name: Smart Contract Audit
on:
pull_request:
paths: ["**.sol"]
jobs:
audit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with: { node-version: "20" }
- uses: actions/setup-python@v5
with: { python-version: "3.11" }
- name: Install tools
run: |
pip install slither-analyzer solc-select
solc-select install 0.8.28 && solc-select use 0.8.28
ADERYN_VER=$(curl -sf https://api.github.com/repos/Cyfrin/aderyn/releases/latest | grep '"tag_name"' | sed -E 's/.*"([^"]+)".*/\1/')
curl -fL "https://github.com/Cyfrin/aderyn/releases/download/${ADERYN_VER}/aderyn-x86_64-unknown-linux-gnu.tar.xz" | tar -xJf - -C /tmp
sudo install -m 755 /tmp/aderyn /usr/local/bin/aderyn
npm install -g solidity-audit-mcp
- name: Audit changed contracts
run: |
# Get changed .sol files
CHANGED=$(git diff --name-only origin/${{ github.base_ref }} | grep '\.sol$' || true)
for f in $CHANGED; do
solidity-audit-cli audit "$f" --severity-threshold high --format sarif --output results.sarif
done
- name: Upload SARIF
uses: github/codeql-action/upload-sarif@v3
with: { sarif_file: results.sarif }
Exit codes for CI gates:
0 → no findings above threshold → PR can merge
1 → findings detected → block PR
2 → execution error → investigate
# Full audit
solidity-audit-cli audit ./contracts/Token.sol
# Filter severity
solidity-audit-cli audit ./contracts/Token.sol --severity-threshold high
# Different output formats
solidity-audit-cli audit ./contracts/Token.sol --format json
solidity-audit-cli audit ./contracts/Token.sol --format sarif --output results.sarif
solidity-audit-cli audit ./contracts/Token.sol --format markdown
# Compare versions
solidity-audit-cli diff ./v1/Token.sol ./v2/Token.sol
# Gas analysis
solidity-audit-cli gas ./contracts/Token.sol
Run as a remote MCP server that any client connects to via SSE:
# Start
MCP_API_KEY=your-secret npm run saas:up # → http://localhost:3000
# Configure client
{
"mcpServers": {
"audit": {
"transport": "sse",
"url": "http://your-server:3000/sse",
"headers": { "Authorization": "Bearer your-secret" }
}
}
}
# Health check
GET /health → { "tools": 10, "slither": {"available": true}, "aderyn": {"available": true} }
# STEP 1: Attack surface map before touching code
get_contract_info("contracts/ErnVault.sol")
→ lists: payable functions, delegatecall usage, external functions without modifiers
# STEP 2: Full pipeline with DeFi preset
analyze_contract(
"contracts/ErnDistributor.sol",
analyzers: ["slither", "aderyn", "slang"]
)
→ Slither will flag: DISTRIBUTOR_ROLE with no granted address
→ Aderyn will flag: unchecked return value in aToken.transfer()
→ SWC will flag: CUSTOM-017 missing access control on distributeRewards()
# STEP 3: Generate invariants for yield accounting
generate_invariants(
"contracts/ErnVault.sol",
protocolType: "vault"
)
→ Returns ready-to-paste Foundry invariant tests:
invariant_totalAssetsGteDebt() ← aToken balance >= totalDeposited
invariant_sharePriceNonDecreasing() ← cumulativeRewardPerShare only increases
invariant_depositWithdrawRoundTrip() ← user gets back what they put in
# STEP 4: Explain the signature replay finding in detail
explain_finding("CUSTOM-011", contractContext: "Ern distributor with off-chain signatures")
→ Returns: exploit scenario + vulnerable code + fixed code + Foundry PoC template
# STEP 5: Run invariant tests
run_tests(projectRoot: ".", contractName: "ErnVault")
→ Any invariant failure = confirmed Critical finding
→ NEXT: 00-START-HERE.md
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Perform static and symbolic analysis of Solidity smart contracts using Slither and Mythril to detect reentrancy, integer overflow, access control, and other vulnerability classes before deployment to Ethereum mainnet.
日本語の概要は準備中です。原文の説明を表示しています。
Pre-deployment security audit of Solidity smart contracts in a Foundry project. Combines static analysis (Slither, Aderyn), symbolic execution (Mythril), and property-based testing (forge fuzz + invariant tests with handlers) to catch reentrancy, access-control, oracle/price manipulation, and arithmetic bugs BEFORE deploying to an EVM chain. Also enforces key hygiene (no plaintext private keys, encrypted cast keystore) and a secure deploy workflow. Use when writing, reviewing, testing, or deploying Solidity/Foundry contracts, building a dApp, or working with forge/cast/anvil, MetaMask, or Web3/DeFi code.
日本語の概要は準備中です。原文の説明を表示しています。
Claude Skills meta-skill: extract domain material (docs/APIs/code/specs) into a reusable Skill (SKILL.md + references/scripts/assets), and refactor existing Skills for clarity, activation reliability, and quality gates.
日本語の概要は準備中です。原文の説明を表示しています。
tmux 自动化操控:用 scripts/auto-tmux.sh 安全读取、发送、巡检、救援、录制 session|window|pane,用 swarm-state.sh 管理蜂群任务/锁/状态,并基于 oh-my-tmux 组织多 AI 终端协作。触发:capture-pane、send-keys、批量巡检、蜂群 AI 协作、卡死救援、tmux 工作台初始化。
日本語の概要は準備中です。原文の説明を表示しています。
可重跑的数学计算与反例实验。用于 SymPy 精确代数/微积分/方程/矩阵、NumPy/SciPy 数值方法、mpmath 高精度交叉检查、OEIS 序列识别、有限范围反例搜索和计算证据记录。
日本語の概要は準備中です。原文の説明を表示しています。
数学公式与理论线推导。用于整理散乱公式、固定不变量和记号、推导恒等式/近似/局部命题、检查隐藏假设,或把理论笔记变成可审计推导包。
日本語の概要は準備中です。原文の説明を表示しています。