Monad MCP Server について
Monad MCP Server は、Monad テストネットを操作するための MCP ツールを開発者に提供します。トークン、コントラクト、NFT、ブロックを扱い、stdio で MCP 対応クライアントに接続します。
主な機能
- 01MON 残高の確認と送金
- 02コントラクトのデプロイとイベント監視
- 03Monad NFT 情報の検索
- 04最新ブロックや番号指定ブロックの取得
活用シーン
- 01アカウントの MON 残高を確認
- 02別のアカウントへ MON を送金
- 03コントラクトをデプロイしてイベントを監視
- 04NFT やブロックの詳細を検索
MCP 対応
MCP サーバーとして、Monad テストネット向けツールを stdio 経由で対応クライアントに公開します。送金とコントラクトのデプロイには、環境変数で指定したアカウントの秘密鍵を使用します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Monad MCP サーバー
この MCP(Model Context Protocol)サーバーは、Monad テストネットとやり取りするために設計されています。MON トークン残高の確認、トランザクションの送信、スマートコントラクトのデプロイ、ブロックチェーンイベントの監視など、開発者が Monad ブロックチェーンを利用するためのさまざまなツールと機能を提供します。
MCP とは?
Model Context Protocol(MCP)は、AI モデルが外部のツール、サービス、データソースと安全かつ効果的にやり取りできるようにする標準化されたインターフェースです。このサーバーは MCP を実装し、互換性のある AI エージェントやアプリケーションに Monad ブロックチェーンの機能を提供します。
プロジェクト構成
プロジェクトは次のように構成されています。
monad-mcp-server/
├── .env.example # Example environment variables file
├── .gitignore # Specifies intentionally untracked files that Git should ignore
├── LICENSE # Project's software license
├── README.md # This file, providing an overview and instructions
├── package-lock.json # Records the exact versions of dependencies
├── package.json # Lists project dependencies and scripts
├── pnpm-lock.yaml # PNPM lockfile for dependency resolution
├── src/ # Source code directory
│ ├── config/ # Configuration files
│ │ └── server.ts # Server setup and Viem client initialization
│ ├── index.ts # Main entry point of the application
│ └── tools/ # MCP tools for interacting with Monad
│ ├── block/ # Tools related to blockchain blocks (e.g., get-latest-block)
│ ├── contract/ # Tools for smart contract interactions (e.g., deploy, watch events)
│ ├── nft/ # Tools for Non-Fungible Tokens (e.g., query-mon-nft)
│ └── wallet/ # Tools for wallet operations (e.g., get balance, send transactions)
└── tsconfig.json # TypeScript compiler configuration
主なコンポーネント
src/index.ts:サーバーのメインエントリーポイントです。MCP サーバーのインスタンスを初期化し、利用可能なすべてのツール(ウォレット、コントラクト、NFT、ブロック)を登録します。src/config/server.ts:サーバーの中核となる設定を処理するファイルです。名前、バージョン、機能の一覧を指定してMcpServerインスタンスを設定します。また、Monad テストネットとやり取りするためのViemパブリッククライアントを初期化し、環境変数の秘密鍵を使用してViemウォレットクライアントを作成する関数を提供します。サーバーは通信にStdioServerTransportを使用します。src/tools/:さまざまな MCP ツールの実装を格納するディレクトリです。各サブディレクトリは通常、Monad とのやり取りにおける特定の機能を扱います。walletProvider:MON トークンの残高とトランザクションを管理します。contractProvider:スマートコントラクトのデプロイとイベントの監視を処理します。nftProvider:Monad ネットワーク上の NFT を照会する機能を提供します。blockProvider:ブロック情報を取得するツールを提供します。
前提条件
始める前に、次のものがインストールされていることを確認してください。
- Node.js(バージョン 16 以降)
- Node.js パッケージマネージャー:
npm、yarn、またはpnpm(このプロジェクトの例ではpnpmを使用しています) - サーバーとやり取りするための Claude Desktop(または MCP 互換クライアント)。
環境変数(.env)
このプロジェクトでは、主に Monad アカウントの秘密鍵などの機密情報を管理するために環境変数を使用します。
- サンプルファイルをコピーする:
.env.exampleをコピーし、名前を.envに変更します。cp .env.example .env .envを編集する:新しく作成した.envファイルをテキストエディターで開きます。PRIVATE_KEYを設定する:PRIVATE_KEY変数に Monad アカウントの秘密鍵を入力します。このキーは、トランザクションの送信やコントラクトのデプロイなどの操作に必要です。
重要:秘密鍵がPRIVATE_KEY="0xyourprivatekeyhere"0xで始まっていることを確認してください。- セキュリティ:
.envファイルを Git リポジトリにコミットしないでください。.gitignoreファイルはこれを防ぐように設定されていますが、秘密鍵の保護には常に注意してください。
はじめに
以下の手順に沿って、Monad MCP サーバーをセットアップして実行します。
-
リポジトリをクローンする:
まだクローンしていない場合は、GitHub からプロジェクトをクローンします。
git clone https://github.com/lispking/monad-mcp-server.git cd monad-mcp-server -
依存関係をインストールする:
pnpm(またはお好みのパッケージマネージャー)を使って、package.jsonに記載されているプロジェクトの依存関係をインストールします。pnpm install -
プロジェクトをビルドする:
このサーバーは TypeScript で記述されており、JavaScript にコンパイルする必要があります。ビルドスクリプトを実行します。
pnpm buildこのコマンドは、
package.jsonで定義されているtsc(TypeScript コンパイラー)を使い、srcディレクトリ内のソースファイルをbuildディレクトリにコンパイルします。
サーバーのビルドが完了し、MCP クライアントで使用できる状態になりました。
サーバーの機能
src/config/server.ts で定義されているとおり、サーバーは以下の機能を提供します。
get-mon-balance:アカウントの MON トークン残高を取得します。send-mon-transaction:あるアカウントから別のアカウントに MON トークンを送信します。deploy-mon-contract:Monad テストネットにスマートコントラクトをデプロイします。watch-contract-events:特定のスマートコントラクトが発行するイベントを監視し、報告します。query-mon-nft:Monad ネットワーク上の非代替性トークンに関する情報を照会します。get-latest-block:Monad テストネットの最新ブロックの詳細を取得します。get-block-by-number:ブロック番号を指定して、特定のブロックを取得します。
クライアントに MCP サーバーの設定を追加する
このサーバーを MCP 対応クライアント(Claude Desktop など)で使用するには、クライアントの設定にサーバーの構成を追加する必要があります。具体的な方法はクライアントによって異なりますが、通常はサーバーの実行方法を指定します。
設定例を以下に示します。
{
"mcpServers": {
// ... other server configurations ...
"monad-mcp": {
"command": "node",
"args": [
"/absolute/path/to/your/project/monad-mcp-server/build/index.js"
],
"env": {
"PRIVATE_KEY": "<your_monad_private_key_if_not_using_dotenv_or_to_override>"
}
}
// ... other server configurations ...
}
}
設定フィールドの説明:
"monad-mcp":クライアント内でこのサーバー設定に割り当てる一意の名前です。"command": "node":サーバーが Node.js アプリケーションであることを指定します。"args":nodeコマンドに渡す引数の配列です。- 最初の引数は、サーバーのコンパイル済みエントリーポイントのパスです:
/absolute/path/to/your/project/monad-mcp-server/build/index.js。/absolute/path/to/your/project/を、monad-mcp-serverリポジトリをクローンした場所の実際の絶対パスに置き換えてください。
- 最初の引数は、サーバーのコンパイル済みエントリーポイントのパスです:
"env":サーバープロセスの環境変数を設定するオブジェクトです。"PRIVATE_KEY":ここに秘密鍵を設定できます。ただし、セキュリティを高めるため、通常は.envファイルを使用することをおすすめします。ここに設定すると、クライアントの動作やサーバーの環境変数の読み込み順序によっては、.envの値が上書きされる場合があります。
注:"args" のパスが正しく、プロジェクトディレクトリ内の build/index.js を指していることを確認してください。
参考資料
使用されている技術や関連する概念について詳しくは、以下の公式ドキュメントを参照してください。
- Model Context Protocol(MCP)ドキュメント
- Monad ドキュメント
- Viem ドキュメント(Viem は、このプロジェクトで使用されている Ethereum/Monad クライアントライブラリです)
この README で、Monad MCP サーバーの概要、セットアップ方法、使い方を十分に理解できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。