Blockchain MCP Server

Um servidor para interações com blockchain, oferecendo geração de endereços vanity Ethereum, consulta 4byte, codificação ABI e chamadas RPC multi-chain.

Documentação

Blockchain MCP Server

Um servidor de ferramentas blockchain baseado no Model Context Protocol (MCP) que fornece geração de endereços Ethereum vanity e funcionalidade de comandos Cast.

Recursos

1. Geração de Endereço Ethereum Vanity

  • 🎯 Suporte para especificar prefixo e sufixo do endereço
  • ⚡ Computação concorrente multi-thread para desempenho otimizado
  • 📊 Exibição de estatísticas de geração em tempo real
  • ✅ Verificação de validade do endereço

2. Ferramentas de Comando Cast

  • 🔍 4byte: Obter assinaturas de função a partir de seletores de função
  • 🔧 4byte-decode: Decodificar calldata codificado em ABI
  • 📦 abi-encode: Codificar parâmetros de função em ABI
  • 🔄 abi-decode: Decodificar dados ABI

3. Serviço RPC

  • 📞 static-call: Fazer chamadas estáticas em qualquer chain compatível com EVM (somente leitura)
  • 💸 send-transaction: Enviar transações para contratos inteligentes (requer chave privada)
  • 💰 get-balance: Consultar saldo de endereço
  • 🔗 list-chains: Listar chains suportadas

Instalação e Uso

Instalar Dependências

npm install

Compilar Projeto

npm run build

Executar Servidor

npm start

Modo de Desenvolvimento

npm run dev

Guia de Uso das Ferramentas

Geração de Endereço Vanity

generate-vanity-address

Gere endereços Ethereum que correspondam às condições especificadas

Parâmetros:

  • prefix (opcional): Prefixo do endereço, excluindo 0x
  • suffix (opcional): Sufixo do endereço
  • workers (opcional): Número de threads concorrentes, padrão 4, máximo 16
  • caseSensitive (opcional): Se diferencia maiúsculas de minúsculas, padrão falso

Exemplo:

{
  "prefix": "1234",
  "suffix": "abcd",
  "workers": 8,
  "caseSensitive": false
}

validate-ethereum-address

Valide a validade do endereço Ethereum

Parâmetros:

  • address: Endereço Ethereum para validar

Ferramentas de Comando Cast

4byte

Obter assinaturas de função para o seletor fornecido

Parâmetros:

  • selector: Seletor de função de 4 bytes (hexadecimal)

Exemplo:

{
  "selector": "0xa9059cbb"
}

4byte-decode

Decodificar calldata codificado em ABI

Parâmetros:

  • calldata: Calldata codificado em ABI (hexadecimal)

Exemplo:

{
  "calldata": "0xa9059cbb000000000000000000000000..."
}

abi-encode

Codificar parâmetros de função em ABI

Parâmetros:

  • types: Matriz de tipos de parâmetros
  • values: Matriz de valores de parâmetros

Exemplo:

{
  "types": ["uint256", "address", "bool"],
  "values": [1000, "0x1234567890123456789012345678901234567890", true]
}

abi-encode-with-signature

Codificação ABI completa de chamada de função (com seletor de função)

Parâmetros:

  • functionSignature: Assinatura da função
  • values: Matriz de valores de parâmetros

Exemplo:

{
  "functionSignature": "transfer(address,uint256)",
  "values": ["0x1234567890123456789012345678901234567890", 1000]
}

abi-decode

Decodificar dados codificados em ABI

Parâmetros:

  • types: Matriz de tipos de parâmetros
  • data: Dados hexadecimais para decodificar

Exemplo:

{
  "types": ["uint256", "address"],
  "data": "0x00000000000000000000000000000000000000000000000000000000000003e8"
}

Ferramentas de Serviço RPC

list-chains

Listar todas as chains compatíveis com EVM suportadas

Parâmetros: Nenhum

get-balance

Consultar saldo de endereço na chain especificada

Parâmetros:

  • chain: Identificador da chain (ex.: "ethereum", "polygon", "bsc")
  • address: Endereço para consultar
  • blockTag (opcional): Tag de bloco, padrão "latest"

Exemplo:

{
  "chain": "ethereum",
  "address": "0x1234567890123456789012345678901234567890"
}

static-call

Fazer chamadas estáticas para contratos inteligentes (operações somente leitura)

Parâmetros:

  • chain: Identificador da chain
  • to: Endereço do contrato
  • data: Dados de chamada de função codificados em ABI
  • blockTag (opcional): Tag de bloco, padrão "latest"

Exemplo:

{
  "chain": "ethereum",
  "to": "0xA0b86a33E6441068C73f4Ea6cB24b80b52bF97F4",
  "data": "0x70a08231000000000000000000000000123456789012345678901234567890123456789"
}

send-transaction

Enviar transações para contratos inteligentes (requer chave privada)

Parâmetros:

  • chain: Identificador da chain
  • to: Endereço do contrato
  • data: Dados de chamada de função codificados em ABI
  • value (opcional): Quantidade de ETH a enviar (wei)
  • gasLimit (opcional): Limite de gás
  • gasPrice (opcional): Preço do gás (wei)
  • privateKey: Chave privada do remetente

Exemplo:

{
  "chain": "sepolia",
  "to": "0x1234567890123456789012345678901234567890",
  "data": "0xa9059cbb000000000000000000000000...",
  "value": "0",
  "privateKey": "0x..."
}

Otimização de Desempenho

Dicas de Desempenho para Geração de Endereço Vanity

  • Prefixos mais curtos geram mais rápido
  • Sufixos são ligeiramente mais fáceis que prefixos
  • Recomenda-se usar 4-8 threads de trabalho para desempenho ideal
  • Evite especificar simultaneamente um prefixo longo e um sufixo longo

Tempo de Geração Esperado

  • 4 caracteres hexadecimais: segundos a minutos
  • 5 caracteres hexadecimais: minutos a dezenas de minutos
  • 6 caracteres hexadecimais: horas
  • 7+ caracteres: pode levar muito tempo

Redes Blockchain Suportadas

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)

Todas as redes usam endpoints RPC públicos para garantir estabilidade e acessibilidade.

Pilha Tecnológica

  • TypeScript: JavaScript com tipagem segura
  • MCP SDK: Implementação do Model Context Protocol
  • Ethers.js: Biblioteca Ethereum
  • Node.js Worker Threads: Computação concorrente multi-thread
  • 4byte.directory API: Banco de dados de assinaturas de função

Considerações de Segurança

⚠️ Notas Importantes:

  • Chaves privadas geradas têm controle total sobre os ativos
  • Sempre mantenha as chaves privadas seguras e nunca as compartilhe com ninguém
  • Recomenda-se gerar endereços importantes em ambientes offline
  • Esta ferramenta é apenas para fins de aprendizado e teste

Instalação via NPM

Você pode instalar este servidor MCP globalmente:

npm install -g blockchain-mcp-server

Ou usá-lo com npx:

npx blockchain-mcp-server

Configuração MCP

Adicione à configuração do seu cliente MCP:

{
  "mcpServers": {
    "blockchain": {
      "command": "npx",
      "args": ["blockchain-mcp-server"]
    }
  }
}

Licença

MIT License