Ethereum MCP Server について
Ethereum MCP Serverは、FastAPIとWeb3.pyでEthereumのウォレット、トランザクション、スマートコントラクト操作を扱う実験的なサーバーです。MCP経由でこれらを試す開発者向けですが、READMEでは現在動作しない可能性があると警告しています。
主な機能
- 01ウォレットの作成、インポート、一覧表示
- 02ETH残高の確認
- 03トランザクションの送信と監視
- 04ガス見積もりとNonce管理
- 05コントラクトのデプロイと読み込み
- 06コントラクト状態の読み取りとイベント照会
活用シーン
- 01Ethereumウォレットの管理
- 02トランザクション送信とレシート確認
- 03コントラクトのデプロイや操作
- 04コントラクトデータと過去イベントの読み取り
MCP 対応
サーバーメソッドを通じて、Ethereumのウォレット、トランザクション、コントラクト操作をMCPクライアントに公開します。高度に実験的で、現時点では動作しない可能性があります。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Ethereum MCP サーバー
警告:このリポジトリは非常に実験的なものであり、現時点では動作しない可能性が高いです。現在も開発中で、安全に実行できると判断された時点でこの警告を更新します。
ウォレット管理、トランザクション処理、コントラクトとのやり取り機能を備えた、包括的な Ethereum MCP サーバーの実装です。FastAPI と Web3.py で構築されています。
機能
ウォレット管理
- 新しいウォレットの作成
- 既存のウォレットのインポート
- 管理対象のウォレットの一覧表示
- ETH 残高の確認
- 秘密鍵の安全な取り扱い
トランザクション管理
- ETH トランザクションの送信
- トランザクション詳細の取得
- トランザクションレシートの取得
- ガスの見積もり
- ノンスの管理
- トランザクションの監視
コントラクトとのやり取り
- ABI を使用したコントラクトのデプロイ
- 既存コントラクトの読み込み
- 状態を変更するメソッドの呼び出し
- コントラクトの状態の読み取り
- コントラクトイベントのクエリ
- ABI の管理
コントラクトのデプロイ
バイトコードと ABI を使用して新しいコントラクトをデプロイします:
{
"method": "eth_deployContract",
"params": {
"from": "0x742d35Cc6634C0532925a3b844Bc9e7595f62b8e",
"abi": [...], // Contract ABI array
"bytecode": "0x608060...", // Contract bytecode
"constructorArgs": ["arg1", 123] // Optional constructor arguments
}
}
コントラクトの読み込み
デプロイ済みの既存コントラクトを読み込みます:
{
"method": "eth_loadContract",
"params": {
"address": "0x1234567890123456789012345678901234567890",
"abi": [...] // Contract ABI array
}
}
コントラクトメソッドの呼び出し(状態変更)
コントラクトの状態を変更するトランザクションを実行します:
{
"method": "eth_callContractMethod",
"params": {
"contractAddress": "0x1234567890123456789012345678901234567890",
"methodName": "transfer",
"args": ["0x742d35Cc6634C0532925a3b844Bc9e7595f62b8e", 1000],
"from": "0x742d35Cc6634C0532925a3b844Bc9e7595f62b8e"
}
}
コントラクトの状態の読み取り
トランザクションを送信せずに view/pure 関数を呼び出します:
{
"method": "eth_readContract",
"params": {
"contractAddress": "0x1234567890123456789012345678901234567890",
"methodName": "balanceOf",
"args": ["0x742d35Cc6634C0532925a3b844Bc9e7595f62b8e"]
}
}
コントラクトイベントのクエリ
コントラクトから過去のイベントを取得します:
{
"method": "eth_getContractEvents",
"params": {
"contractAddress": "0x1234567890123456789012345678901234567890",
"eventName": "Transfer",
"fromBlock": 0,
"toBlock": "latest",
"filters": { // Optional event filters
"from": "0x742d35Cc6634C0532925a3b844Bc9e7595f62b8e"
}
}
}
注: すべてのコントラクトとのやり取りには、関数呼び出しやイベントを適切にエンコード/デコードするために、コントラクト ABI(Application Binary Interface)が必要です。ABI は、標準的な Ethereum ABI 形式に従った JSON 配列として指定する必要があります。
トークン管理(近日公開)
- ERC20 残高の確認
- ERC20 の送金
- NFT メタデータの取得
- NFT の送金
- トークン承認の管理
高度な機能(近日公開)
- EIP-7702 委任
- イベントログの取得
- 部分的な引き出し
- 全額の引き出し
- バッチ操作
クイックスタート
- 依存関係をインストールします:
uv venv
source .venv/bin/activate
uv pip install -e .
- 環境変数を設定します:
cp .env.example .env
# Edit .env with your configuration
- サーバーを起動します:
python src/server.py
API メソッド
ウォレットメソッド
{
"method": "eth_createWallet",
"params": {}
}
{
"method": "eth_importWallet",
"params": {
"privateKey": "0x..."
}
}
{
"method": "eth_listWallets",
"params": {}
}
{
"method": "eth_getBalance",
"params": {
"address": "0x..."
}
}
トランザクションメソッド
{
"method": "eth_sendTransaction",
"params": {
"from": "0x...",
"to": "0x...",
"value": "0x...",
"gas": "0x...",
"gasPrice": "0x..."
}
}
{
"method": "eth_getTransaction",
"params": {
"hash": "0x..."
}
}
{
"method": "eth_getTransactionReceipt",
"params": {
"hash": "0x..."
}
}
{
"method": "eth_estimateGas",
"params": {
"from": "0x...",
"to": "0x...",
"value": "0x..."
}
}
開発
プロジェクト構成
src/
├── server.py # Main FastAPI server
├── core/ # Core functionality
│ ├── wallet.py # Wallet management
│ ├── transaction.py # Transaction handling
│ ├── contract.py # Contract interaction
│ └── token.py # Token/NFT handling
├── models/ # Data models
└── utils/ # Utilities
テストの実行
pytest
コードスタイル
ruff check .
ruff format .
貢献
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更をコミットします
- ブランチにプッシュします
- プルリクエストを作成します
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。