Skip to main content
Glama

EVM MCP Server

by chulanpro5

EVM MCP 서버

라이센스: MITEVM 네트워크타입스크립트비엠

여러 EVM 호환 네트워크에서 블록체인 서비스를 제공하는 포괄적인 모델 컨텍스트 프로토콜(MCP) 서버입니다. 이 서버를 통해 AI 에이전트는 통합 인터페이스를 통해 이더리움, 옵티미즘, 아비트럼, 베이스, 폴리곤 및 기타 여러 EVM 체인과 상호 작용할 수 있습니다.

📋 목차

🔭 개요

MCP EVM 서버는 모델 컨텍스트 프로토콜(Model Context Protocol)을 활용하여 AI 에이전트에 블록체인 서비스를 제공합니다. 다음을 포함한 다양한 서비스를 지원합니다.

  • 블록체인 상태(잔액, 거래, 블록 등) 읽기
  • 스마트 계약과 상호 작용
  • 토큰 전송(네이티브, ERC20, ERC721, ERC1155)
  • 토큰 메타데이터 및 잔액 쿼리
  • 30개 이상의 EVM 네트워크에 걸친 체인별 서비스
  • 모든 주소 매개변수에 대한 ENS 이름 확인 (주소 대신 'vitalik.eth'와 같은 사람이 읽을 수 있는 이름 사용)

모든 서비스는 일관된 MCP 도구 및 리소스 인터페이스를 통해 제공되므로 AI 에이전트가 블록체인 기능을 쉽게 발견하고 사용할 수 있습니다. 이더리움 주소를 허용하는 모든 도구는 ENS 이름도 지원하여 자동으로 해당 이름을 백엔드 주소로 변환합니다.

✨ 특징

블록체인 데이터 액세스

  • 30개 이상의 EVM 호환 네트워크에 대한 멀티체인 지원
  • 블록 번호, 체인 ID 및 RPC를 포함한 체인 정보
  • 숫자, 해시 또는 최신으로 데이터 액세스 차단
  • 디코딩된 로그가 포함된 거래 세부 정보 및 영수증
  • 네이티브 토큰 및 모든 토큰 표준에 대한 주소 잔액
  • 사람이 읽을 수 있는 Ethereum 주소에 대한 ENS 해상도 ('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' 대신 'vitalik.eth' 사용)

토큰 서비스

  • ERC20 토큰
    • 토큰 메타데이터(이름, 기호, 소수점, 공급) 가져오기
    • 토큰 잔액 확인
    • 주소 간 토큰 전송
    • 지출 허용액 승인
  • NFT(ERC721)
    • 컬렉션 및 토큰 메타데이터 가져오기
    • 토큰 소유권 확인
    • 주소 간 NFT 전송
    • 토큰 URI 검색 및 보유량 계산
  • 멀티 토큰(ERC1155)
    • 토큰 잔액 및 메타데이터 가져오기
    • 수량별 토큰 전송
    • 액세스 토큰 URI

스마트 계약 상호 작용

  • view/pure 함수를 통해 계약 상태 읽기
  • 개인 키 서명으로 서비스 작성
  • EOA와 구별하기 위한 계약 검증
  • 이벤트 로그 검색 및 필터링

포괄적인 거래 지원

  • 지원되는 모든 네트워크에서 기본 토큰 전송
  • 거래 계획을 위한 가스 추정
  • 거래 상태 및 영수증 정보
  • 설명 메시지를 통한 오류 처리

🌐 지원 네트워크

메인넷

  • 이더리움(ETH)
  • 낙관주의(OP)
  • 아르비트룸(ARB)
  • 아르비트룸 노바
  • 베이스
  • 폴리곤(MATIC)
  • 폴리곤 zkEVM
  • 애벌랜치(AVAX)
  • 바이낸스 스마트 체인(BSC)
  • zkSync 시대
  • 리네아
  • 셀로
  • 영지(xDai)
  • 팬텀(FTM)
  • 파일코인(FIL)
  • 문빔
  • 문리버
  • 크로노스
  • 스크롤
  • 맨틀
  • 만타
  • 폭발
  • 프락스탈
  • 방법
  • 혼혈아
  • 크로마
  • 조라
  • 오로라

