Unclaimed SOL Scanner
Scan and claim reclaimable SOL from dormant Solana wallet accounts. The first Vibe Claiming MCP 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:
- Dry run (default) — shows a breakdown of reclaimable accounts, estimated SOL, fee, and transaction count. Returns a one-time
execution_tokenvalid for 60 seconds. - Execute — call again with
dry_run: falseand theexecution_tokento 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, or127.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
- The MCP server calls the UnclaimedSOL backend to fetch reclaimable token and buffer accounts.
- Instructions are built using the
@unclaimedsol/spl-burn-close-sdk— token balances are burned and accounts are closed via the UnclaimedSOL on-chain program. - Transactions are signed locally with your keypair and broadcast to the Solana network.
- 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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.