Finance & Fintech TypeScript ★ 378

mcpdotdirect/evm-mcp-server

30+ EVM ağında kapsamlı blockchain hizmetleri sunarak native token, ERC20, NFT, smart contract, transaction ve ENS resolution desteği sağlar.

Claude Desktop config.json'a ekle

{
  "mcpServers": {
    "mcpdotdirect-evm-mcp-server": {
      "command": "node",
      "args": [
        "~/.mcp/evm-mcp-server/index.js"
      ]
    }
  }
}

EVM MCP Sunucusu

License: MIT EVM Networks TypeScript MCP Viem

60+ EVM uyumlu ağ arasında blockchain hizmetleri sağlayan kapsamlı bir Model Context Protocol (MCP) sunucusu. Bu sunucu, AI ajanlarının Ethereum, Optimism, Arbitrum, Base, Polygon ve birçok diğer EVM zincirleri ile 22 araç ve 10 AI rehberli ipucu aracılığıyla birleşik bir arayüz üzerinden etkileşim kurmasını sağlar.

📋 İçerik

🔭 Genel Bakış

MCP EVM Sunucusu, AI ajanlarına blockchain hizmetleri sağlamak için Model Context Protocol'ü kullanır. Aşağıdakiler de dahil olmak üzere geniş bir hizmet yelpazesini destekler:

  • Blockchain durumunu okuma (bakiyeler, işlemler, bloklar, vb.)
  • Akıllı sözleşmelerle etkileşim blok araştırıcılarından otomatik ABI getirme ile
  • Token'ları transfer etme (yerel, ERC20, ERC721, ERC1155)
  • Token meta verilerini ve bakiyelerini sorgulama
  • 60+ EVM ağ arasında ağ özel hizmetleri (34 mainnet + 26 testnet)
  • ENS adı çözümlemesi tüm adres parametreleri için (adresleri yerine 'vitalik.eth' gibi insan tarafından okunabilir isimler kullanın)
  • AI dostu ipuçları ajanları karmaşık iş akışlarında yönlendiren

Tüm hizmetler tutarlı bir MCP araçları, kaynakları ve ipuçları arayüzü aracılığıyla sunulur, böylece AI ajanlarının blockchain işlevselliğini keşfetmesi ve kullanması kolay hale gelir. Ethereum adreslerini kabul eden her araç ENS adlarını da destekler, bunları arka planda otomatik olarak adreslere çözer. Sunucu, akıllı ABI getirme işlemini içerir, sözleşme ABI'lerini önceden bilmeye gerek ortadan kalkar.

✨ Özellikler

Blockchain Veri Erişimi

  • Çok zincir desteği 60+ EVM uyumlu ağ için (34 mainnet + 26 testnet)
  • Zincir bilgisi blockNumber, chainId ve RPC'leri içeren
  • Blok veri erişimi numara, hash veya en son bloğa göre
  • İşlem detayları ve çözülen günlüklere sahip makbuzlar
  • Adres bakiyeleri yerel token'lar ve tüm token standartları için
  • ENS çözümlemesi insan tarafından okunabilir Ethereum adresleri için ('0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045' yerine 'vitalik.eth' kullanın)

Token hizmetleri

  • ERC20 Token'ları

    • Token meta verilerini al (ad, sembol, ondalık, arz)
    • Token bakiyelerini kontrol et
    • Token'ları adresler arasında transfer et
    • Harcama izinlerini onayla
  • NFT'ler (ERC721)

    • Koleksiyon ve token meta verilerini al
    • Token sahipliğini doğrula
    • NFT'leri adresler arasında transfer et
    • Token URI'lerini ve tutulan sayılarını al
  • Çoklu token'lar (ERC1155)

    • Token bakiyelerini ve meta verilerini al
    • Miktarla token'ları transfer et
    • Token URI'lerine erişim

Akıllı Sözleşme Etkileşimleri

  • Sözleşme durumunu oku view/pure fonksiyonlar aracılığıyla
  • Sözleşmelere yaz - Otomatik ABI getirme ile herhangi bir durum değiştirici fonksiyonu çalıştır
  • Sözleşme doğrulaması EOA'lardan ayırt etmek için
  • Olay günlükleri alma ve filtreleme
  • Otomatik ABI getirme tüm 60+ ağ arasında Etherscan v2 API'sından (ABI'leri önceden bilmeye gerek yok)
  • ABI ayrıştırma ve doğrulama fonksiyon keşfi ile

