Solana MCP server / Jupiter
Hosted Solana MCP server for AI agents.
One MCP endpoint gives Claude, ChatGPT, Cursor or any MCP client tools to check prices, swap tokens and set limit orders on Solana through Jupiter. Each agent trades from its own wallet, within the spending limits you set, and no private key goes into your AI client.
https://www.runvoyager.com/api/mcpSetup guides
Connect any MCP client to Solana.
Claude and ChatGPT sign in with your wallet. Other clients send an agent's API key. Pick yours for the exact config.
Tools
Solana tools your agent can call.
The same tools are served over MCP and returned by the TypeScript SDK adapters for OpenAI, Anthropic and the Vercel AI SDK.
get_account- Returns this agent's Solana wallet address, the spending policy its owner set (per-trade cap, daily and monthly caps, allowed tokens, max slippage, approval threshold) and how much budget is left. Call this before trading so you stay inside the limits.
get_balances- Lists the tokens held by the agent's wallet with amounts and USD values.
search_tokens- Finds Solana tokens by symbol, name or mint address. Returns mint, decimals, USD price, liquidity, and whether Jupiter has verified the token or flagged it as suspicious. Many scam tokens copy popular symbols, so use the returned mint address when trading anything outside the majors.
get_prices- Current USD prices for up to 50 tokens, with the 24h change in percent.
get_quote- Quotes a swap through Jupiter without executing it: expected output, minimum output after slippage, price impact, fees, and whether the owner's spending policy would allow it (policy.allowed, policy.requiresApproval, policy.violations). Give exactly one of amount or amountUsd.
swap- Swaps tokens from the agent's wallet through Jupiter, at the best route available, and waits for the result. The owner's spending policy is enforced: a trade over a limit is rejected with the rule it broke, and a trade over the approval threshold returns status "awaiting_approval" until the owner approves it in the dashboard. Give exactly one of amount or amountUsd. Pass an idempotencyKey if you might retry.
get_trade- Returns the current status of a trade by ID, including the transaction signature and explorer link once it lands.
list_trades- Lists the agent's most recent trades, newest first, including rejected and pending ones.
create_limit_order- Places a price-triggered order: when the trigger token's USD price crosses triggerPriceUsd in the given direction, Voyager swaps the input token for the output token at market. Use it for buy-the-dip ("buy SOL with 50 USDC if SOL goes below $120"), take-profit ("sell 2 SOL if SOL goes above $250") or stop-loss ("sell 2 SOL if SOL goes below $90"). Funds stay in the wallet until the order fires, and the spending policy is checked again at that moment. If other waiting orders already sell the same token and, with this one, would sell more than the wallet holds, the call fails with a "conflict" error whose details.orders lists them. Do not choose for your user: show them those orders and ask which they mean, then call again with the same request plus onOverlap. "link" makes them one-cancels-other, so only the first to fire trades (the usual take-profit plus stop-loss). "replace" cancels them and places this order instead; use it to change an existing order, since orders cannot be edited. "independent" keeps them all, and any that fires after the tokens are gone fails. Pass overlapOrderIds to link or replace only some of them. Orders that fit within the balance together, such as a ladder of partial take-profits, are placed with no question asked.
list_limit_orders- Lists the agent's limit orders, optionally filtered by status (open, held, triggered, filled, cancelled, expired, failed). Orders with the same ocoGroupId are one-cancels-other: while one is triggered the others are "held", and once it fills they are cancelled.
cancel_limit_order- Cancels an open or held limit order. Nothing moves on-chain, since funds never left the wallet. Other orders in its one-cancels-other group stay as they are.
Hosted vs self-hosted
A Solana MCP server without a private key in your config.
Most open-source Solana and Jupiter MCP servers sign with a key read from a local file. Voyager puts a policy check and a transaction check between the model and the key.
| Feature | Typical self-hosted server | Voyager |
|---|---|---|
| Wallet key | A private key in a local config or .env file | A wallet per agent, its key encrypted on Voyager's servers |
| Spending limits | None, unless you build them | Per-trade, 24-hour and 30-day caps in USD |
| Token checks | Whatever mint the model passes | Majors pinned to canonical mints, verified-only buys |
| Before signing | Signs the transaction it built | Decodes and simulates every Jupiter transaction |
| Limit orders | Rarely | Price-triggered, with one-cancels-other links |
| Transfers | Often a send or transfer tool | No transfer tool; withdrawals are owner-only |
| Hosting | You run and update it | Hosted endpoint, OAuth sign-in for Claude and ChatGPT |
Jupiter MCP server
Jupiter routing, with limits on every call.
Quotes, swaps and limit orders go through Jupiter's Swap API, so agents get Jupiter's routing across Solana liquidity. Limit orders run on Voyager's own keeper: funds stay in the agent's wallet until the price crosses, and the limits are checked again when the order fires.
- Spending caps
- Per-trade, rolling 24-hour and 30-day limits in USD. Each trade is checked and reserved against the budget in one locked step.
- Token rules
- Major tokens resolve to their canonical mints. Purchases are limited to Jupiter-verified tokens, or to an allowlist you choose.
- Execution limits
- Maximum slippage and price impact apply to every route Jupiter returns.
- Approvals
- Trades above your threshold wait in the dashboard until you approve or reject them.
- No transfer tool
- Agents can quote, swap and place limit orders. Withdrawals are owner-only and go to your sign-in wallet.
- Pause
- A paused agent has its next call refused, including limit orders that fire later.
Full reference for tools, REST endpoints and errors in the docs. Building your own agent? Build an AI trading agent.
FAQ
Solana MCP server questions.
What is a Solana MCP server?
An MCP (Model Context Protocol) server gives an AI client tools it can call. A Solana MCP server's tools read and act on the Solana blockchain. Voyager's tools check prices and balances, quote and execute swaps through Jupiter, and manage limit orders.
What is the Voyager MCP endpoint?
https://www.runvoyager.com/api/mcp, over Streamable HTTP. Claude and ChatGPT sign in with OAuth. Other clients send an agent's API key as a Bearer token, and clients that only run local servers can use npx @voyager/mcp.
Is Voyager a Jupiter MCP server?
Yes. Every price check, quote, swap and limit order routes through Jupiter, so agents get Jupiter's routing across Solana liquidity. Voyager adds a wallet per agent, spending limits and a check of every transaction before it is signed.
How is it different from a self-hosted Solana MCP server?
Many self-hosted Solana and Jupiter MCP servers read a wallet's private key from a local config file and sign whatever the model builds. With Voyager the key never leaves its servers, every call is checked against the agent's limits, and each Jupiter transaction is decoded and simulated before the agent's key signs it.
Do I need to run a server?
No. The endpoint is hosted. Sign in with a Solana wallet, create an agent, fund its wallet and paste the config for your client.