테스트넷

  • 세폴리아
  • 낙관주의 세폴리아
  • 아르비트룸 세폴리아
  • 베이스 세폴리아
  • 폴리곤 아모이
  • 눈사태 후지
  • BSC 테스트넷
  • zkSync 세폴리아
  • 리네아 세폴리아
  • 스크롤 세폴리아
  • 맨틀 세폴리아
  • 만타 세폴리아
  • 블라스트 세폴리아
  • 프랙탈 테스트넷
  • 모드 테스트넷
  • 메티스 세폴리아
  • 크로마 세폴리아
  • 조라 세폴리아
  • 셀로 알파호레스
  • 고를리
  • 홀레스키

🛠️ 필수 조건

  • Bun 1.0.0 이상
  • Node.js 18.0.0 이상(Bun을 사용하지 않는 경우)

📦 설치

지엑스피1

⚙️ 서버 구성

서버는 다음과 같은 기본 구성을 사용합니다.

  • 기본 체인 ID : 1 (이더리움 메인넷)
  • 서버 포트 : 3001
  • 서버 호스트 : 0.0.0.0(모든 네트워크 인터페이스에서 접근 가능)

이러한 값은 애플리케이션에 하드코딩되어 있습니다. 수정해야 하는 경우 다음 파일을 편집할 수 있습니다.

  • 체인 구성: src/core/chains.ts
  • 서버 구성: src/server/http-server.ts

🚀 사용법

npx 사용(설치 필요 없음)

npx를 사용하면 설치 없이 MCP EVM 서버를 직접 실행할 수 있습니다.

# Run the server in stdio mode (for CLI tools) npx @mcpdotdirect/evm-mcp-server # Run the server in HTTP mode (for web applications) npx @mcpdotdirect/evm-mcp-server --http

로컬에서 서버 실행

stdio를 사용하여 서버를 시작합니다(CLI 도구에 내장하기 위해):

# Start the stdio server bun start # Development mode with auto-reload bun dev

또는 웹 애플리케이션을 위해 SSE로 HTTP 서버를 시작합니다.

# Start the HTTP server bun start:http # Development mode with auto-reload bun dev:http

서버에 연결

MCP 호환 클라이언트를 사용하여 이 MCP 서버에 연결하세요. 테스트 및 디버깅에는 MCP Inspector를 사용할 수 있습니다.

커서에서 연결

Cursor에서 MCP 서버에 연결하려면:

  1. 커서를 열고 설정(왼쪽 하단의 기어 아이콘)으로 이동하세요.
  2. 왼쪽 사이드바에서 "기능"을 클릭하세요
  3. "MCP 서버" 섹션까지 아래로 스크롤하세요.
  4. "새 MCP 서버 추가"를 클릭하세요.
  5. 다음 세부 정보를 입력하세요.
    • 서버 이름: evm-mcp-server
    • 유형: command
    • 명령어: npx @mcpdotdirect/evm-mcp-server
  6. "저장"을 클릭하세요

연결되면 Cursor 내에서 MCP 서버의 기능을 직접 사용할 수 있습니다. 서버는 MCP 서버 목록에 나타나며 필요에 따라 활성화/비활성화할 수 있습니다.

Cursor와 함께 mcp.json 사용

팀과 공유하거나 여러 프로젝트에서 사용할 수 있는 휴대성이 뛰어난 구성을 원하시면 프로젝트의 루트 디렉토리에 .cursor/mcp.json 파일을 만드세요.

{ "mcpServers": { "evm-mcp-server": { "command": "npx", "args": ["-y", "@mcpdotdirect/evm-mcp-server"] }, "evm-mcp-http": { "command": "npx", "args": ["-y", "@mcpdotdirect/evm-mcp-server", "--http"] } } }