Kapsamlı İşlem Desteği

  • Esnek Cüzdan Desteği - Özel Anahtar veya Mnemonik (BIP-39) ile yapılandır, HD yolu desteği ile
  • Yerel token transferleri tüm desteklenen ağlar arasında
  • Gas tahmini işlem planlama için
  • İşlem durumu ve makbuz bilgisi
  • Hata işleme açıklayıcı mesajlarla

İleti İmzalama Yetenekleri

  • Kişisel İleti İmzalama - Kimlik doğrulama ve doğrulama için rastgele iletileri imzala
  • EIP-712 Tip Veri İmzalama - Gazlı olmayan işlemler ve meta işlemler için yapılandırılmış veri imzala
  • SIWE Desteği - Sign-In With Ethereum kimlik doğrulama akışlarını etkinleştir
  • İzin İmzaları - Gazlı olmayan token işlemleri için çevrimdışı onaylar oluştur
  • Meta İşlem Desteği - Relay hizmetleri ve gazlı olmayan transferler için işlem verilerini imzala

AI Rehberli İş Akışları (İpuçları)

  • İşlem hazırlığı - Transfer planlama ve yürütme rehberi
  • Cüzdan analizi - Cüzdan etkinliğini ve varlıklarını analiz etme araçları
  • Akıllı sözleşme keşfi - Etkileşimli ABI getirme ve sözleşme analizi
  • Sözleşme etkileşimi - Akıllı sözleşmelerde yazma işlemlerinin güvenli yürütülmesi
  • Ağ bilgisi - EVM ağları ve karşılaştırmaları hakkında öğrenme
  • Onay denetimi - Token onaylarının incelenmesi ve yönetimi
  • Hata tanısı - İşlem başarısızlıklarının giderilmesi

🌐 Desteklenen Ağlar

Mainnet'ler

  • Ethereum (ETH)
  • Optimism (OP)
  • Arbitrum (ARB)
  • Arbitrum Nova
  • Base
  • Polygon (MATIC)
  • Polygon zkEVM
  • Avalanche (AVAX)
  • Binance Smart Chain (BSC)
  • zkSync Era
  • Linea
  • Celo
  • Gnosis (xDai)
  • Fantom (FTM)
  • Filecoin (FIL)
  • Moonbeam
  • Moonriver
  • Cronos
  • Scroll
  • Mantle
  • Manta
  • Blast
  • Fraxtal
  • Mode
  • Metis
  • Kroma
  • Zora
  • Aurora
  • Canto
  • Flow
  • Lumia

Testnet'ler

  • Sepolia
  • Optimism Sepolia
  • Arbitrum Sepolia
  • Base Sepolia
  • Polygon Amoy
  • Avalanche Fuji
  • BSC Testnet
  • zkSync Sepolia
  • Linea Sepolia
  • Scroll Sepolia
  • Mantle Sepolia
  • Manta Sepolia
  • Blast Sepolia
  • Fraxtal Testnet
  • Mode Testnet
  • Metis Sepolia
  • Kroma Sepolia
  • Zora Sepolia
  • Celo Alfajores
  • Goerli
  • Holesky
  • Flow Testnet
  • Filecoin Calibration
  • Lumia Testnet

🛠️ Ön Koşullar

  • Bun 1.0.0 veya üstü (önerilir)
  • Node.js 20.0.0 veya üstü (Bun kullanmıyorsanız)
  • İsteğe bağlı: ABI getirme için Etherscan API anahtarı

📦 Kurulum

# Depoyu klonla
git clone https://github.com/mcpdotdirect/mcp-evm-server.git
cd mcp-evm-server

# Bun ile bağımlılıkları yükle
bun install

# Veya npm ile
npm install

⚙️ Yapılandırma

Ortam Değişkenleri

Sunucu aşağıdaki ortam değişkenlerini kullanır. Yazma işlemleri ve ABI getirme için bu değişkenleri yapılandırmalısınız:

Cüzdan Yapılandırması (Yazma İşlemleri İçin)

Cüzdanınızı özel bir anahtar veya mnemonik ifadesi kullanarak yapılandırabilirsiniz:

