Blockchain MCP Server DEMO について
Blockchain MCP Server DEMOは、Ethereum MainnetとConflux eSpaceに対応する、ブロックチェーンデータの取得・分析向けMCPサーバーです。チェーン検索ツールやリソース、RPC呼び出しを提供します。
主な機能
- 01Ethereum MainnetとConflux eSpaceに対応
- 02ブロック・トランザクション・アドレス情報の取得
- 03対応するJSON-RPCメソッドの実行
- 04リソースURIによるオンチェーンデータ提供
活用シーン
- 01アドレスの残高や情報の確認
- 02ハッシュによるトランザクション詳細の検索
- 03指定ブロックのデータ取得
MCP 対応
ネットワーク一覧、ブロック、トランザクション、アドレス、RPC呼び出しのためのツールとリソースをMCPクライアントに公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Blockchain MCP Server DEMO
複数の EVM 互換ブロックチェーンとやり取りするための、包括的な Model Context Protocol(MCP)サーバーです。このサーバーは、ブロックチェーンデータへのアクセスと分析のためのツールとリソースを提供します。
機能
🔗 マルチチェーン対応
-
Ethereum Mainnet(チェーン ID:1)
-
Conflux eSpace(チェーン ID:1030)
🛠️ ツール(POST のようなエンドポイント)
get_chains- 対応するブロックチェーンネットワークの一覧を取得get_rpc_methods- 対応する RPC メソッドの一覧を取得call_rpc- 任意の RPC メソッド呼び出しを実行get_latest_block- チェーンの最新ブロック番号を取得get_transaction- ハッシュでトランザクションの詳細を取得get_address- アドレスの残高と情報を取得get_block- 番号でブロック情報を取得
📚 リソース(GET のようなエンドポイント)
blockchain://transaction/{hash}- トランザクションの詳細を取得(クロスチェーン検索)blockchain://block/{chainId}/{number}- ブロック情報を取得blockchain://address/{chainId}/{address}- アドレス情報と残高を取得blockchain://chains- 対応するすべてのブロックチェーンネットワークを一覧表示
技術スタック
- TypeScript - 型安全な開発
- Viem - 優れた TypeScript サポートを備えた最新の Ethereum ライブラリ
- Model Context Protocol (MCP) - AI とブロックチェーン間の標準化された通信
- Zod - 実行時の型検証
インストール
- リポジトリをクローンします:
git clone <repository-url>
cd blockchain-mcp-server
- 依存関係をインストールします:
npm install
- プロジェクトをビルドします:
npm run build
- サーバーを起動します:
npm start
使用例
ツール
対応チェーンを取得
// 获取所有支持的区块链网络
await callTool("get_chains", {});
トランザクション情報を取得
// 获取交易信息
await callTool("get_transaction", {
hash: "0x1234567890abcdef...",
chainId: 1 // optional, will search all chains if not provided
});
アドレス情報を取得
// 获取地址信息
await callTool("get_address", {
address: "0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00",
chainId: 1
});
RPC 呼び出しを実行
// 获取以太坊主网最新区块号
await callTool("call_rpc", {
method: "eth_blockNumber",
params: [],
chainId: 1
});
// 获取地址余额
await callTool("call_rpc", {
method: "eth_getBalance",
params: ["0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00", "latest"],
chainId: 1
});
リソース
トランザクションデータにアクセス
// 跨链查询交易 (will search all supported chains)
const txResource = await getResource("blockchain://transaction/0x1234567890abcdef...");
ブロックデータにアクセス
// 获取以太坊主网特定区块
const block = await getResource("blockchain://block/1/19000000");
// 获取Polygon特定区块
const polygonBlock = await getResource("blockchain://block/137/12345678");
アドレスデータにアクセス
// 获取地址信息
const addressInfo = await getResource("blockchain://address/1/0x742de6d65963b2c3a5e8e3b8c7cb56c6f78e0c00");
対応チェーンにアクセス
// 获取所有支持的区块链网络
const chains = await getResource("blockchain://chains");
対応 RPC メソッド
サーバーは、次の標準的な Ethereum JSON-RPC メソッドに対応しています。
eth_getBalance- アカウント残高を取得eth_getTransactionByHash- ハッシュでトランザクションを取得eth_getTransactionReceipt- トランザクションのレシートを取得eth_getBlockByNumber- 番号でブロックを取得eth_getBlockByHash- ハッシュでブロックを取得eth_getTransactionCount- アカウントのナンスを取得eth_getCode- コントラクトコードを取得eth_call- コントラクト呼び出しを実行eth_estimateGas- トランザクションのガスを見積もるeth_gasPrice- 現在のガス価格を取得eth_blockNumber- 最新ブロック番号を取得eth_chainId- チェーン ID を取得net_version- ネットワークバージョンを取得web3_clientVersion- クライアントバージョンを取得
API リファレンス
ツール
get_chains
対応するすべてのブロックチェーンネットワークの一覧を返します。
パラメーター: なし
レスポンス:
[
{
"chainId": 1,
"name": "Ethereum Mainnet",
"symbol": "ETH",
"rpcUrls": [...],
"blockExplorerUrls": [...],
"nativeCurrency": {...}
}
]
get_transaction
トランザクションの詳細情報を取得します。
パラメーター:
hash(string):トランザクションハッシュchainId(number、任意):検索するチェーン ID
レスポンス:
{
"hash": "0x...",
"blockNumber": 19000000,
"from": "0x...",
"to": "0x...",
"value": "1.0",
"gasPrice": "0.00002",
"gasUsed": "21000",
"chainId": 1,
"status": 1
}
get_address
アドレスの残高と情報を取得します。
パラメーター:
address(string):Ethereum アドレスchainId(number):チェーン ID
レスポンス:
{
"address": "0x...",
"balance": "10.5",
"nonce": 42,
"code": null,
"chainId": 1
}
call_rpc
任意の RPC メソッド呼び出しを実行します。
パラメーター:
method(string):RPC メソッド名params(array、任意):メソッドのパラメーターchainId(number、任意):チェーン ID(デフォルト:1)
レスポンス: RPC の生レスポンス
エラー処理
サーバーには、包括的なエラー処理が含まれています。
- ネットワーク障害:RPC エンドポイント間で自動的にフェイルオーバーします
- 無効なパラメーター:Zod スキーマを使用して入力を検証します
- チェーンが利用できない場合:チェーンの停止時も適切に処理します
- トランザクションが見つからない場合:明確なエラーメッセージを伴うクロスチェーン検索を行います
アーキテクチャ
src/
├── index.ts # Main MCP server implementation
├── blockchain-service.ts # Blockchain interaction service (using viem)
├── config.ts # Chain configurations and constants
└── types.ts # TypeScript interfaces and schemas
主なコンポーネント
- BlockchainService:viem クライアントを使用して、複数の EVM チェーンへの接続を管理します
- MCP Server:MCP 仕様に準拠したツールとリソースを公開します
- 型安全性:Zod による検証と viem の優れた型を活用した、完全な TypeScript サポートを提供します
- マルチチェーンサポート:異なるネットワーク間でシームレスにやり取りできます
viem を選ぶ理由
このプロジェクトでは、次のような利点があるため、ethers ではなく viem を使用します。
- 優れた TypeScript サポート:厳密な型付けに対応したネイティブの TypeScript
- モダンな API:ツリーシェイキングに優れた関数型アプローチ
- パフォーマンス:速度とバンドルサイズを最適化
- 信頼性:リトライロジックを内蔵し、エラー処理も改善
- 将来性:最先端の機能を備え、積極的にメンテナンスされています
テスト
MCP Inspector を使用してサーバーをテストできます。
npx @modelcontextprotocol/inspector node dist/index.js
設定
サーバーは、パブリック RPC エンドポイントを使用して複数のブロックチェーンネットワークに自動的に接続します。src/config.ts ファイルを変更して、RPC エンドポイントをカスタマイズできます。
新しいチェーンの追加
新しい EVM 互換チェーンのサポートを追加するには、src/config.ts の SUPPORTED_CHAINS オブジェクトを更新します。
export const SUPPORTED_CHAINS: Record<number, ChainConfig> = {
// ... existing chains
// New chain example
YOUR_CHAIN_ID: {
chainId: YOUR_CHAIN_ID,
name: "Your Chain Name",
symbol: "TOKEN",
rpcUrls: [
"https://rpc.yourchain.com",
"https://backup-rpc.yourchain.com"
],
blockExplorerUrls: ["https://explorer.yourchain.com"],
nativeCurrency: {
name: "Your Token",
symbol: "TOKEN",
decimals: 18
}
}
};
コントリビューション
- リポジトリをフォークします
- フィーチャーブランチを作成します
- 変更を加えます
- 該当する場合はテストを追加します
- プルリクエストを送信します
ライセンス
MIT ライセンスです。詳細は LICENSE ファイルをご覧ください。
サポート
ご質問や問題がある場合は、GitHub リポジトリで issue を作成してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。