BNBChain MCP (Model Context Protocol) について
BNBChain MCP は、BSC、opBNB、Greenfield などの BNB Chain および EVM 互換ネットワーク向けの MCP サーバーです。ブロックやコントラクト、トークン、NFT、ウォレットの操作を AI アシスタントから実行できます。ブロックチェーン開発者やオンチェーンデータを扱う利用者を対象としています。
主な機能
- 01ブロック、トランザクション、ネットワーク情報の照会
- 02スマートコントラクトの読み取りと書き込み
- 03ERC20、ERC721、ERC1155 のトークン操作
- 04Greenfield のバケットとオブジェクトの管理
- 05送金前のプレビューと確認フロー
活用シーン
- 01AI アシスタントによる BSC のオンチェーンデータ照会
- 02アドレス、トランザクション、トークンの分析
- 03Greenfield 上のバケットとオブジェクトの管理
MCP 対応
BNBChain MCP は MCP サーバーとして、ブロックチェーンの照会、コントラクト操作、送金などのツールとプロンプトを MCP クライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
45掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| privateKey | string | はい | 16 進数形式の秘密鍵(0x 接頭辞は任意)。MCP サーバー環境で PRIVATE_KEY を設定することを推奨します。会話やリクエストのログに保存される可能性があるため、可能な限りツールのパラメーターに秘密鍵を渡さないでください。この値は署名にのみ使用され、サーバーには保存されません。 |
| agentURI | string | はい | エージェントメタデータの URI(例:ipfs://...、https://...、または data:application/json,...)。type、name、description、image、services を含む ERC-8004 の登録形式に従ってください。 |
| network | string | はい | ネットワーク名(例:'bsc'、'bsc-testnet'、'opbnb'、'opbnb-testnet'、'ethereum'、'base' など)またはチェーン ID。すべての書き込み操作(転送、デプロイ、コントラクトへの書き込みなど)で必須です。明示的に指定する必要があり、デフォルト値はありません。 |
詳細
BNBChain MCP(Model Context Protocol)
自然言語処理と AI アシスタンスを通じて、BNB Chain やその他の EVM 互換ネットワークを操作するための強力なツールキットです。
説明
BNBChain MCP は、AI を活用したインターフェースを通じてブロックチェーンネットワークとシームレスにやり取りできるようにする、Model Context Protocol の実装です。ブロックチェーン開発、スマートコントラクトとのやり取り、ネットワーク管理のための包括的なツールとリソースを提供します。
コアモジュール
このプロジェクトは、いくつかのコアモジュールで構成されています。
- Blocks:ブロックチェーンのブロックを照会、管理します
- Contracts:スマートコントラクトとやり取りします
- Network:ネットワーク情報と管理
- NFT:NFT(ERC721/ERC1155)の操作
- Tokens:トークン(ERC20)の操作
- Transactions:トランザクション管理
- Wallet:ウォレットの操作と管理
- Common:共有ユーティリティと型
- Greenfield:Greenfield ネットワーク上でのファイル管理操作(ファイルやバケットのアップロード、ダウンロード、管理など)をサポートします
- その他の機能も近日公開予定です(Greenfield、Swap、Bridge など)
- Agents(ERC-8004):BSC と BSC Testnet 上で、オンチェーン AI エージェント ID(ERC-8004 Trustless Agents)を登録、解決します
重要な注意事項
この MCP サーバーをパブリックインターネット上にデプロイすることは推奨しません。(1)SSE エンドポイントには認証がありません。そのため、アクセス可能なユーザーなら誰でもサーバーを利用できます。(2)秘密鍵や資金を管理する中央集権型のサービスはありません。鍵の管理と署名はクライアントの責任です。それでもパブリックにデプロイする必要がある場合は、前段に認証レイヤー(API キー、JWT、認証機能付きリバースプロキシなど)を追加するか、読み取り専用または機密性の低いツールのみを公開する鍵不要のバージョンをデプロイしてください。
**認証情報:**MCP サーバーの環境で PRIVATE_KEY を設定することを推奨します。会話履歴、クライアントのログ、リクエストログに保存されて漏えいするおそれがあるため、可能な限りツールのパラメーターに秘密鍵を渡さないでください。
送金と支払いの確認
送金および支払い用ツール(例:transfer_native_token、transfer_erc20、approve_token_spending、transfer_nft、transfer_erc1155、gnfd_deposit_to_payment、gnfd_withdraw_from_payment、gnfd_create_payment_account)は、デフォルトでプレビュー後に確認するフローを使用するため、ユーザーが明示的に確認するまでは資金が移動しません。
- デフォルトの動作:送金または支払い用ツールを呼び出すと、受取人、金額、ネットワークなどのプレビューと、有効期間の短い confirmToken が返されます。トランザクションは送信されません。実行するには、その confirmToken と
privateKeyを指定してconfirm_transferツールを呼び出します。トークンの有効期限は 5 分です。 - **確認をスキップする(呼び出しごと):**呼び出し元がすでに確認済みの場合、または自動化スクリプトで実行する場合は、ツールの引数に
skipConfirmation: trueを渡してください。ツールは直ちに実行され、トランザクションの結果を返します。 - **確認をスキップする(サーバー全体):**環境変数
BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION=trueを設定すると、すべての送金・支払い用ツールがプレビューを返さず、直ちに実行されます。確認手順が不要なヘッドレス環境やスクリプト実行環境で使用してください。
確認を行う場合のフロー例:
toAddress、amount、network(任意でprivateKey)を指定してtransfer_native_tokenを呼び出します。skipConfirmationは設定しないでください。- サーバーから
{ preview: { toAddress, amount, network }, confirmToken: "...", message: "..." }が返されます。 - プレビューを確認した後、
confirmTokenとprivateKeyを指定してconfirm_transferを呼び出し、送金を実行します。
Cursor との統合
Cursor から MCP サーバーに接続するには、次の手順に従います。
- Cursor を開き、Settings(右上の歯車アイコン)に移動します
- 左側のサイドバーで「MCP」をクリックします
- 「Add new global MCP server」をクリックします
- 次の情報を入力します。
デフォルトモード
{
"mcpServers": {
"bnbchain-mcp": {
"command": "npx",
"args": ["-y", "@bnb-chain/mcp@latest"],
"env": {
"PRIVATE_KEY": "your_private_key_here. (optional)",
"BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION": "false"
}
}
}
}
- PRIVATE_KEY:任意です。ツールのパラメーターに渡すより、ここに設定することをおすすめします。
- BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION:任意です。
"true"に設定すると、すべての送金/支払いツールが即座に実行されます(プレビュー手順はありません)。デフォルトの"false"では、プレビュー後に確認するフローが使用されます。
SSE モード
{
"mcpServers": {
"bnbchain-mcp": {
"command": "npx",
"args": ["-y", "@bnb-chain/mcp@latest", "--sse"],
"env": {
"PRIVATE_KEY": "your_private_key_here. (optional)",
"BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION": "false"
}
}
}
}
Claude Desktop との統合
Claude Desktop から MCP サーバーに接続するには、次の手順に従います。
- Claude Desktop を開き、Settings に移動します
- 左側のサイドバーで「Developer」をクリックします
- 「Edit Config」ボタンをクリックします
claude_desktop_config.jsonファイルに次の設定を追加します。
{
"mcpServers": {
"bnbchain-mcp": {
"command": "npx",
"args": ["-y", "@bnb-chain/mcp@latest"],
"env": {
"PRIVATE_KEY": "your_private_key_here",
"BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION": "false"
}
}
}
}
任意の環境変数:BNBCHAIN_MCP_SKIP_TRANSFER_CONFIRMATION=trueを設定すると、プレビュー/確認なしで送金を即座に実行できます。
- ファイルを保存し、Claude Desktop を再起動します
接続すると、Claude Desktop の会話で MCP のプロンプトとツールをすべて直接使用できます。例:
- 「このアドレスを分析してください:0x123...」
- 「EVM のガスの概念について説明してください」
- 「BSC の最新ブロックを確認してください」
その他のクライアントとの統合
BNBChain MCP を独自のクライアントに統合する場合は、詳細情報と実装例についてexamplesディレクトリを確認してください。
サンプルでは、次の方法を紹介しています。
- MCP クライアントのセットアップ方法
- 認証と設定
- ブロックチェーンネットワークとやり取りするための API 呼び出し
- レスポンスとエラーの処理
- 統合のベストプラクティス
ローカル開発
前提条件
クイックスタート
- リポジトリをクローンします。
git clone https://github.com/bnb-chain/bnbchain-mcp.git
cd bnbchain-mcp
- 環境変数を設定します。
cp .env.example .env
.envファイルを編集し、設定を記述します。
PRIVATE_KEY:ウォレットの秘密鍵(トランザクション操作に必要)LOG_LEVEL:ログレベルを設定します(DEBUG、INFO、WARN、ERROR)PORT:サーバーのポート番号(デフォルト:3001)
- 依存関係をインストールし、開発サーバーを起動します。
# Install project dependencies
bun install
# Start the development server
bun dev:sse
MCP クライアントでのテスト
次のテンプレートを使用して、MCP クライアントでローカルサーバーを設定します。
{
"mcpServers": {
"bnbchain-mcp": {
"url": "http://localhost:3001/sse",
"env": {
"PRIVATE_KEY": "your_private_key_here"
}
}
}
}
Web UI でのテスト
テストには@modelcontextprotocol/inspectorを使用します。テスト UI を起動します。
bun run test
利用可能なスクリプト
bun dev:sse:ホットリロードを有効にして開発サーバーを起動しますbun build:プロジェクトをビルドしますbun test:テストスイートを実行します
利用可能なプロンプトとツール
プロンプト
| 名前 | 説明 |
|---|---|
| analyze_block | ブロックを分析し、その内容について詳細な情報を提示します |
| analyze_transaction | 特定のトランザクションを分析します |
| analyze_address | EVM アドレスを分析します |
| interact_with_contract | スマートコントラクトとのやり取りについて案内します |
| explain_evm_concept | EVM の概念について説明します |
| compare_networks | さまざまな EVM 互換ネットワークを比較します |
| analyze_token | ERC20 または NFT トークンを分析します |
| how_to_register_mcp_as_erc8004_agent | MCP サーバーを ERC-8004 エージェントとして登録する方法を案内します |
ツール
| 名前 | 説明 |
|---|---|
| get_block_by_hash | ハッシュを指定してブロックを取得します |
| get_block_by_number | 番号を指定してブロックを取得します |
| get_latest_block | 最新のブロックを取得します |
| get_transaction | ハッシュを指定して特定のトランザクションの詳細情報を取得します |
| get_transaction_receipt | ハッシュを指定してトランザクションレシートを取得します |
| estimate_gas | トランザクションのガス代を見積もります |
| transfer_native_token | ネイティブトークン(BNB、ETH、MATIC など)をアドレスに送金します |
| approve_token_spending | 別のアドレスに ERC20 トークンの使用を承認します |
| transfer_nft | NFT(ERC721 トークン)をあるアドレスから別のアドレスに転送します |
| transfer_erc1155 | ERC1155 トークンを別のアドレスに転送します |
| transfer_erc20 | ERC20 トークンをアドレスに転送します |
| get_address_from_private_key | 秘密鍵から導出された EVM アドレスを取得します |
| get_chain_info | 特定のネットワークのチェーン情報を取得します |
| get_supported_networks | 対応しているネットワークの一覧を取得します |
| resolve_ens | ENS 名を EVM アドレスに解決します |
| is_contract | アドレスがスマートコントラクトか外部所有アカウント(EOA)かを確認します |
| read_contract | view/pure 関数を呼び出してスマートコントラクトからデータを読み取ります |
| write_contract | 状態を変更する関数を呼び出してスマートコントラクトに書き込みます |
| get_erc20_token_info | ERC20 トークン情報を取得します |
| get_native_balance | アドレスのネイティブトークン残高を取得します |
| get_erc20_balance | アドレスの ERC20 トークン残高を取得します |
| get_nft_info | 特定の NFT に関する詳細情報を取得します |
| check_nft_ownership | アドレスが特定の NFT を所有しているか確認します |
| get_erc1155_token_metadata | ERC1155 トークンのメタデータを取得します |
| get_nft_balance | 特定のコレクションでアドレスが所有する NFT の合計数を取得します |
| get_erc1155_balance | アドレスが所有する特定の ERC1155 トークン ID の残高を取得します |
ERC-8004 エージェントツール
ERC-8004 Identity Registry(Trustless Agents)でAIエージェントを登録および解決します。対応ネットワーク:BSC(56)、BSC Testnet(97)、Ethereum、Base、Polygon、および公式レジストリがデプロイされている各テストネット。agentURIは、Agent Metadata Profile(名前、説明、画像、MCP エンドポイントなどのservices)に準拠したJSONメタデータファイルを指す必要があります。
| 名前 | 説明 |
|---|---|
| register_erc8004_agent | ERC-8004 Identity Registryにエージェントを登録します。エージェントIDを返します |
| set_erc8004_agent_uri | 既存のERC-8004エージェントのメタデータURIを更新します(所有者のみ) |
| get_erc8004_agent | Identity Registryからエージェント情報(所有者とtokenURI)を取得します |
| get_erc8004_agent_wallet | エージェントの検証済み決済ウォレットを取得します(x402/決済用) |
Greenfieldツール
| 名前 | 説明 |
|---|---|
| gnfd_get_bucket_info | 特定のバケットの詳細情報を取得します |
| gnfd_list_buckets | アドレスが所有するすべてのバケットを一覧表示します |
| gnfd_create_bucket | 新しいバケットを作成します |
| gnfd_delete_bucket | バケットを削除します |
| gnfd_get_object_info | 特定のオブジェクトの詳細情報を取得します |
| gnfd_list_objects | バケット内のすべてのオブジェクトを一覧表示します |
| gnfd_upload_object | バケットにオブジェクトをアップロードします |
| gnfd_download_object | バケットからオブジェクトをダウンロードします |
| gnfd_delete_object | バケットからオブジェクトを削除します |
| gnfd_create_folder | バケット内にフォルダーを作成します |
| gnfd_get_account_balance | アカウントの残高を取得します |
| gnfd_deposit_to_payment | 決済アカウントに資金を入金します |
| gnfd_withdraw_from_payment | 決済アカウントから資金を引き出します |
| gnfd_disable_refund | 決済アカウントの返金を無効にします(取り消し不可) |
| gnfd_get_payment_accounts | アドレスが所有するすべての決済アカウントを一覧表示します |
| gnfd_get_payment_account_info | 決済アカウントの詳細情報を取得します |
| gnfd_create_payment | 新しい決済アカウントを作成します |
| gnfd_get_payment_balance | 決済アカウントの残高を取得します |
対応ネットワーク
BSC、opBNB、Greenfield、Ethereum、およびその他の主要なEVM互換ネットワークに対応しています。詳細については、src/evm/chains.tsを参照してください。
ERC-8004エージェントの登録は、公式レジストリがデプロイされているチェーンで利用できます:BSC(56)、BSC Testnet(97)、Ethereum(1)、Sepolia(11155111)、Base(8453)、Base Sepolia(84532)、Polygon(137)、Polygon Amoy(80002)、Arbitrum(42161)、Arbitrum Sepolia(421614)。秘密鍵は登録または更新トランザクションへの署名にのみ使用され、保存もログへの記録もされません。
コントリビューション
BNBChain MCPへのコントリビューションを歓迎します!次の手順でご協力いただけます。
- リポジトリをフォークします
- 機能ブランチを作成します
- 変更をコミットします
- ブランチにプッシュします
- プルリクエストを作成します
コードがコーディング規約に準拠し、適切なテストが含まれていることを確認してください。
ライセンス
このプロジェクトはMITライセンスの下でライセンスされています。詳細についてはLICENSEファイルを参照してください。
参照および謝辞
このプロジェクトは、以下のオープンソースプロジェクトを基盤とし、着想を得ています。
- TermiX-official/bsc-mcp - BSC MCP のオリジナル実装
- mcpdotdirect/evm-mcp-server - EVM 互換の MCP サーバー実装
ブロックチェーンエコシステムへの貢献に対し、オリジナルの作者の皆様に感謝申し上げます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。