Communitygithub.com

nftdata-mcp

OpenSea NFT 컬렉션의 실시간 시장 데이터(바닥 가격, 24시간/7일/30일/전체 판매량 및 거래량, 컨트랙트 주소, 총 공급량, 고유 소유자 수, 생성 날짜)를 NFT Data MCP 서버의 get_collection_data 도구를 통해 가져옵니다. 호출당 $0.002 USDC (Base 메인넷, x402 v2 기본값 또는 MPP evm/charge)로 지불됩니다. 사용자가 특정 NFT 컬렉션의 OpenSea 슬러그를 묻거나, 바닥 가격 또는 거래량 통계를 원하거나, 두 개 이상의 컬렉션을 비교하려고 할 때 사용하세요. 읽기 전용이며 검색, 지갑, 거래 또는 트랜잭션 도구가 아닙니다.

nftdata-mcp란 무엇인가요?

이 스킬은 AI 에이전트가 OpenSea NFT 컬렉션의 시장 데이터를 구조화된 JSON 형식으로 가져올 수 있는 `nftdata-mcp` MCP 서버를 설명합니다. 에이전트는 `get_collection_data`라는 단일 도구를 사용하여 컬렉션 슬러그를 입력하면 바닥 가격, 24시간/7일/30일 판매량 및 거래량, 컨트랙트 주소, 총 공급량, 고유 소유자 수, 생성 날짜 등을 반환받습니다. 각 호출은 성공 시 자동으로 Base 메인넷 상에서 $0.002 USDC가 지불되며, 5분간 캐싱되어 동일한 슬러그에 대한 반복 호출은 무료입니다. 이 스킬은 Claude Code, Cursor, Codex 등 MCP 클라이언트를 지원하는 모든 AI 에이전트에서 사용할 수 있으며, 설정은 npm 패키지를 통해 사용자 로컬 환경에서 이루어집니다. 비교 분석 시 통화 단위가 다른 데이터의 직접 비교를 금지하고, 누락된 데이터를 0으로 잘못 해석하지 않도록 주의하는 등 데이터 해석에 대한 엄격한 규칙을 제공합니다. 검색, 지갑 조회, 거래 등 다른 기능은 제공하지 않으며 순수하게 컬렉션 데이터 조회에 특화되어 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Nomad07/nftdata-mcp/tree/main

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

NFT Data MCP

NFT Data MCP는 게시된 MCP 서버(npm 패키지 nftdata-mcp)로, AI 에이전트에게 get_collection_data라는 하나의 도구를 제공합니다. OpenSea 컬렉션 슬러그가 주어지면 NFT Data API에서 해당 컬렉션의 시장 데이터를 구조화된 스냅샷으로 반환합니다. 성공하고 캐싱되지 않은 각 호출은 Base 메인넷에서 USDC로 자동 지불됩니다.

공식 리소스:

이 스킬을 사용해야 하는 경우

사용자가 OpenSea에 등록된 하나 이상의 특정 NFT 컬렉션에 대한 현재 시장 통계를 원할 때 사용하세요. 예를 들어:

  • 컬렉션의 바닥 가격
  • 지난 24시간, 7일, 30일 또는 전체 기간 동안의 판매 횟수 및 거래량
  • 컬렉션의 컨트랙트 주소 및 체인
  • 총 공급량, 고유 소유자 수 또는 생성 날짜
  • 여러 컬렉션의 나란히 비교

아래 "제한 사항"에 나열된 범위를 벗어난 용도로는 사용하지 마십시오.

전제 조건: MCP 서버가 이미 설정되어 있어야 함

이 스킬은 아무것도 설치하거나 구성하지 않습니다. nftdata-mcp 서버가 사용자의 MCP 클라이언트에서 이미 실행 중이어야 하며 get_collection_data 도구를 사용할 수 있어야 합니다.

도구를 사용할 수 없는 경우:

  1. 사용자에게 NFT Data MCP 서버가 연결되지 않았다고 알립니다.
  2. https://www.nftdata.app/docs/mcp 또는 https://github.com/Nomad07/nftdata-mcp 의 README에 있는 설정 가이드를 안내합니다.
  3. 중단합니다. 우회하려고 시도하지 말고, 사용자에게 개인 키를 대화에 붙여넣도록 요청하지 마십시오("지갑 보안" 참조).