이 파일을 프로젝트의 .cursor 디렉터리에 넣으세요(없으면 새로 만드세요). 그러면 Cursor가 해당 프로젝트에서 작업할 때 이러한 MCP 서버 구성을 자동으로 감지하여 사용합니다. 이렇게 하면 다음 작업을 쉽게 수행할 수 있습니다.

  1. 팀과 MCP 구성을 공유하세요
  2. MCP 설정 버전 제어
  3. 다양한 프로젝트에 대해 다른 서버 구성을 사용하세요

예: SSE를 사용한 HTTP 모드

웹 애플리케이션을 개발 중이고 SSE(Server-Sent Events)를 통해 HTTP 서버에 연결하려는 경우 다음 구성을 사용할 수 있습니다.

{ "mcpServers": { "evm-mcp-sse": { "url": "http://localhost:3001/sse" } } }

이는 HTTP 서버의 SSE 엔드포인트에 직접 연결되며, 다음과 같은 경우에 유용합니다.

  • 브라우저에서 MCP 서버에 연결해야 하는 웹 애플리케이션
  • 로컬 명령을 실행하는 것이 이상적이지 않은 환경
  • 여러 사용자 또는 애플리케이션 간에 단일 MCP 서버 인스턴스 공유

이 구성을 사용하려면:

  1. 프로젝트 루트에 .cursor 디렉토리가 없으면 생성하세요.
  2. 위의 JSON을 .cursor 디렉토리에 mcp.json 으로 저장합니다.
  3. 커서를 다시 시작하거나 프로젝트를 엽니다.
  4. 커서는 구성을 감지하고 서버를 활성화하도록 제안합니다.

예: 커서에서 MCP 서버 사용

mcp.json 으로 MCP 서버를 구성하면 Cursor에서 쉽게 사용할 수 있습니다. 다음은 워크플로 예시입니다.

  1. 프로젝트에 새로운 JavaScript/TypeScript 파일을 만듭니다.
// blockchain-example.js async function main() { try { // Get ETH balance for an address using ENS console.log("Getting ETH balance for vitalik.eth..."); // When using with Cursor, you can simply ask Cursor to: // "Check the ETH balance of vitalik.eth on mainnet" // Or "Transfer 0.1 ETH from my wallet to vitalik.eth" // Cursor will use the MCP server to execute these operations // without requiring any additional code from you // This is the power of the MCP integration - your AI assistant // can directly interact with blockchain data and operations } catch (error) { console.error("Error:", error.message); } } main();
  1. Cursor에서 파일을 열어 놓으면 Cursor에 다음 작업을 요청할 수 있습니다.
    • "vitalik.eth의 현재 ETH 잔액을 확인하세요"
    • "이더리움에서 USDC 가격을 찾아보세요"
    • "Optimism의 최신 블록을 보여주세요"
    • "0x1234...가 계약 주소인지 확인하세요"
  2. 커서는 MCP 서버를 사용하여 이러한 작업을 실행하고 대화에서 직접 결과를 반환합니다.

MCP 서버는 모든 블록체인 통신을 처리하고, Cursor가 자연어를 통해 블록체인 관련 작업을 이해하고 실행할 수 있도록 합니다.

Claude CLI를 사용하여 연결

Claude CLI를 사용하는 경우 다음 두 가지 명령만으로 MCP 서버에 연결할 수 있습니다.

# Add the MCP server claude mcp add evm-mcp-server npx @mcpdotdirect/evm-mcp-server # Start Claude with the MCP server enabled claude

예: ENS를 사용하여 토큰 잔액 얻기

// Example of using the MCP client to check a token balance using ENS const mcp = new McpClient("http://localhost:3000"); const result = await mcp.invokeTool("get-token-balance", { tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC on Ethereum ownerAddress: "vitalik.eth", // ENS name instead of address network: "ethereum", }); console.log(result); // { // tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // owner: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", // network: "ethereum", // raw: "1000000000", // formatted: "1000", // symbol: "USDC", // decimals: 6 // }

