Foundry MCP Server

Un servidor MCP ligero para el desarrollo en Solidity que utiliza el conjunto de herramientas Foundry (Forge, Cast y Anvil).

Documentación

Servidor Foundry MCP

Un servidor MCP (Model Context Protocol) simple, ligero y rápido que proporciona capacidades de desarrollo en Solidity utilizando el conjunto de herramientas Foundry (Forge, Cast y Anvil).

Foundry MCP Demo

Descripción general

Este servidor conecta asistentes LLM al ecosistema Foundry, permitiéndoles:

  • Interactuar con nodos (instancias locales de Anvil o endpoints RPC remotos)
  • Analizar contratos inteligentes y datos de blockchain
  • Realizar operaciones EVM comunes usando Cast
  • Gestionar, desplegar y ejecutar código y scripts de Solidity
  • Trabajar con un espacio de trabajo Forge persistente

Características

Interacción con la red

  • Iniciar y gestionar instancias locales de Anvil
  • Conectarse a cualquier red remota (solo especifica el RPC)
  • Obtener información de red/cadena

Interacción con contratos

  • Llamar funciones de contratos (solo lectura)
  • Enviar transacciones a contratos (si PRIVATE_KEY está configurado)
  • Obtener recibos de transacciones
  • Leer almacenamiento de contratos
  • Analizar trazas de transacciones
  • Recuperar ABIs y fuentes de contratos desde exploradores de bloques

Desarrollo en Solidity

  • Mantener un espacio de trabajo Forge dedicado
  • Crear y editar archivos Solidity
  • Instalar dependencias
  • Ejecutar scripts de Forge
  • Desplegar contratos

Funciones de utilidad

  • Calcular direcciones de contratos
  • Verificar el tamaño del bytecode de contratos
  • Estimar costos de gas
  • Convertir entre unidades (hex a decimales, etc.)
  • Generar billeteras
  • Obtener registros de eventos
  • Buscar firmas de funciones y eventos

Análisis de contratos inteligentes (Heimdall)

  • Desensamblar bytecode EVM en opcodes legibles
  • Decodificar calldata crudo sin requerir ABI
  • Descompilar bytecode EVM a código fuente Solidity y ABI
  • Generar gráficos de flujo de control visuales para bytecode EVM
  • Inspección detallada de transacciones con decodificación de calldata y análisis de trazas

Uso

El servidor está diseñado para usarse como proveedor de herramientas MCP para clientes MCP. Cuando está conectado a un cliente, permite que los clientes (Claude Desktop, Cursor, client, etc.) realicen operaciones de Solidity y onchain directamente.

Requisitos

Configuración manual

  1. Asegúrate de que las herramientas Foundry (Forge, Cast, Anvil) estén instaladas en tu sistema:

    curl -L https://foundry.paradigm.xyz | bash
    foundryup
    
  2. Clona y compila el servidor.

    bun i && bun build ./src/index.ts --outdir ./dist --target node
    
    
  3. Update your client config (eg: Claude desktop):

 "mcpServers": {
    "foundry": {
      "command": "node",
      "args": [
        "path/to/foundry-mcp-server/dist/index.js"
      ],
      "env" :{
        "PRIVATE_KEY": "0x1234",
      }
    }
 }

[!NOTE] PRIVATE_KEY es opcional

Configuración usando paquete NPM

Ahora puedes instalar y ejecutar el servidor directamente usando npm:

Instalación global

npm install -g @pranesh.asp/foundry-mcp-server

Uso directo con npx

npx @pranesh.asp/foundry-mcp-server

Configuración del cliente MCP

Claude Code

 claude mcp add-json foundry-mcp-server '{"type":"stdio","command":"npx","args":["@pranesh.asp/foundry-mcp-server"],"env":{"RPC_URL":"","PRIVATE_KEY":""}}'   

Otros clientes MCP (Cursor, Claude, Windsurf)

Agrega a tu configuración MCP:

{
  "mcpServers": {
    "foundry": {
      "command": "npx",
      "args": ["@pranesh.asp/foundry-mcp-server"],
      "env": {
        "RPC_URL": "http://localhost:8545",
        "PRIVATE_KEY": "0x..."
      }
    }
  }
}

Configuración

El servidor admite las siguientes variables de entorno:

  • RPC_URL: URL RPC predeterminada para usar cuando no se especifica ninguna (opcional)
  • PRIVATE_KEY: Clave privada para usar en transacciones (opcional)

