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
Supports running the MCP server with Bun runtime, enabling faster execution and modern JavaScript features.
Provides comprehensive blockchain services including reading state, transferring tokens, querying balances, and interacting with smart contracts on the Ethereum mainnet.
Supports interaction with the Fantom blockchain, including native token transfers, balance checking, and smart contract operations.
EVM MCP 서버
여러 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 서버를 직접 실행할 수 있습니다.
로컬에서 서버 실행
stdio를 사용하여 서버를 시작합니다(CLI 도구에 내장하기 위해):
또는 웹 애플리케이션을 위해 SSE로 HTTP 서버를 시작합니다.
서버에 연결
MCP 호환 클라이언트를 사용하여 이 MCP 서버에 연결하세요. 테스트 및 디버깅에는 MCP Inspector를 사용할 수 있습니다.
커서에서 연결
Cursor에서 MCP 서버에 연결하려면:
- 커서를 열고 설정(왼쪽 하단의 기어 아이콘)으로 이동하세요.
- 왼쪽 사이드바에서 "기능"을 클릭하세요
- "MCP 서버" 섹션까지 아래로 스크롤하세요.
- "새 MCP 서버 추가"를 클릭하세요.
- 다음 세부 정보를 입력하세요.
- 서버 이름:
evm-mcp-server
- 유형:
command
- 명령어:
npx @mcpdotdirect/evm-mcp-server
- 서버 이름:
- "저장"을 클릭하세요
연결되면 Cursor 내에서 MCP 서버의 기능을 직접 사용할 수 있습니다. 서버는 MCP 서버 목록에 나타나며 필요에 따라 활성화/비활성화할 수 있습니다.
Cursor와 함께 mcp.json 사용
팀과 공유하거나 여러 프로젝트에서 사용할 수 있는 휴대성이 뛰어난 구성을 원하시면 프로젝트의 루트 디렉토리에 .cursor/mcp.json
파일을 만드세요.
이 파일을 프로젝트의 .cursor
디렉터리에 넣으세요(없으면 새로 만드세요). 그러면 Cursor가 해당 프로젝트에서 작업할 때 이러한 MCP 서버 구성을 자동으로 감지하여 사용합니다. 이렇게 하면 다음 작업을 쉽게 수행할 수 있습니다.
- 팀과 MCP 구성을 공유하세요
- MCP 설정 버전 제어
- 다양한 프로젝트에 대해 다른 서버 구성을 사용하세요
예: SSE를 사용한 HTTP 모드
웹 애플리케이션을 개발 중이고 SSE(Server-Sent Events)를 통해 HTTP 서버에 연결하려는 경우 다음 구성을 사용할 수 있습니다.
이는 HTTP 서버의 SSE 엔드포인트에 직접 연결되며, 다음과 같은 경우에 유용합니다.
- 브라우저에서 MCP 서버에 연결해야 하는 웹 애플리케이션
- 로컬 명령을 실행하는 것이 이상적이지 않은 환경
- 여러 사용자 또는 애플리케이션 간에 단일 MCP 서버 인스턴스 공유
이 구성을 사용하려면:
- 프로젝트 루트에
.cursor
디렉토리가 없으면 생성하세요. - 위의 JSON을
.cursor
디렉토리에mcp.json
으로 저장합니다. - 커서를 다시 시작하거나 프로젝트를 엽니다.
- 커서는 구성을 감지하고 서버를 활성화하도록 제안합니다.
예: 커서에서 MCP 서버 사용
mcp.json
으로 MCP 서버를 구성하면 Cursor에서 쉽게 사용할 수 있습니다. 다음은 워크플로 예시입니다.
- 프로젝트에 새로운 JavaScript/TypeScript 파일을 만듭니다.
- Cursor에서 파일을 열어 놓으면 Cursor에 다음 작업을 요청할 수 있습니다.
- "vitalik.eth의 현재 ETH 잔액을 확인하세요"
- "이더리움에서 USDC 가격을 찾아보세요"
- "Optimism의 최신 블록을 보여주세요"
- "0x1234...가 계약 주소인지 확인하세요"
- 커서는 MCP 서버를 사용하여 이러한 작업을 실행하고 대화에서 직접 결과를 반환합니다.
MCP 서버는 모든 블록체인 통신을 처리하고, Cursor가 자연어를 통해 블록체인 관련 작업을 이해하고 실행할 수 있도록 합니다.
Claude CLI를 사용하여 연결
Claude CLI를 사용하는 경우 다음 두 가지 명령만으로 MCP 서버에 연결할 수 있습니다.
예: ENS를 사용하여 토큰 잔액 얻기
예: ENS 이름 확인
📚 API 참조
도구
서버는 에이전트를 위해 다음과 같은 MCP 도구를 제공합니다. 주소 매개변수를 허용하는 모든 도구는 이더리움 주소와 ENS 이름을 모두 지원합니다.
토큰 서비스
도구 이름 | 설명 | 주요 매개변수 |
---|---|---|
get-token-info | ERC20 토큰 메타데이터 가져오기 | tokenAddress (주소/ENS), network |
get-token-balance | ERC20 토큰 잔액 확인 | tokenAddress (주소/ENS), ownerAddress (주소/ENS), network |
transfer-token | ERC20 토큰 전송 | privateKey , tokenAddress (주소/ENS), toAddress (주소/ENS), amount , network |
approve-token-spending | 토큰 허용 승인 | privateKey , tokenAddress (주소/ENS), spenderAddress (주소/ENS), amount , network |
get-nft-info | NFT 메타데이터 가져오기 | tokenAddress (주소/ENS), tokenId , network |
check-nft-ownership | NFT 소유권 확인 | tokenAddress (주소/ENS), tokenId , ownerAddress (주소/ENS), network |
transfer-nft | NFT 전송 | privateKey , tokenAddress (주소/ENS), tokenId , toAddress (주소/ENS), network |
get-nft-balance | 소유한 NFT 수 계산 | tokenAddress (주소/ENS), ownerAddress (주소/ENS), network |
get-erc1155-token-uri | ERC1155 메타데이터 가져오기 | tokenAddress (주소/ENS), tokenId , network |
get-erc1155-balance | ERC1155 잔액 확인 | tokenAddress (주소/ENS), tokenId , ownerAddress (주소/ENS), network |
transfer-erc1155 | ERC1155 토큰 전송 | 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-ens | ENS 이름을 주소로 확인 | 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}/uri | ERC1155 토큰 URI |
evm://{network}/erc1155/{tokenAddress}/{tokenId}/balanceOf/{address} | ERC1155 토큰 잔액 |
🔒 보안 고려 사항
- 개인 키는 거래 서명에만 사용되며 서버에 저장되지 않습니다.
- 프로덕션 사용을 위해 추가 인증 메커니즘 구현을 고려하세요.
- 프로덕션 환경에서 HTTP 서버에 HTTPS를 사용하세요
- 남용을 방지하기 위해 속도 제한을 구현하세요
- 고가치 서비스의 경우 확인 단계를 추가하는 것을 고려하세요.
📁 프로젝트 구조
🛠️ 개발
서버를 수정하거나 확장하려면:
src/core/services/
아래의 적절한 파일에 새로운 서비스를 추가합니다.src/core/tools.ts
에 새로운 도구를 등록합니다.src/core/resources.ts
에 새로운 리소스를 등록합니다.src/core/chains.ts
에 새로운 네트워크 지원을 추가합니다.- 서버 구성을 변경하려면
src/server/http-server.ts
에 있는 하드코딩된 값을 편집하세요.
📄 라이센스
이 프로젝트는 MIT 라이선스 조건에 따라 라이선스가 부여되었습니다.
You must be authenticated.
Tools
AI 에이전트가 30개 이상의 Ethereum 호환 블록체인 네트워크와 상호 작용할 수 있도록 하는 모델 컨텍스트 프로토콜 서버로, 통합 인터페이스를 통해 토큰 전송, 계약 상호 작용, ENS 해결과 같은 서비스를 제공합니다.
- 📋 Contents
- 🔭 Overview
- ✨ Features
- 🌐 Supported Networks
- 🛠️ Prerequisites
- 📦 Installation
- ⚙️ Server Configuration
- 🚀 Usage
- 📚 API Reference
- 🔒 Security Considerations
- 📁 Project Structure
- 🛠️ Development
- 📄 License