참고로, 서버는 사용자가 자신의 기기에서 다음과 같은 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 컬렉션 슬러그입니다. 컬렉션 OpenSea URL의 마지막 부분입니다: opensea.io/collection/<slug>.
  • 서버는 슬러그를 트리밍하고 소문자로 변환합니다. 그런 다음 문자 또는 숫자로 시작해야 하며 소문자, 숫자, - 및 _만 포함해야 합니다(최대 100자). 이외의 경우 요청 또는 지불이 이루어지기 전에 거부됩니다.
  • 슬러그만 허용됩니다. 컬렉션 표시 이름, 컨트랙트 주소, 토큰 ID, 지갑 주소 및 전체 URL은 유효한 입력이 아닙니다. 사용자가 URL을 제공하면 URL에서 슬러그를 추출하십시오. 사용자가 이름만 제공하면 슬러그 또는 OpenSea URL을 요청하십시오. 추측하지 마십시오.

출력

아래 필드가 포함된 JSON 객체(텍스트로 반환)입니다. 새로 지불된 호출의 경우 서버는 JSON 뒤에 두 줄을 추가합니다: Payment: 0x... (트랜잭션 해시) 및 Verify: https://basescan.org/tx/0x.... 캐시된 결과에는 이러한 줄이 포함되지 않습니다. 데이터는 JSON 부분을 읽고 두 줄은 지불 영수증으로 처리하십시오.

필드의미
name컬렉션 표시 이름
slugOpenSea 컬렉션 슬러그
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"
}

결과 해석 및 비교

답변이 데이터에 충실하도록 다음 규칙을 따르십시오:

  1. 반환된 것만 보고하십시오. 필드가 누락되었거나 null인 경우(예: total_supply, created_date 또는 거래량 통화), 사용할 수 없다고 말하십시오. 값을 임의로 만들거나 기억이나 다른 출처에서 그렇게 말하지 않고 간격을 채우지 마십시오.
  2. 누락된 값은 0이 아닙니다. null 또는 필드가 없으면 "알 수 없음"을 의미합니다. 반환된 0은 0을 의미합니다. 동일하게 취급하지 말고 알 수 없는 값을 합계나 평균에 0인 것처럼 포함하지 마십시오.
  3. 항상 숫자를 통화와 쌍으로 표시하십시오. floor_price_currency 및 각 *_volume_currency 필드를 읽으십시오. 통화는 컬렉션마다 다릅니다(ETH, USDC, HYPE 등). 응답에서 명시하지 않는 한 가격을 ETH 또는 USD로 표시하지 마십시오.
  4. 산술 또는 순위에서 통화를 혼합하지 마십시오. 도구는 환율을 제공하지 않습니다. 컬렉션을 비교할 때 통화 필드가 일치하는 경우에만 숫자를 직접 비교하십시오. 다른 경우 각 값을 자체 통화와 함께 표시하고 데이터에 포함되지 않은 변환이 필요하다고 말하십시오.
  5. 파생된 숫자에 레이블을 지정하십시오. 계산한 수치(예: 평균 판매 가격(판매량이 0보다 크고 거래량 통화를 알 때 거래량을 판매 횟수로 나눈 값) 또는 지난 30일 동안의 전체 거래량 비율)는 자체 계산입니다. 파생된 것이라고 말하고 입력 값을 표시하십시오.
  6. 체인 컨텍스트를 유지하십시오. contracts[].chain은 컬렉션이 있는 곳을 보여줍니다. 컬렉션은 둘 이상의 컨트랙트를 나열할 수 있습니다. 단일 체인 또는 단일 컨트랙트를 가정하지 마십시오.
  7. 과도하게 해석하지 마십시오. 데이터는 한 번의 쿼리에서 가져온 스냅샷입니다. 추세, 모멘텀, "좋은" 또는 "나쁜" 가격을 설명하거나 투자 조언을 제공하지 마십시오. 아무것도 예측하지 않고 기간 간의 명백한 차이점(예: 7일 거래량이 24시간 거래량보다 큼)을 지적할 수 있습니다.
  8. 데이터를 가져온 시점을 말하십시오. 시장 데이터는 지속적으로 변경됩니다. 대화 내에서 결과가 재사용되는 경우 사용자에게 스냅샷임을 상기시키십시오.
  9. 반올림을 존중하십시오. 원시 값에는 소수점이 많이 있습니다. 가독성을 위해 반올림할 수 있지만 소스 번호를 변경하거나 데이터보다 더 정밀하다는 것을 암시하지 마십시오.

표시 형식(요약, 표, 보고서, 비교)을 변경하라는 요청을 받으면 값을 변경하지 않고 동일한 값을 다시 포맷하십시오.