Seçenek 1: Özel Anahtar

export EVM_PRIVATE_KEY="0x..." # Özel anahtarınız hex formatında (0x ön eki ile veya olmadan)

Seçenek 2: Mnemonik İfadesi (HD Cüzdanlar İçin Önerilir)

export EVM_MNEMONIC="word1 word2 word3 ... word12" # 12 veya 24 sözcükten oluşan BIP-39 mnemonik'iniz
export EVM_ACCOUNT_INDEX="0" # İsteğe bağlı: HD cüzdan türetme için hesap indeksi (varsayılan: 0)

Mnemonik seçeneği hiyerarşik belirlenimci (HD) cüzdan türetmeyi destekler:

  • BIP-39 standart mnemonik ifadeleri kullanır (12 veya 24 sözcük)
  • BIP-44 türetme yolunu destekler: m/44'/60'/0'/0/{accountIndex}
  • EVM_ACCOUNT_INDEX aynı mnemonik'ten farklı hesaplar türetmenizi sağlar
  • Varsayılan hesap indeksi 0 (ilk hesap)

Cüzdan kullanılır:

  • Yerel token'ları transfer etme (transfer_native aracı)
  • ERC20 token'larını transfer etme (transfer_erc20 aracı)
  • Token harcamalarını onaylama (approve_token_spending aracı)
  • Akıllı sözleşmelere yazma (write_contract aracı)
  • İletileri kimlik doğrulaması için imzalama (sign_message aracı)
  • Gazlı olmayan işlemler için yapılandırılmış veri imzalama (sign_typed_data aracı)

⚠️ Güvenlik:

  • Özel anahtarınızı veya mnemonik'inizi asla sürüm kontrolüne kaydetmeyin
  • Ortam değişkenlerini veya güvenli bir anahtar yönetim sistemini kullanın
  • Mnemonik'leri güvenli bir şekilde saklayın - tüm türetilmiş hesaplara erişim sağlarlar
  • Farklı amaçlar için farklı hesap indeksleri kullanmayı düşünün

API Anahtarları (ABI Getirme İçin)

export ETHERSCAN_API_KEY="your-api-key-here"

Bu API anahtarı isteğe bağlıdır ancak aşağıdakiler için gereklidir:

  • Blok araştırıcılardan otomatik ABI getirme (get_contract_abi aracı)
  • Sözleşmeleri okurken ABI otomatik getirme (read_contract aracı abiJson parametresi ile)
  • fetch_and_analyze_abi ipucu

Ücretsiz API anahtarınızı şuradan alın:

  • Etherscan - Ethereum ve uyumlu zincirleri için
  • Aynı anahtar Etherscan v2 API aracılığıyla tüm 60+ ağ arasında çalışır

Sunucu Yapılandırması

Sunucu aşağıdaki varsayılan yapılandırmayı kullanır:

  • Varsayılan Zincir ID: 1 (Ethereum Mainnet)
  • Sunucu Portu: 3001
  • Sunucu Ana Bilgisayarı: 0.0.0.0 (herhangi bir ağ arabiriminden erişilebilir)

Bu değerler uygulamada sabit kodlanmıştır. Bunları değiştirmeye ihtiyacınız varsa, aşağıdaki dosyaları düzenleyebilirsiniz:

  • Zincir yapılandırması için: src/core/chains.ts
  • Sunucu yapılandırması için: src/server/http-server.ts

🚀 Kullanım

npx'i Kullanma (Kurulum Gerekmez)

Kurulum yapmadan MCP EVM Sunucusunu doğrudan npx'i kullanarak çalıştırabilirsiniz:

# Sunucuyu stdio modunda çalıştır (CLI araçları için)
npx @mcpdotdirect/evm-mcp-server

# Sunucuyu HTTP modunda çalıştır (web uygulamaları için)
npx @mcpdotdirect/evm-mcp-server --http

Sunucuyu Yerel Olarak Çalıştırma

Stdio'yu kullanarak sunucuyu başlat (CLI araçlarına gömme için):

# Stdio sunucusunu başlat
bun start

# Otomatik yeniden yükleme ile geliştirme modu
bun dev

Veya web uygulamaları için SSE'li HTTP sunucusunu başlat:

# HTTP sunucusunu başlat
bun start:http

# Otomatik yeniden yükleme ile geliştirme modu
bun dev:http

