EVM MCP Server

by chulanpro5
Verified

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.

EVM MCP サーバー

複数のEVM互換ネットワークにブロックチェーンサービスを提供する包括的なモデルコンテキストプロトコル(MCP)サーバー。このサーバーにより、AIエージェントはEthereum、Optimism、Arbitrum、Base、Polygon、その他多くのEVMチェーンと統一されたインターフェースでやり取りできるようになります。

📋 目次

🔭 概要

MCP EVMサーバーは、モデルコンテキストプロトコルを活用してAIエージェントにブロックチェーンサービスを提供します。以下の幅広いサービスをサポートしています。

  • ブロックチェーンの状態(残高、トランザクション、ブロックなど)の読み取り
  • スマートコントラクトとのやり取り
  • トークンの転送(ネイティブ、ERC20、ERC721、ERC1155)
  • トークンのメタデータと残高の照会
  • 30以上のEVMネットワークにわたるチェーン固有のサービス
  • すべてのアドレスパラメータのENS 名前解決(アドレスの代わりに「vitalik.eth」のような人間が読める名前を使用する)

すべてのサービスは、MCPツールとリソースの一貫したインターフェースを通じて公開されているため、AIエージェントがブロックチェーン機能を容易に発見して利用できます。Ethereumアドレスを受け入れるすべてのツールはENS名もサポートしており、バックグラウンドで自動的にアドレス解決されます。

✨ 特徴

ブロックチェーンデータアクセス

  • 30以上のEVM互換ネットワークのマルチチェーンサポート
  • ブロック番号、チェーンID、RPCを含むチェーン情報
  • 番号、ハッシュ、最新でデータアクセスをブロック
  • 解読されたログを含む取引の詳細と領収書
  • ネイティブトークンとすべてのトークン標準のアドレス残高
  • 人間が読めるイーサリアムアドレスのENS解決(「0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045」の代わりに「vitalik.eth」を使用)

トークンサービス

  • ERC20トークン
    • トークンのメタデータ(名前、シンボル、小数点、供給)を取得する
    • トークン残高を確認する
    • アドレス間でトークンを転送する
    • 支出手当の承認
  • NFT(ERC721)
    • コレクションとトークンのメタデータを取得する
    • トークンの所有権を確認する
    • アドレス間でNFTを転送する
    • トークンURIを取得し保有数をカウントする
  • マルチトークン(ERC1155)
    • トークンの残高とメタデータを取得する
    • 数量に応じてトークンを転送する
    • アクセストークンURI

スマートコントラクトの相互作用

  • ビュー/純粋関数を通じてコントラクト状態を読み取る
  • 秘密鍵署名を使用したサービスの作成
  • EOAと区別するための契約検証
  • イベントログの取得とフィルタリング

包括的な取引サポート

  • サポートされているすべてのネットワーク間でのネイティブトークン転送
  • 取引計画のためのガス見積もり
  • 取引状況と領収書情報
  • 説明メッセージによるエラー処理

🌐 サポートされているネットワーク

メインネット

  • イーサリアム(ETH)
  • 楽観主義(OP)
  • アービトラム(ARB)
  • アービトラム・ノヴァ
  • ベース
  • ポリゴン(MATIC)
  • ポリゴンzkEVM
  • アバランチ(AVAX)
  • バイナンススマートチェーン(BSC)
  • zkSync時代
  • リネア
  • セロ
  • グノーシス(xDai)
  • ファントム(FTM)
  • ファイルコイン(FIL)
  • 月光
  • ムーンリバー
  • クロノス
  • スクロール
  • マントル
  • マンタ
  • ブラスト
  • フラクタル
  • モード
  • メティス
  • クロマ
  • ゾラ
  • オーロラ
  • カント

テストネット

  • セポリア
  • 楽観主義セポリア
  • アービトラム・セポリア
  • ベースセポリア
  • ポリゴンアモイ
  • 雪崩富士
  • BSCテストネット
  • zkSync セポリア
  • セポリア線
  • スクロールセポリア
  • マントルセポリア
  • マンタ・セポリア
  • ブラストセポリア
  • フラクタルテストネット
  • モードテストネット
  • メティス・セポリア
  • クロマ・セポリア
  • ゾラ・セポリア
  • セロ・アルファホレス
  • ゴエルリ
  • ホレスキー

🛠️ 前提条件

  • Bun 1.0.0以上
  • Node.js 18.0.0 以上(Bun を使用しない場合)

📦 インストール

# Clone the repository git clone https://github.com/yourusername/mcp-evm-server.git cd mcp-evm-server # Install dependencies with Bun bun install # Or with npm npm install

⚙️ サーバー構成

サーバーは次のデフォルト構成を使用します。

  • デフォルトのチェーンID :1(Ethereum Mainnet)
  • サーバーポート: 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

または、Web アプリケーション用に SSE を使用して HTTP サーバーを起動します。

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

サーバーへの接続

