Skip to main content

blockscout-mcp

Use when querying onchain data through Blockscout MCP. Covers contract source retrieval, transaction analysis, address balance queries, event log queries, and token information.

설치로 이동

소스 정보

저장소
ccashwell/evm-cortex
최근 소스 활동
2026년 4월 10일 16:31
감지된 SKILL.md 언어
영어
스타
131
포크
18

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
blockscout-mcp
description
Use when querying onchain data through Blockscout MCP. Covers contract source retrieval, transaction analysis, address balance queries, event log queries, and token information.
# Blockscout MCP Integration ## Overview Blockscout provides a comprehensive API for querying onchain data. Through MCP (Model Context Protocol), you can access contract sources, transaction details, address information, and event logs programmatically. ## Blockscout API Endpoints Base URLs by chain: | Chain | Blockscout URL | |-------|---------------| | Ethereum | `https://eth.blockscout.com/api/v2` | | Base | `https://base.blockscout.com/api/v2` | | Optimism | `https://optimism.blockscout.com/api/v2` | | Arbitrum | `https://arbitrum.blockscout.com/api/v2` | | Gnosis | `https://gnosis.blockscout.com/api/v2` | ## Contract Source Retrieval ```bash # Get verified contract source via API curl "https://base.blockscout.com/api/v2/smart-contracts/0xContractAddress" # Response includes: # - source_code: full Solidity source # - abi: contract ABI # - compiler_version # - optimization_enabled # - constructor_args ``` Using cast: ```bash # Download source from Blockscout-indexed chain cast etherscan-source 0xContractAddress \ --chain base \ -d ./downloaded-source ``` ## Address Queries ```bash # Get address info (balance, tx count, token balances) curl "https://base.blockscout.com/api/v2/addresses/0xAddress" # Get token balances for an address curl "https://base.blockscout.com/api/v2/addresses/0xAddress/token-balances" # Get address transactions curl "https://base.blockscout.com/api/v2/addresses/0xAddress/transactions" # Get internal transactions curl "https://base.blockscout.com/api/v2/addresses/0xAddress/internal-transactions" # Get token transfers curl "https://base.blockscout.com/api/v2/addresses/0xAddress/token-transfers" ``` ## Transaction Analysis ```bash # Get transaction details curl "https://base.blockscout.com/api/v2/transactions/0xTxHash" # Get transaction logs (events) curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/logs" # Get internal transactions for a tx curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/internal-transactions" # Get token transfers in a transaction curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/token-transfers" # Get transaction state changes curl "https://base.blockscout.com/api/v2/transactions/0xTxHash/state-changes" ``` ## Event Log Queries ```bash # Get logs by contract address curl "https://base.blockscout.com/api?module=logs&action=getLogs\ &address=0xContractAddress\ &fromBlock=0\ &toBlock=latest\ &topic0=0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef" # topic0 = keccak256("Transfer(address,address,uint256)") ``` ## Token Information ```bash # Get token details (name, symbol, decimals, total supply) curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress" # Get token holders curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress/holders" # Get token transfers curl "https://base.blockscout.com/api/v2/tokens/0xTokenAddress/transfers" # Get token instances (for NFTs) curl "https://base.blockscout.com/api/v2/tokens/0xNFTAddress/instances" ``` ## MCP Usage Patterns ### Query Contract State ```typescript // Through MCP, query a contract's verified source and ABI const contractInfo = await blockscoutMcp.getContract({ chain: 'base', address: '0xContractAddress', }); // Use ABI to decode transaction data const decodedTx = await blockscoutMcp.decodeTransaction({ chain: 'base', txHash: '0xTxHash', abi: contractInfo.abi, }); ``` ### Monitor Contract Events ```typescript // Fetch recent events from a contract const logs = await blockscoutMcp.getLogs({ chain: 'base', address: '0xContractAddress', fromBlock: 'latest-1000', toBlock: 'latest', topic0: '0x...', // event signature hash }); ``` ### Investigate a Transaction ```typescript // Full transaction breakdown const tx = await blockscoutMcp.getTransaction({ chain: 'base', hash: '0x...' }); const logs = await blockscoutMcp.getTransactionLogs({ chain: 'base', hash: '0x...' }); const internal = await blockscoutMcp.getInternalTxs({ chain: 'base', hash: '0x...' }); const stateChanges = await blockscoutMcp.getStateChanges({ chain: 'base', hash: '0x...' }); ``` ## Blockscout vs Etherscan API | Feature | Blockscout | Etherscan | |---------|-----------|-----------| | Open source | Yes | No | | V2 API | REST, well-structured | Legacy format | | Self-hostable | Yes | No | | Multi-chain | Unified API | Separate domains | | Rate limits | Generous | Restrictive | | API key required | Usually no | Yes | | State changes | Available | Limited | ## Useful Blockscout Queries for Debugging ```bash # Check if contract is verified curl -s "https://base.blockscout.com/api/v2/smart-contracts/0xAddr" | jq '.is_verified' # Get proxy implementation address curl -s "https://base.blockscout.com/api/v2/smart-contracts/0xProxy" | jq '.implementations' # Get recent transactions for a contract curl -s "https://base.blockscout.com/api/v2/addresses/0xAddr/transactions?limit=10" # Search by text curl -s "https://base.blockscout.com/api/v2/search?q=MyToken" # Get block info curl -s "https://base.blockscout.com/api/v2/blocks/18000000" ``` ## Integration Checklist - [ ] Use correct Blockscout instance URL for target chain - [ ] Handle pagination for large result sets (`next_page_params`) - [ ] Cache contract ABI/source after first retrieval - [ ] Use V2 API endpoints where available (better structured) - [ ] Fall back to Etherscan API if Blockscout instance is unavailable - [ ] Check `is_verified` before trusting contract source - [ ] Use `state-changes` endpoint for understanding tx effects
GitHub에서 보기