Sunucuya Bağlanma

Bu MCP sunucusuna MCP uyumlu herhangi bir istemci kullanarak bağlanın. Test etme ve hata ayıklama için MCP Inspector kullanabilirsiniz.

Cursor'dan Bağlanma

MCP sunucusuna Cursor'dan bağlanmak için:

  1. Cursor'u açın ve Ayarlar'a gidin (sol alt köşedeki dişli simgesi)

  2. Sol kenar çubuğunda "Özellikler"e tıklayın

  3. "MCP Sunucuları" bölümüne kaydırın

  4. "Yeni MCP sunucusu ekle"ye tıklayın

  5. Aşağıdaki detayları girin:

    • Sunucu adı: evm-mcp-server
    • Tür: command
    • Komut: npx @mcpdotdirect/evm-mcp-server
  6. "Kaydet"e tıklayın

Bağlandığında, MCP sunucusunun yeteneklerini doğrudan Cursor'da kullanabilirsiniz. Sunucu MCP Sunucuları listesinde görünecek ve gerektiğinde etkinleştirilebilir/devre dışı bırakılabilir.

Cursor ile mcp.json Kullanma

Takımınızla paylaşabileceğiniz veya projeler arasında kullanabileceğiniz daha taşınabilir bir yapılandırma için, projenizin kök dizininde .cursor/mcp.json dosyası oluşturabilirsiniz:

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

Bu dosyayı projenizin .cursor dizininde yerleştirin (mevcut değilse oluşturun) ve Cursor, o projede çalışırken bu MCP sunucu yapılandırmalarını otomatik olarak algılar ve kullanır. Bu yaklaşım aşağıdakileri kolaylaştırır:

  1. MCP yapılandırmalarını takımınızla paylaşma
  2. MCP kurulumunuzu sürüm kontrolü altında tutma
  3. Farklı projeler için farklı sunucu yapılandırmaları kullanma

Örnek: SSE ile HTTP Modu

Web uygulaması geliştiriyorsanız ve Server-Sent Events (SSE) ile HTTP sunucusuna bağlanmak istiyorsanız, bu yapılandırmayı kullanabilirsiniz:

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

Bu, doğrudan HTTP sunucusunun SSE uç noktasına bağlanır, bu da aşağıdakiler için faydalıdır:

  • Tarayıcıdan MCP sunucusuna bağlanması gereken web uygulamaları
  • Yerel komut çalıştırmanın ideal olmadığı ortamlar
  • Birden fazla kullanıcı veya uygulama arasında tek bir MCP sunucu örneğini paylaşma

Bu yapılandırmayı kullanmak için:

  1. Proje kök dizininizde .cursor dizini oluşturun (mevcut değilse)
  2. Yukarıdaki JSON'ı .cursor dizininde mcp.json olarak kaydedin
  3. Cursor'u yeniden başlatın veya projenizi açın
  4. Cursor yapılandırmayı algılayacak ve sunucu(ları) etkinleştirmeyi teklif edecektir

Örnek: MCP Sunucusunu Cursor'da Kullanma

mcp.json ile MCP sunucusunu yapılandırdıktan sonra, bunu Cursor'da kolayca kullanabilirsiniz. İşte örnek bir iş akışı:

  1. Projenizde yeni bir JavaScript/TypeScript dosyası oluşturun:
// blockchain-example.js
async function main() {
  try {
    // ENS kullanarak bir adres için ETH bakiyesi al
    console.log("vitalik.eth için ETH bakiyesi alınıyor...");

    // Cursor ile kullanırken, Cursor'dan bunu isteyebilirsiniz:
    // "mainnet'te vitalik.eth'in ETH bakiyesini kontrol et"
    // Veya "cüzdanımdan vitalik.eth'e 0.1 ETH transfer et"

    // Cursor, ek kod gerektirmeden bu işlemleri yürütmek için MCP sunucusunu kullanacak

    // Bu, MCP entegrasyonunun gücüdür - AI asistanınız
    // herhangi bir ek kod olmadan doğrudan blockchain verilerine ve işlemlerine erişebilir
  } catch (error) {
    console.error("Hata:", error.message);
  }
}

