Skip to main content
Glama

EVM MCP サーバー

ライセンス: MITEVMネットワークスタイプスクリプトヴィエム

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

📋 目次

Related MCP server: Flow MCP Server

🔭 概要

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 セポリア

  • セポリア線

  • スクロールセポリア

  • マントルセポリア

  • マンタ・セポリア

  • ブラストセポリア

  • フラクタルテストネット

  • モードテストネット

  • メティス・セポリア

  • クロマ・セポリア

  • ゾラ・セポリア

  • セロ・アルファホレス

  • ゴエルリ

  • ホレスキー

  • フローテストネット

  • Lumia テストネット

🛠️ 前提条件

  • Bun 1.0.0以上

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

📦 インストール

# Clone the repository git clone https://github.com/mcpdotdirect/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-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名もサポートしており、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を使用する

  • 不正使用を防ぐためにレート制限を実装する

  • 高価値サービスの場合は確認手順を追加することを検討してください

📁 プロジェクト構造

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 ライセンスの条件に基づいてライセンスされます。

Latest Blog Posts

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

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