npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

nansen-nexus-mcp

v1.0.0

Published

Enterprise-grade compound workflows for AI Agents — powered by Nansen CLI

Readme

🧠 Nansen Nexus MCP

Compound Skills Router for AI Agents — Enterprise-grade MCP server exposing Nansen on-chain intelligence as composable AI tools.

CI Status License TypeScript MCP Node 20 Node 22 Node 24 Tools Tests Coverage Nansen CLI Docker


🎯 What is this?

Nansen Nexus MCP is the capstone of a 4-week build challenge where 90+ developers competed to build the best Nansen CLI integrations. After shipping 4 projects, writing 698 tests, and placing 🥈 2nd Place in Week 2, the pattern became clear:

Everyone built retail dashboards. Nobody built infrastructure for AI agents.

Nexus fills that gap. It wraps Nansen's entire on-chain intelligence surface into MCP-standardized compound skills that any AI agent (Claude, Cursor, Windsurf, etc.) can invoke via JSON-RPC — turning hackathon-winning logic into reusable AI plumbing.

Why MCP?

The Nansen Growth Manager on the API / MCP team identified compound workflows as the highest-leverage integration pattern. Instead of piping raw JSON into prompts, Nexus pre-packages multi-step analytics (Sybil detection, Wyckoff classification, SM divergence scoring) as single tool calls — reducing token spend, latency, and hallucinations.


🏗️ Architecture

Nansen Nexus MCP Architecture


🧬 Origin Story

Each of the 13 tools has a lineage — either derived from our own challenge projects or aggregated from the 28 best open-source community submissions:

🏆 From Our Challenge Projects

| Tool | Origin Project | Challenge Week | |------|---------------|----------------| | polymarket-oracle | Nansen Polymarket Oracle | Week 3 — First tool to use prediction market endpoints | | network-traversal | Project RedString | Week 4 — BFS wallet forensics + 3D WebGL graph | | wallet-roast | Inspired by Cookd.wtf (@HeavyOT) | Week 1 winner — virality > complexity | | stable-shield | Strategic B2B gap identified in deep analysis | Institutional stablecoin parking monitor | | wyckoff-screener | Trading signal analysis | Token phase classification |

🛠 From Community Aggregation

| Tool | Source Repos | What It Bundles | |------|-------------|-----------------| | airdrop-eligibility | eligibility-dashboard, onchain-activity-radar | Airdrop scoring + Sybil checks | | smart-money-copy-trade | nansen-hunt-alpha, sm-divergence-detector, +1 | High-conviction SM copy list | | perp-funding-monitor | apexhunter-skill, nansensei, nansen-cli-tools | Funding rate anomaly detection |


🚀 Quick Start

Choose your preferred way to run the MCP server: Make, Docker, or Manual NPM.

Option A: Using make (Recommended)

The included Makefile abstracts all the setup and execution commands.

# 1. Install dependencies and create .env
make setup
# ⚠️ Edit .env and insert your NANSEN_API_KEY

# 2. Build the project
make build

# 3. Run the interactive MCP Inspector UI
make inspect

# 4. Or, run in Stdio mode (for Cursor / Claude Desktop)
make serve-stdio

Option B: Using Docker

Perfect for cloud deployments (like Cloud Run) or keeping your local environment clean. The server runs on HTTP transport by default.

# 1. Create your env file
cp .env.example .env
# ⚠️ Edit .env and insert your NANSEN_API_KEY

# 2. Build and spin up the container in the background
docker compose up --build -d

# 3. View live logs
docker compose logs -f

# 4. Shut down when finished
docker compose down

(Alternatively, you can just use make docker-up and make docker-down)

Option C: Manual NPM

For developers looking to run commands manually.

# 1. Install dependencies
npm install

# 2. Configure API key
cp .env.example .env
# ⚠️ Edit .env and insert your NANSEN_API_KEY

# 3. Build & run (stdio mode — for Claude Desktop / Cursor)
npm run build
npm run serve:stdio

# 4. Or run in HTTP mode (for remote agents)
npm run serve:http

