mcpField
B
Blockchain MCP Server DEMO

Blockchain MCP Server DEMO

ローカル
github.com/darwintree金融データ073 週間前に更新

Blockchain MCP Server DEMO について

Blockchain MCP Server DEMOは、Ethereum MainnetとConflux eSpaceに対応する、ブロックチェーンデータの取得・分析向けMCPサーバーです。チェーン検索ツールやリソース、RPC呼び出しを提供します。

主な機能

  1. 01Ethereum MainnetとConflux eSpaceに対応
  2. 02ブロック・トランザクション・アドレス情報の取得
  3. 03対応するJSON-RPCメソッドの実行
  4. 04リソースURIによるオンチェーンデータ提供

活用シーン

  1. 01アドレスの残高や情報の確認
  2. 02ハッシュによるトランザクション詳細の検索
  3. 03指定ブロックのデータ取得

MCP 対応

ネットワーク一覧、ブロック、トランザクション、アドレス、RPC呼び出しのためのツールとリソースをMCPクライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"blockchain": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/inspector"
]
}
}
}
起動コマンドnpx -y @modelcontextprotocol/inspector

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@modelcontextprotocol/inspector

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Blockchain MCP Server DEMO

複数の EVM 互換ブロックチェーンとやり取りするための、包括的な Model Context Protocol(MCP)サーバーです。このサーバーは、ブロックチェーンデータへのアクセスと分析のためのツールとリソースを提供します。

機能

🔗 マルチチェーン対応
  • Ethereum Mainnet(チェーン ID:1)

  • Conflux eSpace(チェーン ID:1030)

🛠️ ツール(POST のようなエンドポイント)
  1. get_chains - 対応するブロックチェーンネットワークの一覧を取得
  2. get_rpc_methods - 対応する RPC メソッドの一覧を取得
  3. call_rpc - 任意の RPC メソッド呼び出しを実行
  4. get_latest_block - チェーンの最新ブロック番号を取得
  5. get_transaction - ハッシュでトランザクションの詳細を取得
  6. get_address - アドレスの残高と情報を取得
  7. get_block - 番号でブロック情報を取得
📚 リソース(GET のようなエンドポイント)
  1. blockchain://transaction/{hash} - トランザクションの詳細を取得(クロスチェーン検索)
  2. blockchain://block/{chainId}/{number} - ブロック情報を取得
  3. blockchain://address/{chainId}/{address} - アドレス情報と残高を取得
  4. blockchain://chains - 対応するすべてのブロックチェーンネットワークを一覧表示

技術スタック

  • TypeScript - 型安全な開発
  • Viem - 優れた TypeScript サポートを備えた最新の Ethereum ライブラリ
  • Model Context Protocol (MCP) - AI とブロックチェーン間の標準化された通信
  • Zod - 実行時の型検証

インストール

  1. リポジトリをクローンします:
git clone <repository-url>
cd blockchain-mcp-server
  1. 依存関係をインストールします:
npm install
  1. プロジェクトをビルドします:
npm run build
  1. サーバーを起動します:
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
主なコンポーネント
  1. BlockchainService:viem クライアントを使用して、複数の EVM チェーンへの接続を管理します
  2. MCP Server:MCP 仕様に準拠したツールとリソースを公開します
  3. 型安全性:Zod による検証と viem の優れた型を活用した、完全な TypeScript サポートを提供します
  4. マルチチェーンサポート:異なるネットワーク間でシームレスにやり取りできます
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
    }
  }
};

コントリビューション

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します
  3. 変更を加えます
  4. 該当する場合はテストを追加します
  5. プルリクエストを送信します

ライセンス

MIT ライセンスです。詳細は LICENSE ファイルをご覧ください。

サポート

ご質問や問題がある場合は、GitHub リポジトリで issue を作成してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。