[!CAUTION] No agregues claves con fondos de mainnet. Aunque el código la usa de forma segura, los LLM pueden alucinar y enviar transacciones maliciosas. Úsala solo para fines de prueba/desarrollo. ¡NO confíes en el LLM!

[!TIP] ¿Tienes errores de Invalid configuration? Verifica tu sintaxis JSON: los problemas comunes incluyen comillas dobles (""KEY""KEY"), comas finales o claves sin comillas. Valida con echo '...' | jq .

Espacio de trabajo

El servidor mantiene un espacio de trabajo Forge persistente en ~/.mcp-foundry-workspace para todos los archivos Solidity, scripts y dependencias.

Herramientas

Anvil

  • anvil_start: Iniciar una nueva instancia de Anvil
  • anvil_stop: Detener una instancia de Anvil en ejecución
  • anvil_status: Verificar si Anvil está en ejecución y obtener su estado

Cast

  • cast_call: Llamar una función de contrato (solo lectura)
  • cast_send: Enviar una transacción a una función de contrato
  • cast_balance: Verificar el saldo ETH de una dirección
  • cast_receipt: Obtener el recibo de la transacción
  • cast_storage: Leer almacenamiento de contrato en una ranura específica
  • cast_run: Ejecutar una transacción publicada en un entorno local
  • cast_logs: Obtener registros por firma o tema
  • cast_sig: Obtener el selector para una firma de función o evento
  • cast_4byte: Buscar firma de función o evento desde el directorio 4byte
  • cast_chain: Obtener información sobre la cadena actual

Forge

  • forge_script: Ejecutar un script de Forge desde el espacio de trabajo
  • install_dependency: Instalar una dependencia para el espacio de trabajo Forge

Gestión de archivos

  • create_solidity_file: Crear o actualizar un archivo Solidity en el espacio de trabajo
  • read_file: Leer el contenido de un archivo del espacio de trabajo
  • list_files: Listar archivos en el espacio de trabajo

Utilidades

  • convert_eth_units: Convertir entre unidades EVM (wei, gwei, hex)
  • compute_address: Calcular la dirección de un contrato que se desplegaría
  • contract_size: Obtener el tamaño del bytecode de un contrato desplegado
  • estimate_gas: Estimar el costo de gas de una transacción

Análisis Heimdall

  • heimdall_disassemble: Desensamblar bytecode EVM en opcodes legibles
  • heimdall_decode: Decodificar calldata crudo sin requerir ABI
  • heimdall_decompile: Descompilar bytecode EVM a código fuente Solidity y ABI
  • heimdall_cfg: Generar gráfico de flujo de control visual para bytecode EVM
  • heimdall_inspect: Inspección detallada de transacciones de Ethereum

Uso en la aplicación de escritorio Claude 🎯

Una vez completada la instalación y configurada la aplicación de escritorio Claude, debes cerrar y reabrir completamente la aplicación de escritorio Claude para ver el servidor tavily-mcp. Deberías ver un ícono de martillo en la parte inferior izquierda de la aplicación, que indica las herramientas MCP disponibles; puedes hacer clic en el ícono de martillo para ver más detalles sobre las herramientas disponibles.

Alt text

Ahora Claude tendrá acceso completo al servidor foundry-mcp. Si insertas los siguientes ejemplos en la aplicación de escritorio Claude, deberías ver las herramientas del servidor foundry-mcp en acción.

Ejemplos

  1. Análisis de transacciones:
Can you analyze the transaction and explain what it does? 
https://etherscan.io/tx/0xcb73ad3116f19358e2e649d4dc801b7ae0590a47b8bb2e57a8e98b6daa5fb14b
  1. Consulta de saldos:
Query the mainnet ETH and USDT balances for the wallet 0x195F46025a6926968a1b3275822096eB12D97E70.
  1. Envío de transacciones:
Transfer 0.5 USDC to 0x195F46025a6926968a1b3275822096eB12D97E70 on Mainnet. 
  1. Despliegue de contratos/Ejecución de scripts:
Deploy a mock ERC20 contract to a local anvil instance and name it "Fire Coin".

Agradecimientos ✨

Aviso legal

El software se proporciona tal cual. No se ofrece ninguna garantía, representación o garantía, expresa o implícita, sobre la seguridad o corrección del software. No ha sido auditado y, por lo tanto, no se puede garantizar que funcione como se espera, y los usuarios pueden experimentar retrasos, fallos, errores, omisiones, pérdida de información transmitida o pérdida de fondos. Los creadores no son responsables de lo anterior. Los usuarios deben proceder con precaución y usarlo bajo su propio riesgo.