예: ENS 이름 확인

// Example of using the MCP client to resolve an ENS name to an address const mcp = new McpClient("http://localhost:3000"); const result = await mcp.invokeTool("resolve-ens", { ensName: "vitalik.eth", network: "ethereum", }); console.log(result); // { // ensName: "vitalik.eth", // normalizedName: "vitalik.eth", // resolvedAddress: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045", // network: "ethereum" // }

📚 API 참조

도구

서버는 에이전트를 위해 다음과 같은 MCP 도구를 제공합니다. 주소 매개변수를 허용하는 모든 도구는 이더리움 주소와 ENS 이름을 모두 지원합니다.

토큰 서비스
도구 이름설명주요 매개변수
get-token-infoERC20 토큰 메타데이터 가져오기tokenAddress (주소/ENS), network
get-token-balanceERC20 토큰 잔액 확인tokenAddress (주소/ENS), ownerAddress (주소/ENS), network
transfer-tokenERC20 토큰 전송privateKey , tokenAddress (주소/ENS), toAddress (주소/ENS), amount , network
approve-token-spending토큰 허용 승인privateKey , tokenAddress (주소/ENS), spenderAddress (주소/ENS), amount , network
get-nft-infoNFT 메타데이터 가져오기tokenAddress (주소/ENS), tokenId , network
check-nft-ownershipNFT 소유권 확인tokenAddress (주소/ENS), tokenId , ownerAddress (주소/ENS), network
transfer-nftNFT 전송privateKey , tokenAddress (주소/ENS), tokenId , toAddress (주소/ENS), network
get-nft-balance소유한 NFT 수 계산tokenAddress (주소/ENS), ownerAddress (주소/ENS), network
get-erc1155-token-uriERC1155 메타데이터 가져오기tokenAddress (주소/ENS), tokenId , network
get-erc1155-balanceERC1155 잔액 확인tokenAddress (주소/ENS), tokenId , ownerAddress (주소/ENS), network
transfer-erc1155ERC1155 토큰 전송privateKey , tokenAddress (주소/ENS), tokenId , amount , toAddress (주소/ENS), network
블록체인 서비스
도구 이름설명주요 매개변수
get-chain-info네트워크 정보 가져오기network
get-balance네이티브 토큰 잔액을 얻으세요address (주소/ENS), network
transfer-eth네이티브 토큰 보내기privateKey , ( to /ENS), amount , network
get-transaction거래 세부 정보 받기txHash , network
read-contract스마트 계약 상태 읽기contractAddress (주소/ENS), abi , functionName , args , network
write-contract스마트 계약에 쓰기contractAddress (주소/ENS), abi , functionName , args , privateKey , network
is-contract주소가 계약서인지 확인하세요address (주소/ENS), network
resolve-ensENS 이름을 주소로 확인ensName , network

자원

서버는 다음 MCP 리소스 URI를 통해 블록체인 데이터를 노출합니다. 주소를 허용하는 모든 리소스 URI는 ENS 이름도 지원하며, 이 이름은 자동으로 주소로 변환됩니다.

블록체인 리소스
리소스 URI 패턴설명
evm://{network}/chain특정 네트워크에 대한 체인 정보
evm://chain이더리움 메인넷 체인 정보
evm://{network}/block/{blockNumber}숫자로 블록 데이터
evm://{network}/block/latest최신 블록 데이터
evm://{network}/address/{address}/balance네이티브 토큰 잔액
evm://{network}/tx/{txHash}거래 세부 정보
evm://{network}/tx/{txHash}/receipt로그가 포함된 거래 영수증
토큰 리소스
리소스 URI 패턴설명
evm://{network}/token/{tokenAddress}ERC20 토큰 정보
evm://{network}/token/{tokenAddress}/balanceOf/{address}ERC20 토큰 잔액
evm://{network}/nft/{tokenAddress}/{tokenId}NFT(ERC721) 토큰 정보
evm://{network}/nft/{tokenAddress}/{tokenId}/isOwnedBy/{address}NFT 소유권 검증
evm://{network}/erc1155/{tokenAddress}/{tokenId}/uriERC1155 토큰 URI
evm://{network}/erc1155/{tokenAddress}/{tokenId}/balanceOf/{address}ERC1155 토큰 잔액

