Skip to main content
Glama

Blockchain MCP Server

by lienhage
README.md6.41 kB
# Blockchain MCP Server A Model Context Protocol (MCP) based blockchain tools server providing Ethereum vanity address generation and Cast command functionality. ## Features ### 1. Ethereum Vanity Address Generation - 🎯 Support for specifying address prefix and suffix - ⚡ Multi-threaded concurrent computation for optimized performance - 📊 Real-time generation statistics display - ✅ Address validity verification ### 2. Cast Command Tools - 🔍 **4byte**: Get function signatures from function selectors - 🔧 **4byte-decode**: Decode ABI-encoded calldata - 📦 **abi-encode**: ABI encode function parameters - 🔄 **abi-decode**: ABI decode data ### 3. RPC Service - 📞 **static-call**: Make static calls on any EVM-compatible chain (read-only) - 💸 **send-transaction**: Send transactions to smart contracts (requires private key) - 💰 **get-balance**: Query address balance - 🔗 **list-chains**: List supported chains ## Installation and Usage ### Install Dependencies ```bash npm install ``` ### Build Project ```bash npm run build ``` ### Run Server ```bash npm start ``` ### Development Mode ```bash npm run dev ``` ## Tool Usage Guide ### Vanity Address Generation #### `generate-vanity-address` Generate Ethereum addresses matching specified conditions **Parameters:** - `prefix` (optional): Address prefix, excluding 0x - `suffix` (optional): Address suffix - `workers` (optional): Number of concurrent threads, default 4, max 16 - `caseSensitive` (optional): Whether case-sensitive, default false **Example:** ```json { "prefix": "1234", "suffix": "abcd", "workers": 8, "caseSensitive": false } ``` #### `validate-ethereum-address` Validate Ethereum address validity **Parameters:** - `address`: Ethereum address to validate ### Cast Command Tools #### `4byte` Get function signatures for the given selector **Parameters:** - `selector`: 4-byte function selector (hexadecimal) **Example:** ```json { "selector": "0xa9059cbb" } ``` #### `4byte-decode` Decode ABI-encoded calldata **Parameters:** - `calldata`: ABI-encoded calldata (hexadecimal) **Example:** ```json { "calldata": "0xa9059cbb000000000000000000000000..." } ``` #### `abi-encode` ABI encode function parameters **Parameters:** - `types`: Parameter types array - `values`: Parameter values array **Example:** ```json { "types": ["uint256", "address", "bool"], "values": [1000, "0x1234567890123456789012345678901234567890", true] } ``` #### `abi-encode-with-signature` Complete function call ABI encoding (with function selector) **Parameters:** - `functionSignature`: Function signature - `values`: Parameter values array **Example:** ```json { "functionSignature": "transfer(address,uint256)", "values": ["0x1234567890123456789012345678901234567890", 1000] } ``` #### `abi-decode` Decode ABI-encoded data **Parameters:** - `types`: Parameter types array - `data`: Hexadecimal data to decode **Example:** ```json { "types": ["uint256", "address"], "data": "0x00000000000000000000000000000000000000000000000000000000000003e8" } ``` ### RPC Service Tools #### `list-chains` List all supported EVM-compatible chains **Parameters:** None #### `get-balance` Query address balance on specified chain **Parameters:** - `chain`: Chain identifier (e.g., "ethereum", "polygon", "bsc") - `address`: Address to query - `blockTag` (optional): Block tag, default "latest" **Example:** ```json { "chain": "ethereum", "address": "0x1234567890123456789012345678901234567890" } ``` #### `static-call` Make static calls to smart contracts (read-only operations) **Parameters:** - `chain`: Chain identifier - `to`: Contract address - `data`: ABI-encoded function call data - `blockTag` (optional): Block tag, default "latest" **Example:** ```json { "chain": "ethereum", "to": "0xA0b86a33E6441068C73f4Ea6cB24b80b52bF97F4", "data": "0x70a08231000000000000000000000000123456789012345678901234567890123456789" } ``` #### `send-transaction` Send transactions to smart contracts (requires private key) **Parameters:** - `chain`: Chain identifier - `to`: Contract address - `data`: ABI-encoded function call data - `value` (optional): ETH amount to send (wei) - `gasLimit` (optional): Gas limit - `gasPrice` (optional): Gas price (wei) - `privateKey`: Sender's private key **Example:** ```json { "chain": "sepolia", "to": "0x1234567890123456789012345678901234567890", "data": "0xa9059cbb000000000000000000000000...", "value": "0", "privateKey": "0x..." } ``` ## Performance Optimization ### Vanity Address Generation Performance Tips - Shorter prefixes generate faster - Suffixes are slightly easier than prefixes - Recommended to use 4-8 worker threads for optimal performance - Avoid specifying both long prefix and long suffix simultaneously ### Expected Generation Time - 4 hex characters: seconds to minutes - 5 hex characters: minutes to tens of minutes - 6 hex characters: hours - 7+ characters: may take very long time ## Supported Blockchain Networks ### Mainnet - **Ethereum**: ethereum (Chain ID: 1) - **Polygon**: polygon (Chain ID: 137) - **BSC**: bsc (Chain ID: 56) - **Arbitrum**: arbitrum (Chain ID: 42161) - **Optimism**: optimism (Chain ID: 10) - **Avalanche**: avalanche (Chain ID: 43114) - **Fantom**: fantom (Chain ID: 250) ### Testnet - **Sepolia**: sepolia (Chain ID: 11155111) All networks use public RPC endpoints to ensure stability and accessibility. ## Tech Stack - **TypeScript**: Type-safe JavaScript - **MCP SDK**: Model Context Protocol implementation - **Ethers.js**: Ethereum library - **Node.js Worker Threads**: Multi-threaded concurrent computation - **4byte.directory API**: Function signature database ## Security Considerations ⚠️ **Important Notes:** - Generated private keys have complete control over assets - Always keep private keys secure and never share them with anyone - Recommend generating important addresses in offline environments - This tool is for learning and testing purposes only ## Installation via NPM You can install this MCP server globally: ```bash npm install -g blockchain-mcp-server ``` Or use it with npx: ```bash npx blockchain-mcp-server ``` ### MCP Configuration Add to your MCP client configuration: ```json { "mcpServers": { "blockchain": { "command": "npx", "args": ["blockchain-mcp-server"] } } } ``` ## License MIT License

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lienhage/blockchain-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server