Documentation
SOLMCP is a free, read-only MCP server exposing 12 Solana tools over Streamable HTTP.
Quickstart
Add the server to your client. The endpoint is /api/mcp on this deployment.
claude mcp add --transport http solmcp https://solmcp.vercel.app/api/mcpPrefer plain HTTP? Every tool is mirrored at POST /api/tools/{name}:
curl -X POST https://your-host/api/tools/get_price \
-H "content-type: application/json" \
-d '{"mints":["SOL","USDC"]}'Every result has the shape:
{
"data": {},
"source": "live",
"fetchedAt": "2026-01-01T00:00:00.000Z",
"latencyMs": 142
}Tool reference
get_price
MarketGet live USD prices for Solana tokens. Use for any question about what a token costs right now. Accepts mint addresses or the aliases SOL and USDC. Prices are USD per 1 whole token.
get_price({ mints: string[] })
| Param | Type | Required |
|---|---|---|
| mints | string[] | required |
{
"mints": [
"SOL",
"USDC"
]
}get_swap_quote
MarketGet an informational swap quote from Jupiter. Amount is in UI units of the input token (e.g. 1000 for 1,000 USDC). Returns expected output, price impact and route labels. This is a quote only; nothing is executed or signed.
get_swap_quote({ inputMint, outputMint, amount, slippageBps? })
| Param | Type | Required |
|---|---|---|
| inputMint | string | required |
| outputMint | string | required |
| amount | number | required |
| slippageBps | number | optional |
{
"inputMint": "USDC",
"outputMint": "SOL",
"amount": 1000,
"slippageBps": 50
}get_pairs
MarketList DEX trading pairs for a token mint sorted by liquidity: dex, pair address, price, liquidity USD, 24h volume, 24h transactions and FDV.
get_pairs({ mint })
| Param | Type | Required |
|---|---|---|
| mint | string | required |
{
"mint": "USDC"
}get_trending_pools
MarketList currently trending Solana liquidity pools with FDV, 1h and 24h price change, 24h volume and pool age.
get_trending_pools({ limit? })
| Param | Type | Required |
|---|---|---|
| limit | number | optional |
{
"limit": 10
}get_token_info
TokenGet metadata for a token mint: name, symbol, image, decimals, supply, token program and mint/freeze authority status. Use to check whether a token is mintable or freezable.
get_token_info({ mint })
| Param | Type | Required |
|---|---|---|
| mint | string | required |
{
"mint": "USDC"
}get_token_holders
TokenList the largest token accounts for a mint with percent of supply and top-10 concentration. Largest token accounts may include liquidity pools and exchanges.
get_token_holders({ mint, limit? })
| Param | Type | Required |
|---|---|---|
| mint | string | required |
| limit | number | optional |
{
"mint": "USDC",
"limit": 10
}get_balance
WalletGet the SOL balance and fungible token balances for a public wallet address, with USD values when available.
get_balance({ address })
| Param | Type | Required |
|---|---|---|
| address | string | required |
{
"address": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4"
}get_account
WalletGet raw account info for any address: owner program, lamports, executable flag and a parsed data summary.
get_account({ address })
| Param | Type | Required |
|---|---|---|
| address | string | required |
{
"address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
}get_transactions
WalletList recent parsed transactions for an address with type, description, timestamp, fee and signature.
get_transactions({ address, limit? })
| Param | Type | Required |
|---|---|---|
| address | string | required |
| limit | number | optional |
{
"address": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
"limit": 5
}get_transaction
WalletGet a fully parsed transaction by signature, including type, transfers and fee.
get_transaction({ signature })
| Param | Type | Required |
|---|---|---|
| signature | string | required |
get_network_status
NetworkGet current Solana network health: transactions per second, average slot time, current slot, epoch progress and node version.
get_network_status()
{}get_priority_fees
NetworkGet recent priority fee estimates (min, low, medium, high, veryHigh) in micro-lamports per compute unit, optionally scoped to account keys.
get_priority_fees({ accountKeys? })
| Param | Type | Required |
|---|---|---|
| accountKeys | string[] | optional |
{}Rate limits
60 calls per minute per IP across MCP and the REST mirror. Exceeding the limit returns HTTP 429 with a retry-after header and a JSON error body.
Caching
| Tool | TTL |
|---|---|
| get_price | 5s |
| get_swap_quote | 10s |
| get_pairs | 30s |
| get_trending_pools | 60s |
| get_token_info | 10m |
| get_token_holders | 60s |
| get_balance | 15s |
| get_account | 15s |
| get_transactions | 15s |
| get_transaction | 15s |
| get_network_status | 5s |
| get_priority_fees | 5s |
Data sources
- —Jupiter Price API v3
- —Jupiter Swap API (quote)
- —DexScreener
- —GeckoTerminal
- —Helius DAS getAsset
- —Solana RPC
- —Solana RPC + Helius DAS
- —Helius Enhanced Transactions
- —Helius / Solana RPC
Changelog
v1.0.0
Initial release: 12 read-only tools, Streamable HTTP MCP endpoint, REST mirror, Playground and status page.