🔒 보안 고려 사항

  • 개인 키는 거래 서명에만 사용되며 서버에 저장되지 않습니다.
  • 프로덕션 사용을 위해 추가 인증 메커니즘 구현을 고려하세요.
  • 프로덕션 환경에서 HTTP 서버에 HTTPS를 사용하세요
  • 남용을 방지하기 위해 속도 제한을 구현하세요
  • 고가치 서비스의 경우 확인 단계를 추가하는 것을 고려하세요.

📁 프로젝트 구조

mcp-evm-server/ ├── src/ │ ├── index.ts # Main stdio server entry point │ ├── server/ # Server-related files │ │ ├── http-server.ts # HTTP server with SSE │ │ └── server.ts # General server setup │ ├── core/ │ │ ├── chains.ts # Chain definitions and utilities │ │ ├── resources.ts # MCP resources implementation │ │ ├── tools.ts # MCP tools implementation │ │ ├── prompts.ts # MCP prompts implementation │ │ └── services/ # Core blockchain services │ │ ├── index.ts # Operation exports │ │ ├── balance.ts # Balance services │ │ ├── transfer.ts # Token transfer services │ │ ├── utils.ts # Utility functions │ │ ├── tokens.ts # Token metadata services │ │ ├── contracts.ts # Contract interactions │ │ ├── transactions.ts # Transaction services │ │ └── blocks.ts # Block services │ │ └── clients.ts # RPC client utilities ├── package.json ├── tsconfig.json └── README.md

🛠️ 개발

서버를 수정하거나 확장하려면:

  1. src/core/services/ 아래의 적절한 파일에 새로운 서비스를 추가합니다.
  2. src/core/tools.ts 에 새로운 도구를 등록합니다.
  3. src/core/resources.ts 에 새로운 리소스를 등록합니다.
  4. src/core/chains.ts 에 새로운 네트워크 지원을 추가합니다.
  5. 서버 구성을 변경하려면 src/server/http-server.ts 에 있는 하드코딩된 값을 편집하세요.

📄 라이센스

이 프로젝트는 MIT 라이선스 조건에 따라 라이선스가 부여되었습니다.

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    Provides tools for AI assistants to interact with the Ethereum blockchain through standard JSON-RPC methods, enabling queries for account balances, gas prices, and smart contract code.
    Last updated -
    6
    8
    JavaScript
    MIT License
  • -
    security
    A
    license
    -
    quality
    A comprehensive toolkit for building AI agents with blockchain capabilities, enabling interactions with multiple blockchain networks for tasks like wallet management, fund transfers, smart contract interactions, and cross-chain asset bridging.
    Last updated -
    3
    TypeScript
    GPL 3.0
    • Linux
    • Apple
  • A
    security
    A
    license
    A
    quality
    A Model Context Protocol server that enables AI agents to interact with 30+ Ethereum-compatible blockchain networks, providing services like token transfers, contract interactions, and ENS resolution through a unified interface.
    Last updated -
    28
    613
    301
    TypeScript
    MIT License
  • A
    security
    A
    license
    A
    quality
    A comprehensive Model Context Protocol server that enables AI agents to interact with Starknet blockchain, query data, manage wallets, and work with smart contracts.
    Last updated -
    25
    428
    4
    TypeScript
    MIT License

View all related MCP servers

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/chulanpro5/evm-mcp-server'

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