remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Integrations
Uses Bun as a runtime environment with specific support for installation and running the server with Bun commands.
Provides blockchain services for Ethereum mainnet, allowing AI agents to read blockchain state, check balances, transfer tokens, interact with smart contracts, and resolve ENS names to addresses.
Provides support for the Fantom network, enabling token transfers, balance checks, smart contract interactions, and general blockchain data access on the Fantom chain.
Servidor EVM MCP
Un servidor integral de Protocolo de Contexto de Modelo (MCP) que proporciona servicios de blockchain en múltiples redes compatibles con EVM. Este servidor permite a los agentes de IA interactuar con Ethereum, Optimism, Arbitrum, Base, Polygon y muchas otras cadenas de EVM mediante una interfaz unificada.
📋 Contenido
- Descripción general
- Características
- Redes compatibles
- Prerrequisitos
- Instalación
- Configuración del servidor
- Uso
- Referencia de API
- Consideraciones de seguridad
- Estructura del proyecto
- Desarrollo
- Licencia
🔭 Descripción general
El servidor MCP EVM aprovecha el Protocolo de Contexto de Modelo para proporcionar servicios de blockchain a agentes de IA. Admite una amplia gama de servicios, entre ellos:
- Lectura del estado de la blockchain (saldos, transacciones, bloques, etc.)
- Interactuar con contratos inteligentes
- Transferencia de tokens (nativos, ERC20, ERC721, ERC1155)
- Consulta de metadatos y saldos de tokens
- Servicios específicos de la cadena en más de 30 redes EVM
- Resolución de nombres ENS para todos los parámetros de dirección (use nombres legibles por humanos como 'vitalik.eth' en lugar de direcciones)
Todos los servicios se exponen mediante una interfaz consistente de herramientas y recursos MCP, lo que facilita a los agentes de IA descubrir y utilizar la funcionalidad de la cadena de bloques. Todas las herramientas que aceptan direcciones de Ethereum también admiten nombres ENS , resolviéndolos automáticamente en segundo plano.
✨ Características
Acceso a datos de blockchain
- Compatibilidad con múltiples cadenas para más de 30 redes compatibles con EVM
- Información de la cadena , incluidos blockNumber, chainId y RPC
- Bloquear el acceso a los datos por número, hash o último
- Detalles de transacciones y recibos con registros decodificados
- Saldos de direcciones para tokens nativos y todos los estándares de tokens
- Resolución ENS para direcciones Ethereum legibles por humanos (use 'vitalik.eth' en lugar de '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045')
Servicios de tokens
- Tokens ERC20
- Obtener metadatos del token (nombre, símbolo, decimales, suministro)
- Consultar saldos de tokens
- Transferir tokens entre direcciones
- Aprobar las asignaciones de gastos
- NFT (ERC721)
- Obtener metadatos de colección y token
- Verificar la propiedad del token
- Transferir NFT entre direcciones
- Recuperar URI de tokens y contar existencias
- Tokens múltiples (ERC1155)
- Obtener saldos de tokens y metadatos
- Tokens de transferencia con cantidad
- URI de token de acceso
Interacciones de contratos inteligentes
- Leer el estado del contrato a través de funciones de vista/puras
- Servicios de escritura con firma de clave privada
- Verificación de contratos para distinguirlos de los EOA
- Recuperación y filtrado de registros de eventos
Soporte integral para transacciones
- Transferencias de tokens nativos en todas las redes compatibles
- Estimación de gas para la planificación de transacciones
- Estado de la transacción e información del recibo
- Manejo de errores con mensajes descriptivos
🌐 Redes compatibles
Redes principales
- Ethereum (ETH)
- Optimismo (OP)
- Arbitrum (ARB)
- Arbitrum Nova
- Base
- Polígono (MATIC)
- Polígono zkEVM
- Avalancha (AVAX)
- Cadena inteligente de Binance (BSC)
- Era zkSync
- Línea
- Celo
- Gnosis (xDai)
- Fantom (FTM)
- Filecoin (FIL)
- Rayo de luna
- Río de la luna
- Cronos
- Voluta
- Manto
- Manta
- Explosión
- Fraxtal
- Modo
- Métis
- Croma
- Zora
- Aurora
- Canto
Redes de prueba
- Sepolia
- Optimismo Sepolia
- Arbitrum Sepolia
- Sepolia base
- Polígono Amoy
- Avalancha del Fuji
- Red de pruebas BSC
- zkSync Sepolia
- Línea Sepolia
- Sepolia de pergamino
- Sepolia del manto
- Manta Sepolia
- Sepolia explosiva
- Red de pruebas Fraxtal
- Modo Testnet
- Sepolia mestiza
- Sepolia Kroma
- Zora Sepolia
- Alfajores de Celo
- Goerli
- Holesky
🛠️ Requisitos previos
- Bun 1.0.0 o superior
- Node.js 18.0.0 o superior (si no usa Bun)
📦 Instalación
⚙️ Configuración del servidor
El servidor utiliza la siguiente configuración predeterminada:
- ID de cadena predeterminado : 1 (red principal de Ethereum)
- Puerto del servidor : 3001
- Host del servidor : 0.0.0.0 (accesible desde cualquier interfaz de red)
Estos valores están codificados en la aplicación. Si necesita modificarlos, puede editar los siguientes archivos:
- Para la configuración de la cadena:
src/core/chains.ts
- Para la configuración del servidor:
src/server/http-server.ts
🚀 Uso
Usando npx (No requiere instalación)
Puede ejecutar el servidor MCP EVM directamente sin instalación usando npx:
Ejecución del servidor local
Inicie el servidor usando stdio (para integrar en herramientas CLI):
O inicie el servidor HTTP con SSE para aplicaciones web:
Conectarse al servidor
Conéctese a este servidor MCP mediante cualquier cliente compatible con MCP. Para realizar pruebas y depurar, puede usar el Inspector MCP .
Conectando desde el cursor
Para conectarse al servidor MCP desde Cursor:
- Abra Cursor y vaya a Configuración (ícono de engranaje en la parte inferior izquierda)
- Haga clic en "Funciones" en la barra lateral izquierda.
- Desplácese hacia abajo hasta la sección "Servidores MCP".
- Haga clic en "Agregar nuevo servidor MCP"
- Introduzca los siguientes datos:
- Nombre del servidor:
evm-mcp-server
- Tipo:
command
- Comando:
npx @mcpdotdirect/evm-mcp-server
- Nombre del servidor:
- Haga clic en "Guardar"
Una vez conectado, podrá usar las funciones del servidor MCP directamente desde Cursor. El servidor aparecerá en la lista de servidores MCP y podrá habilitarlo o deshabilitarlo según sea necesario.
Usando mcp.json con Cursor
Para una configuración más portátil que pueda compartir con su equipo o usar en diferentes proyectos, puede crear un archivo .cursor/mcp.json
en el directorio raíz de su proyecto:
Coloque este archivo en el directorio .cursor
de su proyecto (créelo si no existe) y Cursor detectará y usará automáticamente estas configuraciones del servidor MCP al trabajar en ese proyecto. Este enfoque facilita:
- Comparte configuraciones de MCP con tu equipo
- Control de versiones de su configuración de MCP
- Utilice diferentes configuraciones de servidor para diferentes proyectos
Ejemplo: Modo HTTP con SSE
Si está desarrollando una aplicación web y desea conectarse al servidor HTTP con eventos enviados por el servidor (SSE), puede usar esta configuración:
Esto se conecta directamente al punto final SSE del servidor HTTP, lo que resulta útil para:
- Aplicaciones web que necesitan conectarse al servidor MCP desde el navegador
- Entornos donde ejecutar comandos locales no es ideal
- Compartir una única instancia de servidor MCP entre varios usuarios o aplicaciones
Para utilizar esta configuración:
- Crea un directorio
.cursor
en la raíz de tu proyecto si no existe - Guarde el JSON anterior como
mcp.json
en el directorio.cursor
- Reinicie el cursor o abra su proyecto
- El cursor detectará la configuración y ofrecerá habilitar el/los servidor(es)
Ejemplo: Uso del servidor MCP en Cursor
Tras configurar el servidor MCP con mcp.json
, puede usarlo fácilmente en Cursor. A continuación, se muestra un ejemplo de flujo de trabajo:
- Crea un nuevo archivo JavaScript/TypeScript en tu proyecto:
- Con el archivo abierto en Cursor, puedes pedirle a Cursor que:
- Consulta el saldo actual de ETH de vitalik.eth.
- Consulta el precio de USDC en Ethereum.
- "Muéstrame el último bloque sobre optimismo"
- "Comprobar si 0x1234... es una dirección de contrato"
- Cursor utilizará el servidor MCP para ejecutar estas operaciones y devolver los resultados directamente en su conversación.
El servidor MCP maneja toda la comunicación de la cadena de bloques y al mismo tiempo permite que Cursor comprenda y ejecute tareas relacionadas con la cadena de bloques a través del lenguaje natural.
Conexión mediante Claude CLI
Si está utilizando Claude CLI, puede conectarse al servidor MCP con solo dos comandos:
Ejemplo: Obtener un saldo de token con ENS
Ejemplo: Resolución de un nombre ENS
Referencia de API
Herramientas
El servidor proporciona las siguientes herramientas MCP para agentes. Todas las herramientas que aceptan parámetros de dirección admiten tanto direcciones de Ethereum como nombres ENS.
Servicios de tokens
Nombre de la herramienta | Descripción | Parámetros clave |
---|---|---|
get-token-info | Obtener metadatos del token ERC20 | tokenAddress (dirección/ENS), network |
get-token-balance | Consultar el saldo del token ERC20 | tokenAddress (dirección/ENS), ownerAddress (dirección/ENS), network |
transfer-token | Transferir tokens ERC20 | privateKey , tokenAddress (dirección/ENS), toAddress (dirección/ENS), amount , network |
approve-token-spending | Aprobar asignaciones de tokens | privateKey , tokenAddress (dirección/ENS), spenderAddress (dirección/ENS), amount , network |
get-nft-info | Obtener metadatos de NFT | tokenAddress (dirección/ENS), tokenId , network |
check-nft-ownership | Verificar la propiedad del NFT | tokenAddress (dirección/ENS), tokenId , ownerAddress (dirección/ENS), network |
transfer-nft | Transferir un NFT | privateKey , tokenAddress (dirección/ENS), tokenId , toAddress (dirección/ENS), network |
get-nft-balance | Contar los NFT que se poseen | tokenAddress (dirección/ENS), ownerAddress (dirección/ENS), network |
get-erc1155-token-uri | Obtener metadatos de ERC1155 | tokenAddress (dirección/ENS), tokenId , network |
get-erc1155-balance | Consultar saldo ERC1155 | tokenAddress (dirección/ENS), tokenId , ownerAddress (dirección/ENS), network |
transfer-erc1155 | Transferir tokens ERC1155 | privateKey , tokenAddress (dirección/ENS), tokenId , amount , toAddress (dirección/ENS), network |
Servicios de blockchain
Nombre de la herramienta | Descripción | Parámetros clave |
---|---|---|
get-chain-info | Obtener información de la red | network |
get-balance | Obtener saldo de token nativo | address (dirección/ENS), network |
transfer-eth | Enviar tokens nativos | privateKey , to (dirección/ENS), amount , network |
get-transaction | Obtener detalles de la transacción | txHash , network |
read-contract | Leer el estado del contrato inteligente | contractAddress (dirección/ENS), abi , functionName , args , network |
write-contract | Escribir en un contrato inteligente | contractAddress (dirección/ENS), abi , functionName , args , privateKey , network |
is-contract | Comprobar si la dirección es un contrato | address (dirección/ENS), network |
resolve-ens | Resolver el nombre ENS a la dirección | ensName , network |
Recursos
El servidor expone los datos de la cadena de bloques a través de las siguientes URI de recursos MCP. Todas las URI de recursos que aceptan direcciones también admiten nombres ENS, que se resuelven automáticamente en direcciones.
Recursos de blockchain
Patrón de URI de recurso | Descripción |
---|---|
evm://{network}/chain | Información de la cadena para una red específica |
evm://chain | Información sobre la cadena principal de Ethereum |
evm://{network}/block/{blockNumber} | Bloquear datos por número |
evm://{network}/block/latest | Últimos datos de bloque |
evm://{network}/address/{address}/balance | Saldo de tokens nativos |
evm://{network}/tx/{txHash} | Detalles de la transacción |
evm://{network}/tx/{txHash}/receipt | Recibo de transacción con registros |
Recursos de tokens
Patrón de URI de recurso | Descripción |
---|---|
evm://{network}/token/{tokenAddress} | Información del token ERC20 |
evm://{network}/token/{tokenAddress}/balanceOf/{address} | Saldo de tokens ERC20 |
evm://{network}/nft/{tokenAddress}/{tokenId} | Información del token NFT (ERC721) |
evm://{network}/nft/{tokenAddress}/{tokenId}/isOwnedBy/{address} | Verificación de propiedad de NFT |
evm://{network}/erc1155/{tokenAddress}/{tokenId}/uri | URI del token ERC1155 |
evm://{network}/erc1155/{tokenAddress}/{tokenId}/balanceOf/{address} | Saldo del token ERC1155 |
Consideraciones de seguridad
- Las claves privadas se utilizan únicamente para firmar transacciones y nunca las almacena el servidor.
- Considere implementar mecanismos de autenticación adicionales para el uso en producción
- Utilice HTTPS para el servidor HTTP en entornos de producción
- Implementar la limitación de velocidad para evitar el abuso
- Para servicios de alto valor, considere agregar pasos de confirmación
📁 Estructura del proyecto
🛠️ Desarrollo
Para modificar o ampliar el servidor:
- Agregue nuevos servicios en el archivo apropiado en
src/core/services/
- Registrar nuevas herramientas en
src/core/tools.ts
- Registrar nuevos recursos en
src/core/resources.ts
- Agregar nuevo soporte de red en
src/core/chains.ts
- Para cambiar la configuración del servidor, edite los valores codificados en
src/server/http-server.ts
📄 Licencia
Este proyecto está licenciado bajo los términos de la Licencia MIT .
This server cannot be installed
Un servidor integral que permite a los agentes de IA interactuar con múltiples redes blockchain compatibles con EVM a través de una interfaz unificada, que admite la resolución de ENS, operaciones de tokens e interacciones de contratos inteligentes.