MCP server for fetching and analyzing EVM transactions via the Tenderly Node RPC API and Etherscan's API.
Supports all 41 Tenderly mainnet networks that have Node RPC (gateway) access —
Ethereum, Arbitrum One, Optimism, Base, Polygon, Avalanche C-Chain, Celo, Gnosis Chain,
ZKsync, Linea, Scroll, Mantle, Blast, Sonic, Berachain, Unichain, World Chain, Ronin,
Moonbeam, Flare, Fraxtal, Metis, Conflux eSpace, X Layer, Ink, Soneium, Lisk, Zircuit,
Immutable zkEVM, Katana, Lens, Plasma, Stable, Monad, MegaETH, Taiko, Morph, BOB,
Boba Ethereum, ApeChain, and ApexFusion Nexus. See src/config.ts for
the full registry (network identifier → gateway slug → chain ID). Adding a network is a
two-line change (SUPPORTED_NETWORKS in src/types.ts + an entry in NETWORK_REGISTRY).
| Tool | Description |
|---|---|
trace_transaction |
Full trace: call tree, logs, asset changes, state changes, and balance changes |
get_call_trace |
Call tree only (less verbose, configurable depth) |
get_asset_changes |
Token transfers and native balance movements only |
simulate_transaction |
Simulate a tx without broadcasting — preview outcome and trace |
| Tool | Description |
|---|---|
get_transaction |
Raw transaction data: from/to, value, gas price, nonce, input calldata |
get_transaction_receipt |
Receipt: status, gas used, contract deployment address, emitted logs |
get_block |
Block details: number, timestamp, miner, gas, base fee, transaction list |
| Tool | Description |
|---|---|
eth_call |
Execute a read-only contract call at a specific block |
get_logs |
Query event logs by address, topic filters, and block range |
get_storage_at |
Read a raw 32-byte storage slot from a contract |
get_contract_source |
Fetch verified Solidity source from Etherscan (requires ETHERSCAN_API_KEY) |
get_contract_abi |
Fetch the ABI for a verified contract from Etherscan (requires ETHERSCAN_API_KEY) |
npm install
npm run buildEdit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"tenderly": {
"command": "node",
"args": ["/path/to/tenderly-mcp/dist/index.js"],
"env": {
"TENDERLY_ACCESS_KEY": "<your-tenderly-access-key>",
"ETHERSCAN_API_KEY": "<your-etherscan-api-key>"
}
}
}
}Once published to npm, you can skip the local build and run it via npx instead:
{
"mcpServers": {
"tenderly": {
"command": "npx",
"args": ["-y", "tenderly-mcp"],
"env": {
"TENDERLY_ACCESS_KEY": "<your-tenderly-access-key>",
"ETHERSCAN_API_KEY": "<your-etherscan-api-key>"
}
}
}
}TENDERLY_ACCESS_KEY— required; your Tenderly gateway access key (used for all networks)ETHERSCAN_API_KEY— optional; required only forget_contract_sourceandget_contract_abi
Restart Claude Desktop after saving.
Ask Claude:
"Trace this Celo transaction and tell me why it reverted:
0xabc..."
"What token transfers happened in
0xdef...on Ethereum?"
"Simulate this transaction on Base: from 0x..., to 0x..., data 0x..."
"What events did contract 0x... emit in the last 1000 blocks on Arbitrum?"
"Show me the verified source code for 0x... on Optimism."
npm run dev # run without building (tsx)
npm test # unit tests
npm run build # compile to dist/