Retrieve the list of holder addresses for an NFT contractLABSCO SUMMARY
Five separate entries, and that turns out to be an advantage.
Because each capability is a separate built file registered on its own, you can connect just the wallet-value lookup without also loading the trending rankings — useful when tool budget is tight. The setup wrinkle to know about is the Thirdweb key: it is edited into the source before building rather than read from the environment, so it has to be in place at build time, and rotating it means rebuilding.
What it is
A set of small MCP servers over NFT APIs for the Monad testnet. Each answers one question: who holds a collection, what an address owns, what that is worth at floor prices, and which collections are trending by sales or by volume.
What you get
- The list of holder addresses for an NFT contract
- All the NFT collections a given address holds
- The total value of an address's NFTs, calculated from floor prices
- Top-selling collections ranked by number of sales
- Top-selling collections ranked by volume
- A time window on both rankings: 5 min, 10 min, 30 min, 1 h, 6 h, 24 h, 1 d, 7 d or 30 d
- Each capability ships as its own built file, so you register only the ones you want in the client config
Requirements
Node.js v16 or later and npm. Clone, npm install, then npm run build; the client registers the built files it needs by absolute path. The holders lookup additionally needs a Thirdweb client key, created as a project with origin allowance and pasted into nft-owners.ts as THIRDWEB_CLIENT_ID before the build. Data is Monad testnet, so figures are testnet figures.
Setup effort
Build from source — clone the repository and build it, then follow the steps on this page and add the configuration for your client
USE CASES
Valuing a wallet at a glance
Read the collections an address holds and the total floor-price value in the same conversation.
Finding out who holds a collection
Pull the holder addresses for a contract rather than scraping an explorer.
Spotting what is moving right now
Rank collections by sales or by volume over a window as short as five minutes.
Comparing activity over different horizons
Ask for the same ranking over an hour and over a week to see whether a spike held.
5 tools
Listed in project docs. Your client may show a different list.
Calculate the total NFT value held by an address using floor pricesList all NFT collections that an address holdsGet the top-selling collections by number of sales (5 min, 10 min, 30 min, 1 h, 6 h, 24 h, 1 d, 7 d, 30 d)Get the top-selling collections by volume (5 min, 10 min, 30 min, 1 h, 6 h, 24 h, 1 d, 7 d, 30 d)BEFORE YOU INSTALL
What to know first
Tools you get
5 tools named in the project's documentation. These are 5 separate MCP servers, each added as its own mcpServers entry, not 5 tools in one server.
Requires
- Node.js v16 or later, and npm
- Claude Desktop
- A Thirdweb client ID (create a Thirdweb project with the origin allowance set to *), pasted into src/nft-owners.ts at const THIRDWEB_CLIENT_ID before you build (only the nft-owners server uses it)
INSTALLATION
Connect your client
Clone the repository and build it, then follow the steps on this page and add the configuration for your client. This one is built from source rather than installed with a single command.
Server setup
Build from source
git clone https://github.com/Sifu213/monad-mcp-magiceden.git
cd monad-mcp-magiceden
npm installPut your Thirdweb client key in src/nft-owners.ts, on the line const THIRDWEB_CLIENT_ID = "yourclientkey"; — you get one by creating a Thirdweb project with the origin allowance set to *.
npm run buildAdd the configuration to claude_desktop_config.json (Claude > Settings > Developer) — <YOUR_ABSOLUTE_PATH> in it is the absolute path to your clone — then fully restart Claude Desktop.
node
node <YOUR_ABSOLUTE_PATH>\dist\top-selling-collections.jsMCP Clients
Any MCP client
{
"mcpServers": {
"top-selling-collections": {
"command": "node",
"args": [
"<YOUR_ABSOLUTE_PATH>\\dist\\top-selling-collections.js"
]
},
"top-volume-collections": {
"command": "node",
"args": [
"<YOUR_ABSOLUTE_PATH>\\dist\\top-volume-collections.js"
]
},
"collections": {
"command": "node",
"args": [
"<YOUR_ABSOLUTE_PATH>\\dist\\user-collection.js"
]
},
"totalValue": {
"command": "node",
"args": [
"<YOUR_ABSOLUTE_PATH>\\dist\\user-nft-value.js"
]
},
"nft-owners": {
"command": "node",
"args": [
"<YOUR_ABSOLUTE_PATH>\\dist\\nft-owners.js"
]
}
}
}THIRDWEB_CLIENT_ID is set in the source, not the environment: it goes in src/nft-owners.ts before you build, and only the holders server (nft-owners) uses it.