Unclaimed SOL Scanner

Unclaimed SOL Scanner

Scan and claim reclaimable SOL from dormant Solana wallet accounts. The first Vibe Claiming MCP server.

Category
Visit Server

README

@unclaimed-sol/mcp

MCP server for UnclaimedSOL — scan and reclaim dormant SOL from Solana wallets directly from AI assistants like Claude, ChatGPT, and others that support the Model Context Protocol.

What it does

Solana wallets accumulate rent-locked SOL in dormant token accounts (zero-balance ATAs) and program buffer accounts. This MCP server lets AI assistants:

  • Scan any wallet to check for reclaimable SOL
  • Claim (Vibe Claiming) — burn worthless token balances, close dormant accounts, and reclaim the rent SOL. Signs and broadcasts transactions locally via the UnclaimedSOL on-chain program. A 5% service fee applies.

Tools

scan_claimable_sol

Check how much SOL a wallet can reclaim. Read-only — no transactions, no keypair needed.

Input: wallet_address (base58 public key)

claim_sol

Claim reclaimable SOL. Requires a configured keypair. Uses a two-step flow:

  1. Dry run (default) — shows a breakdown of reclaimable accounts, estimated SOL, fee, and transaction count. Returns a one-time execution_token valid for 60 seconds.
  2. Execute — call again with dry_run: false and the execution_token to sign and broadcast.

Inputs: wallet_address, dry_run (default true), execution_token, max_transactions (default 10)

This action is irreversible — closed accounts cannot be recovered.

Setup

Prerequisites

  • Node.js 18+
  • npm

Install and build

git clone <repo-url> && cd unclaimed-sol-mcp
npm install
npm run build

Configuration

Scan-only mode (no keypair)

Only the scan_claimable_sol tool is exposed. No transactions are signed or sent.

Add to your MCP client config (e.g. claude_desktop_config.json):

{
  "mcpServers": {
    "unclaimed-sol": {
      "command": "node",
      "args": ["/absolute/path/to/unclaimed-sol-mcp/dist/index.js"],
    }
  }
}

Vibe Claiming mode (with keypair)

Both scan_claimable_sol and claim_sol tools are exposed. Transactions are signed locally with your keypair and broadcast to the Solana network.

For Claude Desktop / Cursor / Windsurf

{
  "mcpServers": {
    "unclaimed-sol": {
      "command": "node",
      "args": ["/absolute/path/to/unclaimed-sol-mcp/dist/index.js"],
      "env": {
        "SOLANA_KEYPAIR_PATH": "~/.config/solana/id.json",
        "SOLANA_RPC_URL": "https://your-rpc-provider.com"
      }
    }
  }
}

For Claude Code

# Scan only
claude mcp add unclaimed-sol \
  -- node /absolute/path/to/unclaimed-sol-mcp/dist/index.js

# Scan + Vibe Claiming
claude mcp add unclaimed-sol \
  -e SOLANA_KEYPAIR_PATH=~/.config/solana/id.json \
  -e SOLANA_RPC_URL=https://your-rpc-provider.com \
  -- node /absolute/path/to/unclaimed-sol-mcp/dist/index.js

Environment variables

Variable Required Description
UNCLAIMED_SOL_API_URL No Backend API URL. Defaults to https://unclaimedsol.com.
UNCLAIMED_SOL_API_KEY No API key sent as Authorization: Bearer header.
SOLANA_KEYPAIR_PATH No Path to Solana keypair JSON file. Enables Vibe Claiming.
SOLANA_PRIVATE_KEY No Private key as base58 string or JSON byte array. Use SOLANA_KEYPAIR_PATH instead when possible.
SOLANA_RPC_URL No Solana RPC endpoint. Defaults to https://api.mainnet-beta.solana.com. A dedicated RPC is recommended for claiming.
SOLANA_PRIORITY_FEE No Priority fee in microlamports per compute unit. Default: 1,000. Max: 200,000.

Security

  • HTTPS enforced — Claim mode requires HTTPS for the API URL (HTTP only allowed for localhost).
  • API URL allowlist — Claim mode only connects to unclaimedsol.com, localhost, or 127.0.0.1.
  • Pre-sign validation — Every transaction is validated before signing: only expected program IDs, fee vault presence verified, no SOL transfers to unknown accounts.
  • Execution tokens — Claims require a dry run first. Tokens are single-use, single-wallet, and expire in 60 seconds.
  • Keypair stays local — Your private key never leaves your machine. Transactions are signed locally.
  • Safety filtering — Token accounts are filtered server-side (maxClaimMode: false) to exclude valuable tokens and NFTs. Frozen accounts are skipped.
  • Request timeouts — All API calls have a 15-second timeout.

How claiming works

  1. The MCP server calls the UnclaimedSOL backend to fetch reclaimable token and buffer accounts.
  2. Instructions are built using the @unclaimedsol/spl-burn-close-sdk — token balances are burned and accounts are closed via the UnclaimedSOL on-chain program.
  3. Transactions are signed locally with your keypair and broadcast to the Solana network.
  4. A 5% service fee is collected on-chain by the program. No funds pass through the MCP server.

Stake account claims are not supported via MCP — use unclaimedsol.com for those.

Project structure

src/
  index.ts              MCP server entry point (stdio transport)
  constants.ts          Program IDs, fee vault, batching limits
  config.ts             Environment variable loading and validation
  validation.ts         Wallet address validation
  formatter.ts          SOL display formatting
  cache.ts              In-memory scan cache (60s TTL)
  tools/
    scan.ts             scan_claimable_sol tool handler
    claim.ts            claim_sol tool handler + execution token management
  services/
    scanner.ts          Backend API client
    transaction.ts      Transaction building + pre-sign validation
    signer.ts           Batch sign, send, confirm with retry

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured