nftdata-mcp について
NFT Data API を通じて OpenSea コレクションの市場データを提供する MCP サーバーです。コレクション統計を必要とする MCP クライアント向けで、リクエストごとの Base 上の x402 支払いを自動処理します。
主な機能
- 01OpenSea のスラッグでコレクション市場データを取得
- 02価格、販売数、取引量、コレクション数を返却
- 03Base 上の x402 支払いを自動処理
- 04スラッグごとに成功結果を 5 分間キャッシュ
活用シーン
- 01コレクションのフロア価格と最近の取引量の確認
- 02コレクションの販売数と所有者数の確認
MCP 対応
MCP サーバーは `get_collection_data` という単一のツールを MCP クライアントに公開します。NFT Data API のコレクションデータを取得し、Base 上の x402 支払いフローを処理します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y nftdata-mcpEVM_PRIVATE_KEYシークレットPrivate key of a dedicated wallet holding a small amount of USDC on Base. Pays $0.002 per request via x402.NFTDATA_MAX_REQUESTSMaximum signed payments per session (integer 1-1000, default 100).ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
nftdata-mcp
NFT Data API を AI クライアント(Claude Desktop、Cursor など)に単一のツールとして公開する MCP サーバーです。x402 の支払いフローを自動的に処理します。
- npm: https://www.npmjs.com/package/nftdata-mcp
- MCP Registry: https://registry.modelcontextprotocol.io/?q=nftdata
ツール
get_collection_data
OpenSea コレクションの市場データを1回の呼び出しで返します。
| パラメーター | 型 | 説明 |
|---|---|---|
collection | string | opensea.io/collection/<slug> の OpenSea コレクションスラッグ(例:azuki) |
返されるフィールド:name、slug、contracts、floor_price、floor_price_currency、one_day_sales、one_day_volume、seven_day_sales、seven_day_volume、thirty_day_sales、thirty_day_volume、total_sales、total_volume、num_owners、total_supply、created_date。取引量と価格の通貨は、対応する *_currency フィールド(ETH、USDC、HYPE など)で示されます。
各呼び出しの料金は $0.002 です(x402 を介して Base 上の USDC で支払います)。
要件
- Node.js 20+
- Base 上の USDC を少額入金したウォレットの秘密鍵
少額の残高のみを入れた専用ウォレットを使用してください。メインウォレットは絶対に使用しないでください。
クイックスタート(npx)
claude_desktop_config.json に追加します。
{
"mcpServers": {
"nftdata": {
"command": "npx",
"args": ["-y", "nftdata-mcp"],
"env": {
"EVM_PRIVATE_KEY": "0x..."
}
}
}
}
Claude Desktop を再起動し、たとえば「azuki のフロア価格と7日間の取引量は?」と尋ねます。
ソースから実行
npm install
現在のシェルセッションでのみキーを設定してから、起動します。
# macOS / Linux
export EVM_PRIVATE_KEY=0x...
npm start
# Windows PowerShell
$env:EVM_PRIVATE_KEY = "0x..."
npm start
:: Windows cmd
set EVM_PRIVATE_KEY=0x...
npm start
サーバーは標準入力上で MCP クライアントを待機するため、手動で実行しても何も出力されません。MCP クライアントから起動することを想定しています。
ローカルのチェックアウトを Claude Desktop で使用するには、args を ["tsx", "/absolute/path/to/nftdata-mcp/server.ts"] に設定し、"command": "npx" を指定します。
ビルド
npm run build # compiles server.ts and lib.ts to dist/
npm test # offline unit tests, no network and no payments
設定
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
EVM_PRIVATE_KEY | はい | – | 呼び出しの支払いに使用するウォレットの秘密鍵(0x + 64桁の16進数) |
NFTDATA_MAX_REQUESTS | いいえ | 100 | セッションごとの署名済み支払いの最大数。整数の1~1000を指定します。それ以外の値では、エラーが発生して起動が停止します |
NFTDATA_TIMEOUT_MS | いいえ | 15000 | リクエストのタイムアウト(ミリ秒、1000~60000) |
NFTDATA_URL | いいえ | https://www.nftdata.app/api/get-collection-data | 公式の NFT Data エンドポイント(www.nftdata.app または nftdata.app)のみを受け付けます。それ以外を指定すると、起動が停止します |
動作
{"collection": "<slug>"}を本文としてPOST /api/get-collection-dataを送信します。- スラッグの前後の空白を取り除いて小文字に変換した後、
^[a-z0-9][a-z0-9_-]*$(最大100文字)に一致する必要があります。一致しない場合、リクエストは送信されません。 - x402 クライアントに登録されるのは Base メインネット(
eip155:8453)のみです。署名の前に、すべての支払いチャレンジについて、スキームがexactであること、ネットワークが Base メインネットであること、トークンが Base 上の USDC であること、金額が2000最小単位($0.002)ちょうどであること、受取人が0x344143199642e87320785823c20c2df107d17534であることを確認します。それ以外は、署名せずに拒否します。 - 署名済みの支払いは、後続のリクエストが失敗またはタイムアウトした場合も含めて、すべて
NFTDATA_MAX_REQUESTSの上限に算入されます。 - 自動再試行はありません。ツールの1回の呼び出しにつき、支払いの試行は最大1回です。
- 成功したレスポンスをスラッグごとに5分間キャッシュします。同一の呼び出しが同時に行われた場合は、進行中のリクエストを共有します。
400(スラッグが無効)、404(コレクションが見つからない)、429(レート制限。Retry-Afterを含む)、タイムアウト、その他の失敗について、一般的なエラーを返します。サーバーおよび支払いの詳細は MCP クライアントに渡されません。
制限事項
- Base 上の x402 のみがサポートされています。Solana と MPP の決済方法は、このラッパーでは実装されていません。
- 受取人のアドレスは
lib.tsにハードコードされています。NFT Data の支払先アドレスが変更された場合は、OFFICIAL_PAY_TOを更新して新しいバージョンをリリースしてください。 - 決済フック(
server.ts)は、インストール済みの@x402/*SDK に依存しており、オフラインテストの対象外です。 - x402 クライアントライブラリは頻繁に変更されます。インポートに失敗する場合は、最新の x402 ドキュメントを確認してください。
API リファレンス
- OpenAPI:https://www.nftdata.app/openapi.json
- ドキュメント:https://www.nftdata.app/docs
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。