Назад към всички

opensea-mcp

// Query NFT data, trade on the Seaport marketplace, and swap ERC20 tokens across Ethereum, Base, Arbitrum, Optimism, Polygon, and more.

$ git log --oneline --stat
stars:1,933
forks:367
updated:March 4, 2026
SKILL.mdreadonly

OpenSea API

Query NFT data, trade on the Seaport marketplace, and swap ERC20 tokens across Ethereum, Base, Arbitrum, Optimism, Polygon, and more.

Quick start

  1. Set OPENSEA_API_KEY in your environment
  2. Run helper scripts in scripts/ for common operations
  3. Use the MCP server for token swaps and advanced queries
export OPENSEA_API_KEY="your-api-key"

# Token swap: ETH to token
./scripts/opensea-swap.sh 0xTokenAddress 0.1 0xYourWallet 0xYourKey base

# Token swap: Token to token (specify from_token as last arg)
./scripts/opensea-swap.sh 0xToToken 100 0xYourWallet 0xYourKey base 0xFromToken

# Get collection info
./scripts/opensea-collection.sh boredapeyachtclub

# Get NFT details
./scripts/opensea-nft.sh ethereum 0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d 1234

# Get best listing price for an NFT
./scripts/opensea-best-listing.sh boredapeyachtclub 1234

Task guide

Token swaps

OpenSea's API includes a cross-chain DEX aggregator for swapping ERC20 tokens with optimal routing across all supported chains.

TaskTool/Script
Get swap quote with calldataget_token_swap_quote (MCP) or opensea-swap.sh
Check token balancesget_token_balances (MCP)
Search tokenssearch_tokens (MCP)
Get trending tokensget_trending_tokens (MCP)
Get top tokens by volumeget_top_tokens (MCP)

Reading NFT data

TaskScript
Get collection detailsopensea-collection.sh <slug>
Get collection statsopensea-collection-stats.sh <slug>
List NFTs in collectionopensea-collection-nfts.sh <slug> [limit] [next]
Get single NFTopensea-nft.sh <chain> <contract> <token_id>
List NFTs by walletopensea-account-nfts.sh <chain> <address> [limit]

Marketplace queries

TaskScript
Get best listing for NFTopensea-best-listing.sh <slug> <token_id>
Get best offer for NFTopensea-best-offer.sh <slug> <token_id>
List all collection listingsopensea-listings-collection.sh <slug> [limit]
List all collection offersopensea-offers-collection.sh <slug> [limit]
Get listings for specific NFTopensea-listings-nft.sh <chain> <contract> <token_id>
Get offers for specific NFTopensea-offers-nft.sh <chain> <contract> <token_id>
Get order by hashopensea-order.sh <chain> <order_hash>

Marketplace actions (POST)

TaskScript
Get fulfillment data (buy NFT)opensea-fulfill-listing.sh <chain> <order_hash> <buyer>
Get fulfillment data (accept offer)opensea-fulfill-offer.sh <chain> <order_hash> <seller> <contract> <token_id>
Generic POST requestopensea-post.sh <path> <json_body>

Events and monitoring

TaskScript
Get collection eventsopensea-events-collection.sh <slug> [event_type] [limit]
Stream real-time eventsopensea-stream-collection.sh <slug> (requires websocat)

Generic requests

TaskScript
Any GET endpointopensea-get.sh <path> [query]
Any POST endpointopensea-post.sh <path> <json_body>

Buy/Sell workflows

Buying an NFT

  1. Find the NFT and check its listing:

    ./scripts/opensea-best-listing.sh cool-cats-nft 1234
    
  2. Get the order hash from the response, then get fulfillment data:

    ./scripts/opensea-fulfill-listing.sh ethereum 0x_order_hash 0x_your_wallet
    
  3. The response contains transaction data to execute on-chain

Selling an NFT (accepting an offer)

  1. Check offers on your NFT:

    ./scripts/opensea-best-offer.sh cool-cats-nft 1234
    
  2. Get fulfillment data for the offer:

    ./scripts/opensea-fulfill-offer.sh ethereum 0x_offer_hash 0x_your_wallet 0x_nft_contract 1234
    
  3. Execute the returned transaction data

Creating listings/offers

Creating new listings and offers requires wallet signatures. Use opensea-post.sh with the Seaport order structure - see references/marketplace-api.md for full details.

Scripts reference

NFT & Collection Scripts

ScriptPurpose
opensea-get.shGeneric GET (path + optional query)
opensea-post.shGeneric POST (path + JSON body)
opensea-collection.shFetch collection by slug
opensea-collection-stats.shFetch collection statistics
opensea-collection-nfts.shList NFTs in collection
opensea-nft.shFetch single NFT by chain/contract/token
opensea-account-nfts.shList NFTs owned by wallet

Marketplace Scripts

ScriptPurpose
opensea-listings-collection.shAll listings for collection
opensea-listings-nft.shListings for specific NFT
opensea-offers-collection.shAll offers for collection
opensea-offers-nft.shOffers for specific NFT
opensea-best-listing.shLowest listing for NFT
opensea-best-offer.shHighest offer for NFT
opensea-order.shGet order by hash
opensea-fulfill-listing.shGet buy transaction data
opensea-fulfill-offer.shGet sell transaction data