Register in Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "nansen-nexus": {
      "command": "node",
      "args": ["/path/to/NansenNexusMCP/build/index.js"]
    }
  }
}

🛠️ Available Tools

| Tool | Description | Key Params | |------|-------------|------------| | smart-money-tracker | Track labeled wallet movements across chains | chain, timeframe, entityType | | token-flow-analyzer | CEX/DEX inflow/outflow analysis | token, chain, flowType | | wallet-profiler | Full wallet dossier: labels, PnL, history | address, chain, includePnl | | hot-contracts-scanner | Discover trending Smart Money contracts | chain, timeframe, limit | | nft-market-tracker | NFT collection volume, floor, sweeps | collection, chain, metric | | network-traversal | BFS wallet traversal for Sybil detection | address, chain, depth | | polymarket-oracle | Polymarket odds vs Smart Money divergence | marketId, includeHolders | | stable-shield | Monitor institutional stablecoin parking | address, chain | | wallet-roast | Analyze worst trades for roasting material | address, chain | | wyckoff-screener | Screen tokens for Wyckoff phases | tokenAddress, chain | | perp-funding-monitor | Perp market funding rate anomalies | token | | smart-money-copy-trade | High-conviction copy-trade signals | chain, minTradeUsd | | airdrop-eligibility | Estimate wallet airdrop eligibility | address |

🔍 Example Outputs