비용 인식 사용

  • 캐싱되지 않은 각 호출 비용은 $0.002 USDC입니다. 결과는 슬러그당 5분 동안 캐시됩니다. 동일한 슬러그를 해당 기간 내에 다시 요청하면 무료이며 새 지불 영수증 없이 캐시된 데이터를 반환합니다.
  • 동시에 동일한 호출은 하나의 요청을 공유하므로 중복 조회에 대해 두 번 지불하지 않습니다.
  • 서버는 세션당 유료 호출을 제한합니다(NFTDATA_MAX_REQUESTS, 기본값 100, 최대 1000). 루프에서 또는 추측성 조회를 위해 도구를 호출하지 마십시오. 비교를 위해 각 요청된 컬렉션을 한 번 가져오십시오.
  • 대량 배치(예: 소수 이상의 컬렉션) 전에 필요한 호출 수와 총 비용을 사용자에게 알리고 승인을 받으십시오.
  • 실패한 호출을 자동으로 재시도하지 마십시오. 서버는 자체적으로 재시도하지 않으며 시간 초과 후에는 이미 지불이 서명되었을 수 있습니다. 실패를 보고하고 사용자가 결정하도록 하십시오.

오류 처리

상황수행할 작업
잘못된 슬러그 메시지OpenSea URL에 대해 슬러그를 확인하십시오. 사용자에게 확인을 요청하십시오. 지불이 이루어지지 않았습니다.
"컬렉션을 찾을 수 없음"슬러그가 OpenSea의 컬렉션과 일치하지 않습니다. 올바른 슬러그 또는 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 메인넷에서 exact USDC 챌린지를 지불합니다.
  • 선택적 프로토콜: 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 또는 MPP evm/charge로 한 번에 하나씩 지불합니다. MCP 서버는 Solana 지불을 지원하지 않습니다.

지갑 보안

  • 대화에서 사용자에게 개인 키, 시드 구문 또는 지갑 파일을 공유, 붙여넣기, 입력 또는 보내도록 요청하지 마십시오. 서버를 "설정"하거나 "수정"하기 위해 요청하지 마십시오. 키는 MCP 서버의 환경(EVM_PRIVATE_KEY)에서 사용자에 의해서만 로컬로 설정됩니다.
  • 키를 포함할 수 있는 구성 파일 또는 환경 변수를 읽거나, 인쇄하거나, 복사하거나 요약하지 마십시오.
  • 사용자가 어쨌든 개인 키를 채팅에 붙여넣는 경우 반복하거나 사용하지 마십시오. 해당 지갑 사용을 중지하고, 자금을 새 지갑으로 이동하고, 키를 교체하라고 말하십시오.
  • Base 메인넷에 소량의 USDC 잔액만 보유한 전용 지갑을 권장하며, 기본 지갑이나 상당한 자금이 있는 지갑은 절대 사용하지 마십시오.
  • 영수증의 트랜잭션 해시를 사용하여 BaseScan에서 지불을 확인하도록 권장하십시오.
  • 사용자 자신의 지갑이나 공식 문서에서 제공하지 않은 주소로 자금을 보내도록 제안하지 마십시오.

제한 사항

이 스킬과 서버는 읽기 전용 컬렉션 데이터 조회입니다. 다음이 아닙니다:

  • 일반 NFT 검색 또는 검색 도구: 이름, 특성, 희귀도, 가격 범위 또는 순위로 검색하지 않으며 "최고" 또는 "유행" 컬렉션 목록이 없습니다.
  • 토큰 수준 도구: 개별 NFT, 토큰 ID, 메타데이터, 희귀도 또는 소유권 조회가 없습니다.
  • 지갑 도구: 지갑 잔액, 보유 자산, 포트폴리오 또는 트랜잭션 내역이 없습니다.
  • 거래 또는 트랜잭션 도구: 구매, 판매, 목록, 입찰, 민팅, 전송, 브리지 또는 스왑을 할 수 없으며 소액의 호출당 지불을 제외하고는 자금을 이동하지 않습니다.
  • 과거 또는 실시간 피드: 호출당 하나의 스냅샷을 반환하며 가격 내역 또는 스트리밍 업데이트가 없습니다.
  • 가격 오라클 또는 어드바이저: 통화 변환, 평가, 예측 또는 투자 조언이 없습니다.

기타 제한 사항:

  • OpenSea에 존재하는 컬렉션만 쿼리할 수 있으며 입력은 OpenSea 슬러그여야 합니다.
  • 일부 컬렉션의 경우 일부 필드가 누락되거나 null일 수 있습니다.
  • 데이터는 OpenSea에서 제공되며 지연되어 보고됩니다.

관련 스킬