Token Swap Scripts

ScriptPurpose
opensea-swap.shSwap tokens via OpenSea MCP

Monitoring Scripts

ScriptPurpose
opensea-events-collection.shCollection event history
opensea-stream-collection.shReal-time WebSocket events

Supported chains

ethereum, matic, arbitrum, optimism, base, avalanche, klaytn, zora, blast, sepolia

References

  • references/rest-api.md - REST endpoint families and pagination
  • references/marketplace-api.md - Buy/sell workflows and Seaport details
  • references/stream-api.md - WebSocket event streaming
  • references/seaport.md - Seaport protocol and NFT purchase execution
  • references/token-swaps.md - Token swap workflows via MCP

OpenSea MCP Server

An official OpenSea MCP server provides direct LLM integration for token swaps and NFT operations. When enabled, Claude can execute swaps, query token data, and interact with NFT marketplaces directly.

Setup:

  1. Go to the OpenSea Developer Portal and verify your email
  2. Generate a new API key for REST API access
  3. Generate a separate MCP token for the MCP server

Add to your MCP config:

{
  "mcpServers": {
    "opensea": {
      "url": "https://mcp.opensea.io/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_MCP_TOKEN"
      }
    }
  }
}

Or use the inline token format: https://mcp.opensea.io/YOUR_MCP_TOKEN/mcp

Token Swap Tools

MCP ToolPurpose
get_token_swap_quoteGet swap calldata for token trades
get_token_balancesCheck wallet token holdings
search_tokensFind tokens by name/symbol
get_trending_tokensHot tokens by momentum
get_top_tokensTop tokens by 24h volume
get_tokensGet detailed token info

NFT Tools

MCP ToolPurpose
search_collectionsSearch NFT collections
search_itemsSearch individual NFTs
get_collectionsGet detailed collection info
get_itemsGet detailed NFT info
get_nft_balancesList NFTs owned by wallet
get_trending_collectionsTrending NFT collections
get_top_collectionsTop collections by volume
get_activityTrading activity for collections/items
get_upcoming_dropsUpcoming NFT mints

Profile & Utility Tools

MCP ToolPurpose
get_profileWallet profile with holdings/activity
account_lookupResolve ENS/address/username
get_chainsList supported chains
searchAI-powered natural language search
fetchGet full details by entity ID

Token Swaps via MCP

OpenSea MCP supports ERC20 token swaps across supported DEXes - not just NFTs!

Get Swap Quote

mcporter call opensea.get_token_swap_quote --args '{
  "fromContractAddress": "0x0000000000000000000000000000000000000000",
  "fromChain": "base",
  "toContractAddress": "0xb695559b26bb2c9703ef1935c37aeae9526bab07",
  "toChain": "base",
  "fromQuantity": "0.02",
  "address": "0xYourWalletAddress"
}'

Parameters:

  • fromContractAddress: Token to swap from (use 0x0000...0000 for native ETH)
  • toContractAddress: Token to swap to
  • fromChain / toChain: Chain identifiers
  • fromQuantity: Amount in human-readable units (e.g., "0.02" for 0.02 ETH)
  • address: Your wallet address

Response includes:

  • swapQuote: Price info, fees, slippage impact
  • swap.actions[0].transactionSubmissionData: Ready-to-use calldata

Execute the Swap

import { createWalletClient, http } from 'viem';
import { privateKeyToAccount } from 'viem/accounts';
import { base } from 'viem/chains';

// Extract from swap quote response
const txData = response.swap.actions[0].transactionSubmissionData;

const wallet = createWalletClient({ 
  account: privateKeyToAccount(PRIVATE_KEY), 
  chain: base, 
  transport: http() 
});

const hash = await wallet.sendTransaction({
  to: txData.to,
  data: txData.data,
  value: BigInt(txData.value)
});

Check Token Balances

mcporter call opensea.get_token_balances --args '{
  "address": "0xYourWallet",
  "chains": ["base", "ethereum"]
}'

Generating a wallet

To execute swaps or buy NFTs, you need an Ethereum wallet (private key + address).

Using Node.js

import crypto from 'crypto';
import { privateKeyToAccount } from 'viem/accounts';

const privateKey = '0x' + crypto.randomBytes(32).toString('hex');
const account = privateKeyToAccount(privateKey);

console.log('Private Key:', privateKey);
console.log('Address:', account.address);

Using OpenSSL

# Generate private key
PRIVATE_KEY="0x$(openssl rand -hex 32)"
echo "Private Key: $PRIVATE_KEY"

# Derive address (requires node + viem)
node --input-type=module -e "
import { privateKeyToAccount } from 'viem/accounts';
console.log('Address:', privateKeyToAccount('$PRIVATE_KEY').address);
"

Using cast (Foundry)

cast wallet new

Important: Store private keys securely. Never commit them to git or share publicly.

Requirements

  • OPENSEA_API_KEY environment variable (for REST API scripts)
  • OPENSEA_MCP_TOKEN environment variable (for MCP server, separate from API key)
  • curl for REST calls
  • websocat (optional) for Stream API
  • jq (recommended) for parsing JSON responses

Get both credentials at opensea.io/settings/developer.