MCP対応クライアントを使用して、このMCPサーバーに接続してください。テストとデバッグには、 MCP Inspectorを使用できます。

カーソルからの接続

カーソルから MCP サーバーに接続するには:

  1. カーソルを開いて設定(左下の歯車アイコン)に移動します
  2. 左側のサイドバーの「機能」をクリックします
  3. 「MCPサーバー」セクションまでスクロールします
  4. 「新しいMCPサーバーを追加」をクリックします
  5. 次の詳細を入力してください。
    • サーバー名: evm-mcp-server
    • タイプ: command
    • コマンド: npx @mcpdotdirect/evm-mcp-server
  6. 「保存」をクリック

接続すると、Cursor 内で MCP サーバーの機能を直接使用できるようになります。サーバーは MCP サーバーリストに表示され、必要に応じて有効化/無効化できます。

カーソルで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 モード

Web アプリケーションを開発していて、Server-Sent Events (SSE) を使用して HTTP サーバーに接続する場合は、次の構成を使用できます。

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

これは HTTP サーバーの SSE エンドポイントに直接接続します。これは次の場合に役立ちます。

  • ブラウザからMCPサーバーに接続する必要があるWebアプリケーション
  • ローカルコマンドの実行が理想的ではない環境
  • 複数のユーザーまたはアプリケーション間で単一の 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. カーソルでファイルを開いた状態で、カーソルに次の操作を実行できます。
    • 「vitalik.ethの現在のETH残高を確認する」
    • 「イーサリアム上のUSDCの価格を調べる」
    • 「Optimismの最新ブロックを見せてください」
    • 「0x1234...がコントラクトアドレスであるかどうかを確認する」
  2. カーソルは MCP サーバーを使用してこれらの操作を実行し、結果を会話内で直接返します。

MCP サーバーはすべてのブロックチェーン通信を処理し、Cursor が自然言語を通じてブロックチェーン関連のタスクを理解して実行できるようにします。

Claude CLI を使用して接続する

Claude CLI を使用している場合は、次の 2 つのコマンドだけで 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ツールを提供します。アドレスパラメータを受け入れるすべてのツールは、EthereumアドレスとENS名の両方をサポートします。

トークンサービス

ツール名説明主なパラメータ
get-token-infoERC20トークンのメタデータを取得するtokenAddress (アドレス/ENS)、 network
get-token-balanceERC20トークンの残高を確認するtokenAddress (アドレス/ENS)、 ownerAddress (アドレス/ENS)、 network
transfer-tokenERC20トークンの転送privateKeytokenAddress (アドレス/ENS)、 toAddress (アドレス/ENS)、 amountnetwork
approve-token-spendingトークンの許可を承認するprivateKeytokenAddress (アドレス/ENS)、 spenderAddress (アドレス/ENS)、 amountnetwork
get-nft-infoNFTメタデータを取得するtokenAddress (アドレス/ENS)、 tokenIdnetwork
check-nft-ownershipNFTの所有権を確認するtokenAddress (アドレス/ENS)、 tokenIdownerAddress (アドレス/ENS)、 network
transfer-nftNFTを転送するprivateKeytokenAddress (アドレス/ENS)、 tokenIdtoAddress (アドレス/ENS)、 network
get-nft-balance所有しているNFTの数tokenAddress (アドレス/ENS)、 ownerAddress (アドレス/ENS)、 network
get-erc1155-token-uriERC1155メタデータを取得するtokenAddress (アドレス/ENS)、 tokenIdnetwork
get-erc1155-balanceERC1155残高を確認するtokenAddress (アドレス/ENS)、 tokenIdownerAddress (アドレス/ENS)、 network
transfer-erc1155ERC1155トークンの転送privateKeytokenAddress (アドレス/ENS)、 tokenIdamounttoAddress (アドレス/ENS)、 network

ブロックチェーンサービス

ツール名説明主なパラメータ
get-chain-infoネットワーク情報を取得するnetwork
get-balanceネイティブトークン残高を取得するaddress (アドレス/ENS)、 network
transfer-ethネイティブトークンを送信するprivateKeyto (アドレス/ENS)、 amountnetwork
get-transaction取引の詳細を取得するtxHashnetwork
read-contractスマートコントラクトの状態を読み取るcontractAddress (アドレス/ENS)、 abifunctionNameargsnetwork
write-contractスマートコントラクトへの書き込みcontractAddress (アドレス/ENS)、 abifunctionNameargsprivateKeynetwork
is-contractアドレスがコントラクトかどうかを確認するaddress (アドレス/ENS)、 network
resolve-ensENS名をアドレスに解決するensNamenetwork

リソース

サーバーは、以下のMCPリソースURIを通じてブロックチェーンデータを公開します。アドレスを受け入れるすべてのリソースURIは、ENS名もサポートしており、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 ライセンスの条件に基づいてライセンスされます。

ID: zyhlhl8qb0