{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "pagination": {
          "page": 1,
          "per_page": 10,
          "is_last_page": true
        },
        "data": []
      }
    }
  }
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": false,
    "error": "Unknown research category: hot-contracts. Available: smart-money, profiler, token, search, perp, portfolio, points, prediction-market",
    "code": "UNKNOWN",
    "status": null
  }
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "pagination": {
          "page": 1,
          "per_page": 10,
          "is_last_page": true
        },
        "data": []
      }
    }
  }
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "nfts": [
        "pudgy"
      ]
    },
    "cmd": "research nft paradise",
    "args": [
      "--chain",
      "ethereum",
      "--timeframe",
      "24h",
      "--metric",
      "volume",
      "--collection",
      "0x123"
    ]
  }
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "data": [
          {
            "volume": 70088716064.8529,
            "buy_volume": 35365202382.73637,
            "sell_volume": 34723513682.11654,
            "buy_sell_pressure": 641688700.61983,
            "trader_count": 82712,
            "token_symbol": "BTC",
            "mark_price": 75669,
            "funding": -0.0000183626,
            "open_interest": 2141165415.90468,
            "previous_price_usd": 71213
          },
          {
            "volume": 6683711284.2131,
            "buy_volume": 3464331241.1264,
            "sell_volume": 3219380043.0867,
            "buy_sell_pressure": 244951198.0397,
            "trader_count": 20986,
            "token_symbol": "xyz:SP500",
... (truncated 111 lines) ...
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "pagination": {
          "page": 1,
          "per_page": 10,
          "is_last_page": false
        },
        "data": [
          {
            "market_id": "1994007",
            "question": "Israel x Hezbollah ceasefire by April 18, 2026?",
            "slug": "israel-x-hezbollah-ceasefire-by-april-18-2026",
            "event_id": "242420",
            "event_title": "Israel x Hezbollah ceasefire by...?",
            "active": true,
            "closed": false,
            "end_date": "2026-04-15T00:00:00",
            "neg_risk": false,
            "tags": [
              "Iran",
              "Israel",
              "Geopolitics",
... (truncated 331 lines) ...
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "data": [
          {
            "chain": "ethereum",
            "block_timestamp": "2026-04-19T00:36:59",
            "transaction_hash": "0xfaaa17a02ec4cba8019f010d33f529981a5971d7dd69d5a8a190ccfdda699abc",
            "trader_address": "0xbdd705c1bea262817f6d3a5cf480cceccae8d0ab",
            "trader_address_label": "Token Millionaire",
            "token_bought_address": "0x7a76db883446022ecbc86b9280e34055ec1be05c",
            "token_sold_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
            "token_bought_amount": 187944.962598919,
            "token_sold_amount": 666,
            "token_bought_symbol": "RISE",
            "token_sold_symbol": "USDC",
            "token_bought_age_days": 482,
            "token_sold_age_days": 2816,
            "token_bought_market_cap": null,
            "token_sold_market_cap": 78499325560,
            "token_bought_fdv": 275882.872900164,
            "token_sold_fdv": 78499721374,
            "trade_value_usd": 665.8997310560211
... (truncated 191 lines) ...
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "data": [
          {
            "token_address": "0x5a98fcbea516cf06857215779fd812ca3bef1b32",
            "token_symbol": "LDO",
            "net_flow_1h_usd": 0,
            "net_flow_24h_usd": 253442.34317953387,
            "net_flow_7d_usd": 253442.34317953387,
            "net_flow_30d_usd": 253442.3311766702,
            "chain": "ethereum",
            "token_sectors": [],
            "trader_count": 3,
            "token_age_days": 1949,
            "market_cap_usd": 322227915
          },
          {
            "token_address": "0x8390a1da07e376ef7add4be859ba74fb83aa02d5",
            "token_symbol": "GROK",
            "net_flow_1h_usd": 0,
            "net_flow_24h_usd": 23568.647689030906,
            "net_flow_7d_usd": 23568.647689030906,
... (truncated 130 lines) ...
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "summary": {
          "total_value_usd": 0,
          "total_assets_usd": 0,
          "total_debts_usd": 0,
          "total_rewards_usd": 0,
          "token_count": 0,
          "protocol_count": 0
        },
        "protocols": []
      }
    }
  }
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "data": [
          {
            "public_figure_net_flow_usd": 0,
            "public_figure_avg_flow_usd": null,
            "public_figure_wallet_count": 0,
            "top_pnl_net_flow_usd": 0,
            "top_pnl_avg_flow_usd": null,
            "top_pnl_wallet_count": 0,
            "whale_net_flow_usd": 0,
            "whale_avg_flow_usd": null,
            "whale_wallet_count": 0,
            "smart_trader_net_flow_usd": 0,
            "smart_trader_avg_flow_usd": null,
            "smart_trader_wallet_count": 0,
            "exchange_net_flow_usd": 0,
            "exchange_avg_flow_usd": null,
            "exchange_wallet_count": 0,
            "fresh_wallets_net_flow_usd": 0,
            "fresh_wallets_avg_flow_usd": 0,
            "fresh_wallets_wallet_count": 0
... (truncated 7 lines) ...
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "pagination": {
          "page": 1,
          "per_page": 1,
          "is_last_page": true
        },
        "top5_tokens": [],
        "traded_token_count": 0,
        "traded_times": 0,
        "realized_pnl_usd": 0,
        "realized_pnl_percent": 0,
        "win_rate": 0
      }
    }
  }
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "pagination": {
          "page": 1,
          "per_page": 20,
          "is_last_page": true
        },
        "data": []
      }
    }
  }
}
{
  "metadata": {
    "status": "historical_live",
    "source": "Nansen CLI -> MCP Nexus"
  },
  "data": {
    "success": true,
    "data": {
      "success": true,
      "data": {
        "data": {
          "name": "",
          "symbol": "",
          "contract_address": "0xd8da6bf26964af9d7eed9e03e53415dd37ae6abf",
          "logo": "",
          "token_details": {
            "token_deployment_date": "",
            "website": "",
            "x": "",
            "telegram": "",
            "market_cap_usd": 0,
            "fdv_usd": 0,
            "circulating_supply": 0,
            "total_supply": 0
          },
          "spot_metrics": {
            "volume_total_usd": 0,
            "buy_volume_usd": 0,
            "sell_volume_usd": 0,
            "total_buys": 0,
... (truncated 11 lines) ...
}

📊 Nansen CLI Endpoint Coverage

Nexus exercises 50+ unique Nansen CLI endpoints across all 13 tools — the deepest coverage of any single MCP integration:

| Endpoint Family | Tools Using It | |-----------------|---------------| | research smart-money netflow/dex-trades/holdings | smart-money-tracker, copy-trade, stable-shield | | research token info/indicators/ohlcv/screener | token-flow-analyzer, wyckoff-screener | | research token flow-intelligence/who-bought-sold | token-flow-analyzer, wyckoff-screener | | research profiler balance/labels/pnl/trace | wallet-profiler, network-traversal, wallet-roast | | research profiler counterparties/related-wallets | network-traversal (BFS Sybil detection) | | research prediction-market * (12 sub-endpoints) | polymarket-oracle | | research perp screener/leaderboard | perp-funding-monitor | | research portfolio defi | stable-shield |


📂 Project Structure

src/
├── index.ts                        # Entry point
├── server/
│   └── boot.ts                     # Dual transport (stdio/HTTP) server
├── lib/
│   └── nansen-cli.ts               # CLI wrapper (child_process.execFile)
├── registry/
│   ├── auto-loader.ts              # Auto-discovery engine
│   ├── helpers.ts                  # Module loading utilities
│   ├── module-processor.ts         # Validation & registration
│   └── types.ts                    # RegisterableModule interface
├── tools/
│   ├── smart-money-tracker.ts      # Smart Money movements
│   ├── token-flow-analyzer.ts      # Token flow intelligence
│   ├── wallet-profiler.ts          # Wallet dossier
│   ├── hot-contracts-scanner.ts    # Trending contracts
│   ├── nft-market-tracker.ts       # NFT market analysis
│   ├── network-traversal.ts        # BFS Sybil detection
│   ├── polymarket-oracle.ts        # Prediction market oracle
│   ├── stable-shield.ts            # Stablecoin institutional guardian
│   ├── wallet-roast.ts             # Wallet roasting
│   ├── wyckoff-screener.ts         # Wyckoff phase classifier
│   ├── perp-funding-monitor.ts     # Perp funding anomalies
│   ├── smart-money-copy-trade.ts   # Copy-trade signals
│   └── airdrop-eligibility.ts      # Airdrop scoring
└── resources/
    └── server-status.ts            # Server health resource

All tools are auto-discovered at boot via the module registry system. Just drop a .ts file in src/tools/ and it's live.


🧪 Development

# Type-check
npm run typecheck

# Run tests
npm test

# Run tests with coverage
npm run test:coverage

# Lint
npm run lint

# Interactive REPL
npm run dev

# MCP Inspector
npm run inspect

# Generate new tool
npm run gen:tool

🐳 Docker

# Build & run
docker compose up --build

# With API key
NANSEN_API_KEY=your_key docker compose up --build

🏆 Challenge Context

This project is the 5th build in a progressive arc across the Nansen CLI Build Challenge (March–April 2026):

| Week | Project | Result | What It Proved | |------|---------|--------|----------------| | 1 | Make Alpha | Unplaced | Zero-dep data compilation | | 2 | NansenTerm | 🥈 2nd Place (100K Credits) | Interactive TUI + live streaming | | 3 | Polymarket Oracle | Submitted | Predictive SM divergence scoring | | 4 | Project RedString | Submitted | Forensic 3D graph visualization | | 5 | Nansen Nexus MCP | Capstone | Enterprise MCP infrastructure |

Season Stats

| Metric | Value | |--------|-------| | Projects shipped | 5 | | Total tests (all projects) | 698+ | | Total TypeScript LOC | ~23,000+ | | Nansen CLI endpoints used | 50+ | | Best placement | 🥈 2nd Place (Week 2) | | Prize won | 100,000 Nansen API Credits |


🔗 Related Projects

| Project | Description | |---------|-------------| | nansen-make-alpha | Zero-dep Makefile alpha compiler | | nansen-term | Bloomberg-style TUI for Nansen CLI | | nansen-polymarket-oracle | SM × Polymarket divergence scoring | | NansenRedString | Forensic 3D wallet graph visualizer |


📄 License

MIT — Built by @edycutjong for the Nansen ecosystem.