main();
  1. Dosya Cursor'da açıkken, Cursor'dan aşağıdakileri isteyebilirsiniz:

    • "vitalik.eth'in mevcut ETH bakiyesini kontrol et"
    • "Ethereum'da USDC fiyatını ara"
    • "Optimism'deki en son bloğu göster"
    • "0x1234... adres kontratı mı kontrol et"
  2. Cursor, bu işlemleri yürütmek için MCP sunucusunu kullanacak ve sonuçları doğrudan sohbetinizde döndürecektir.

MCP sunucusu tüm blockchain iletişimini yönetirken, Cursor'un doğal dil aracılığıyla blockchain ile ilgili görevleri anlamasını ve yürütmesini sağlar.

Claude CLI Kullanarak Bağlanma

Claude CLI kullanıyorsanız, MCP sunucusuna sadece iki komutla bağlanabilirsiniz:

# MCP sunucusunu ekle
claude mcp add evm-mcp-server npx @mcpdotdirect/evm-mcp-server

# MCP sunucusu etkinleştirilmiş Claude'u başlat
claude

Örnek: ENS ile Token Bakiyesi Alma

// MCP istemcisini kullanarak ENS ile token bakiyesi kontrol etme örneği
const mcp = new McpClient("http://localhost:3000");

const result = await mcp.invokeTool("get-token-balance", {
  tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC on Ethereum
  ownerAddress: "vitalik.eth", // Adres yerine ENS adı
  network: "ethereum",
});

console.log(result);
// {
//   tokenAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
//   owner: "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
//   network: "ethereum",
//   raw: "1000000000",
//   formatted: "1000",
//   symbol: "USDC",
//   decimals: 6
// }

Örnek: ENS Adını Çözümleme

// MCP istemcisini kullanarak ENS adını adrese çözmek örneği
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"
// }

Örnek: Multicall ile Çoklu Çağrıları Toplu İşleme

// Multicall'ı kullanarak tek bir RPC çağrısında birden fazla sözleşme okumasını toplu işleme örneği
const mcp = new McpClient("http://localhost:3000");

const result = await mcp.invokeTool("multicall", {
  network: "ethereum",
  calls: [
    {
      contractAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
      functionName: "balanceOf",
      args: ["0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"],
    },
    {
      contractAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
      functionName: "symbol",
    },
    {
      contractAddress: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", // USDC
      functionName: "decimals",
    },
  ],
});

console.log(result);
// {
//   network: "ethereum",
//   totalCalls: 3,
//   successfulCalls: 3,
//   failedCalls: 0,
//   results: [
//     { contractAddress: "0xA0b...", functionName: "balanceOf", result: "1000000000", status: "success" },
//     { contractAddress: "0xA0b...", functionName: "symbol", result: "USDC", status: "success" },
//     { contractAddress: "0xA0b...", functionName: "decimals", result: "6", status: "success" }
//   ]
// }

📚 API Referansı

Araçlar

Sunucu, ajanlar için 25 odaklanmış MCP aracı sağlar. Adres parametrelerini kabul eden tüm araçlar hem Ethereum adreslerini hem de ENS adlarını destekler.

Cüzdan Bilgisi

Araç Adı Açıklama Anahtar Parametreler
get_wallet_address Yapılandırılmış cüzdanın adresini al (EVM_PRIVATE_KEY'den) yok

Ağ Bilgisi

Araç Adı Açıklama Anahtar Parametreler
get_chain_info Ağ bilgisi al network
get_supported_networks Tüm desteklenen EVM ağlarını listele yok
get_gas_price Bir ağda geçerli gas fiyatlarını al network

ENS Hizmetleri

Araç Adı Açıklama Anahtar Parametreler
resolve_ens_name ENS adını adrese çözümle ensName, network
lookup_ens_address Adrese ters bakış ENS adı address, network

Blok ve İşlem Bilgisi

Araç Adı Açıklama Anahtar Parametreler
get_block Blok verisi al blockNumber veya blockHash, network
get_latest_block En son blok verisi al network
get_transaction İşlem detaylarını al txHash, network
get_transaction_receipt Günlüklü işlem makbuzu al txHash, network
wait_for_transaction İşlem onayını bekle txHash, confirmations, network

Bakiye ve Token Bilgisi

Araç Adı Açıklama Anahtar Parametreler
get_balance

Benzer MCP sunucuları

Daha fazla: Finance & Fintech →