NFT Data MCP 是做什麼的?
NFT Data MCP 是一個已發佈的 MCP 伺服器(npm 套件 nftdata-mcp),為 AI 代理提供一個工具 get_collection_data。給定 OpenSea 收藏品 slug,它會從 NFT Data API 傳回該收藏品市場資料的結構化快照。每次成功、非快取的呼叫會自動以 Base 主網上的 USDC 支付費用。
官方資源:
- 儲存庫:https://github.com/Nomad07/nftdata-mcp
- npm:https://www.npmjs.com/package/nftdata-mcp
- API 文件:https://www.nftdata.app/docs
- MCP 伺服器文件:https://www.nftdata.app/docs/mcp
使用時機
當使用者想要取得一個或多個在 OpenSea 上架的特定 NFT 收藏品的當前市場統計資料時使用,例如:
- 收藏品的地板價
- 過去 24 小時、7 天、30 天或歷史的銷售次數與交易量
- 收藏品的合約地址與區塊鏈
- 總供應量、唯一持有者數量或創建日期
- 多個收藏品的並排比較
請勿用於下方「限制」所列範圍之外的任何用途。
先決條件:MCP 伺服器必須已設定完成
此技能不負責安裝或配置任何項目。nftdata-mcp 伺服器必須已在使用者的 MCP 用戶端中執行,且 get_collection_data 工具必須可用。
如果工具不可用:
- 告知使用者 NFT Data MCP 伺服器未連接。
- 請他們參考位於 https://www.nftdata.app/docs/mcp 的設定指南,或位於 https://github.com/Nomad07/nftdata-mcp 的 README。
- 停止。請勿嘗試繞過此問題,也不要要求使用者將私鑰貼到對話中(請參閱「錢包安全」)。
供參考,伺服器由使用者在其自己的機器上進行設定,採用類似於以下的 stdio MCP 配置(金鑰僅保留在使用者的本地設定中,絕不與代理共用):
{
"mcpServers": {
"nftdata": {
"command": "npx",
"args": ["-y", "[email protected]"],
"env": {
"EVM_PRIVATE_KEY": "<由使用者在本機設定>"
}
}
}
}
需求:Node.js 20 或更新版本、支援 stdio 伺服器的 MCP 用戶端,以及一個在 Base 主網上持有少量 USDC 的專用 EVM 錢包。
工具:get_collection_data
此伺服器只公開一個工具。
輸入
{ "collection": "azuki" }
collection(字串,必填):OpenSea 收藏品 slug。它是收藏品 OpenSea URL 的最後一部分:opensea.io/collection/<slug>。- 伺服器會去除前後空白並將 slug 轉為小寫。slug 必須以字母或數字開頭,且只能包含小寫字母、數字、
-和_(最多 100 個字元)。不符合條件的內容會在發出任何請求或付款前被拒絕。 - 僅接受 slug。不接受收藏品顯示名稱、合約地址、代幣 ID、錢包地址和完整 URL。如果使用者提供 URL,請從中提取 slug。如果使用者只提供名稱,請要求提供 slug 或 OpenSea URL;請勿自行猜測。
輸出
一個 JSON 物件(以文字形式傳回),包含以下欄位。對於新的付費呼叫,伺服器會在 JSON 後面附加兩行:Payment: 0x...(交易雜湊值)和 Verify: https://basescan.org/tx/0x...。快取的結果不包含這些行。讀取 JSON 部分以取得資料,並將這兩行視為付款收據。
| 欄位 | 意義 |
|---|---|
name | 收藏品顯示名稱 |
slug | OpenSea 收藏品 slug |
contracts | { "address", "chain" } 物件的陣列 |
floor_price | 當前地板價(數字) |
floor_price_currency | 地板價的貨幣(例如 ETH、USDC、HYPE) |
one_day_sales, seven_day_sales, thirty_day_sales | 過去 24 小時、7 天、30 天的銷售次數 |
one_day_volume, seven_day_volume, thirty_day_volume | 這些時間區間的交易量 |
one_day_volume_currency, seven_day_volume_currency, thirty_day_volume_currency | 每個交易量的貨幣 |
total_sales, total_volume | 歷史銷售次數與交易量 |
total_volume_currency | 歷史交易量的貨幣 |
num_owners | 唯一持有者數量 |
total_supply | 收藏品中的代幣總數 |
created_date | 收藏品創建日期(ISO 8601 日期,例如 2022-01-12) |
資料來自 OpenSea API 並按原樣傳遞。這是一個時間點快照,而非時間序列。
回應範例(歷史資料,非即時資料)
{
"name": "Azuki",
"slug": "azuki",
"contracts": [{ "address": "0xed5af388653567af2f388e6224dc7c4b3241c544", "chain": "ethereum" }],
"floor_price": 0.49328599,
"floor_price_currency": "ETH",
"one_day_sales": 21,
"one_day_volume": 10.150091000000002,
"seven_day_sales": 163,
"seven_day_volume": 96.67526161112121,
"thirty_day_sales": 471,
"thirty_day_volume": 325.72023569476767,
"total_sales": 93156,
"total_volume": 831992.6461159982,
"num_owners": 4394,
"total_supply": 10000,
"created_date": "2022-01-12",
"one_day_volume_currency": "ETH",
"seven_day_volume_currency": "ETH",
"thirty_day_volume_currency": "ETH",
"total_volume_currency": "ETH"
}
解讀與比較結果
請遵循以下規則,以確保回答忠於資料:
- 僅回報已傳回的內容。 如果某個欄位缺失或為
null(例如total_supply、created_date或成交量貨幣),請說明該資料不可用。切勿憑空捏造值,也不要在未說明的情況下從記憶體或其他來源填補空白。 - 缺失值不等於零。
null或缺少的欄位表示「未知」。傳回的0表示零。請勿將兩者視為相同,也不要在總和或平均值中將未知值當作零來處理。 - 始終將數字與其貨幣配對。 讀取
floor_price_currency和每個*_volume_currency欄位。不同收藏品的貨幣可能不同(ETH、USDC、HYPE等)。除非回應明確指出,否則切勿將價格標示為 ETH 或 USD。 - 不要在算術或排名中混合貨幣。 此工具不提供匯率。比較收藏品時,僅在貨幣欄位相符時才直接比較數字。如果貨幣不同,請以各自貨幣顯示每個值,並說明直接比較需要進行資料中未包含的換算。
- 標明衍生數字。 您計算得出的數字,例如平均售價(成交量除以銷售次數,僅在銷售次數大於 0 且成交量貨幣已知時)或過去 30 天佔歷史成交量的比例,是您自己的計算結果。請說明它們是衍生值,並顯示輸入值。
- 保留區塊鏈上下文。
contracts[].chain顯示收藏品所在的區塊鏈。一個收藏品可能列出多個合約。請勿假設只有單一區塊鏈或單一合約。 - 不要過度解讀。 資料是來自一次查詢的快照。請勿描述趨勢、動能、「好」或「壞」的價格,或提供投資建議。您可以指出不同時間區間之間的明顯差異(例如 7 天成交量大於 24 小時成交量),但不要進行預測。
- 說明資料擷取的時間。 市場資料會持續變動。如果在對話中重複使用某個結果,請提醒使用者這是一個快照。
- 注意四捨五入。 原始值有許多小數位。您可以為了可讀性而進行四捨五入,但請勿變更原始數字或暗示比資料擁有的更高的精確度。
當被要求更改呈現方式(摘要、表格、報告、比較)時,請重新格式化相同的值,不要更改它們。
成本感知使用
- 每次非快取呼叫成本為 0.002 USDC。每個 slug 的結果會快取 5 分鐘;在此時間範圍內再次查詢相同的 slug 是免費的,並會傳回快取的資料,且不會有新的付款收據。
- 相同的並發呼叫會共用一個請求,因此重複查詢不會重複付費。
- 伺服器限制每個工作階段的付費呼叫次數(
NFTDATA_MAX_REQUESTS,預設 100,最大 1000)。請勿在迴圈中或進行投機性查詢時呼叫此工具。對於比較,每個請求的收藏品僅擷取一次。 - 在執行大量批次(例如超過少數幾個收藏品)之前,請告知使用者需要多少次呼叫以及總成本,並取得他們的同意。
- 請勿自動重試失敗的呼叫。伺服器本身從不重試,而且在逾時後,付款可能已經簽署。請回報失敗,讓使用者決定。
錯誤處理
| 情況 | 處理方式 |
|---|---|
| 無效的 slug 訊息 | 根據 OpenSea URL 檢查 slug;要求使用者確認。未進行付款。 |
| 「找不到收藏品」 | slug 與 OpenSea 上的任何收藏品都不匹配。要求提供正確的 slug 或 URL。 |
| 速率限制訊息(附帶延遲秒數) | 在陳述的時間過去後再重試,並告知使用者。 |
| 「付款被安全政策拒絕」 | 伺服器在簽署前拒絕了付款條款。請回報;請勿嘗試繞過此限制。 |
| 「付款未被接受」 | API 未接受付款。請回報;請勿自行重試。 |
| 「已達到付費請求限制……」 | 已達到工作階段支出上限。使用者必須重新啟動用戶端或提高 NFTDATA_MAX_REQUESTS。 |
| 逾時 | 付款可能已授權但未重試。告知使用者;僅在使用者同意的情況下提供重試選項。 |
| 一般「請求失敗。」 | 回報為失敗。請勿猜測原因。 |
提示範例
- 「使用 NFT Data MCP 伺服器。
azuki收藏品的地板價是多少?」 - 「取得
basedpunks的市場統計資料:地板價、24 小時、7 天和 30 天的銷售量與交易量、供應量與持有者數量。」 - 「
milady在 OpenSea 上使用哪個合約地址和區塊鏈?」 - 「比較
azuki和basedpunks的地板價和 30 天交易量。僅比較使用相同貨幣的數字。」 - 「這是 OpenSea 連結:https://opensea.io/collection/azuki。將此收藏品摘要成一份簡短報告。」
- 「顯示
azuki的原始 JSON 回應,並解釋每個欄位。」 - 「
azuki的持有者數量與其總供應量相比如何?」(這是一個衍生比例,因此請標明為衍生值)
付款詳細資訊
- 價格: 每次成功、非快取呼叫為 0.002 USDC。
- 網路: 僅限 Base 主網(
eip155:8453),以 USDC(0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)支付。無論查詢的收藏品位於哪個區塊鏈,支付網路都是 Base 主網。查詢其他區塊鏈的收藏品,包括在 OpenSea 上架的 Solana 收藏品,仍然在 Base 上支付。 - 預設協議:x402 v2。 伺服器在 Base 主網上支付一個
exactUSDC 挑戰。 - 可選協議:MPP
evm/charge。 僅當伺服器以NFTDATA_PAYMENT_PROTOCOL=mpp啟動時選用。以 Base 主網上的 USDC 支付相同的價格。 - 每次伺服器執行一個協議,無備援。 協定在伺服器啟動時選擇一次。伺服器永遠不會從一個切換到另一個,也絕不會為單次呼叫嘗試兩種,也不會使用另一個協議重試。如果 API 在選定的協議中未提供可接受的付款,則不會簽署任何內容,呼叫將失敗。無效的
NFTDATA_PAYMENT_PROTOCOL值(任何非空、x402或mpp的值)會在啟動時停止伺服器。 - 簽署前的檢查: 伺服器在簽署任何內容之前,會驗證網路、代幣、方案或方法、確切金額(2000 原子單位,即 0.002 美元)以及官方收款地址。不符合條件的挑戰將被拒絕。
- 每次工具呼叫最多一次付款嘗試。
- 快取命中是免費的。 它們不會觸發付款,也不會包含交易雜湊值。
- 收據: 每次新付費的成功呼叫都包含一個交易雜湊值和一個 BaseScan 連結,使用者可以開啟該連結來驗證付款。
- 請勿將伺服器與主要 API 混淆。 NFT Data API 本身在 Base 主網和 Solana 主網上接受 x402 v2,並在 Base 主網上接受 MPP
evm/charge。此 MCP 伺服器範圍更窄:它僅在 Base 主網上支付,使用 x402 v2 或 MPPevm/charge,一次只使用一種。MCP 伺服器不支援 Solana 付款。
錢包安全
- 切勿要求使用者分享、貼上、輸入或傳送私鑰、助記詞或錢包檔案 到對話中,也絕不要要求使用者提供這些資訊來「設定」或「修復」伺服器。金鑰僅由使用者在其本機 MCP 伺服器的環境變數(
EVM_PRIVATE_KEY)中設定。 - 請勿讀取、列印、複製或摘要可能包含金鑰的配置檔案或環境變數。
- 如果使用者無論如何將私鑰貼到聊天中,請勿重複或使用它。告知他們停止使用該錢包,將任何資金轉移到新錢包,並更換金鑰。
- 建議使用一個專用錢包,該錢包僅在 Base 主網上持有少量 USDC 餘額,切勿使用主要錢包或持有大量資金的錢包。
- 鼓勵使用收據中的交易雜湊值在 BaseScan 上驗證付款。
- 切勿建議將資金發送到不是來自使用者自己錢包或官方文件所提供的地址。
限制
此技能和伺服器僅用於唯讀的收藏品資料查詢。它們不是:
- 一般的 NFT 搜尋或探索工具:不支援按名稱、屬性、稀有度、價格範圍或排名進行搜尋,也沒有「頂級」或「熱門」收藏品清單
- 代幣層級工具:不支援個別 NFT、代幣 ID、元資料、稀有度或所有權查詢
- 錢包工具:不支援錢包餘額、持倉、投資組合或交易歷史
- 交易或轉帳工具:無法購買、出售、掛單、出價、鑄造、轉移、跨鏈橋接或交換任何東西,除了每次呼叫的小額付款外,絕不會移動資金
- 歷史或即時資料饋送:每次呼叫傳回一個快照,沒有價格歷史或串流更新
- 價格預言機或顧問:不提供貨幣換算、估值、預測或投資建議
其他限制:
- 只能查詢存在於 OpenSea 上的收藏品,且輸入必須是 OpenSea slug。
- 某些收藏品的某些欄位可能缺失或為
null。 - 資料來源為 OpenSea API,並按原樣回報。
- 此工具為唯讀。它不使用也不會觸發任何寫入操作。
- 不應將其用於搜尋、錢包或交易目的。