Skip to main content
Glama

Jupiter MCP Server

An MCP server for executing token swaps on the Solana blockchain using Jupiter's new Ultra API.

License Node.js Status

Features

  • Fetch swap orders from Jupiter's Ultra API, combining DEX routing and RFQ (Request for Quote) for optimal pricing.

  • Execute swaps via Jupiter's Ultra API, handling slippage, priority fees, and transaction landing.

Related MCP server: Solana Model Context Protocol (MCP) Demo

Prerequisites

  • Node.js: Version 18 or higher (for native fetch support).

  • Solana Wallet: A private key (base58-encoded) for signing transactions.

  • RPC Endpoint: Access to a Solana RPC node (e.g., https://api.mainnet-beta.solana.com).

Installation

  1. Clone the Repository:

    git clone https://github.com/kukapay/jupiter-mcp.git
    cd jupiter-mcp
  2. Install Dependencies: Ensure you have the MCP Server package installed along with other required dependencies:

    npm install
  3. Client Configuration:

{
  "mcpServers": {
    "Jupiter-MCP": {
      "command": "node",
      "args": ["path/to/jupiter-mcp/server/index.js"],
      "env": {
        "SOLANA_RPC_URL": "solana rpc url you can access",
        "PRIVATE_KEY": "your private key"
      }
    }
  }
}

Tools

Ultra API Tools

  • get-ultra-order:

    • Description: Fetches a swap order from Jupiter's Ultra API, leveraging both DEX routing and RFQ for optimal pricing.

    • Inputs:

      • inputMint: Input token mint address (e.g., SOL or token pubkey).

      • outputMint: Output token mint address (e.g., USDC or token pubkey).

      • amount: Input amount as a string (e.g., "1.23").

      • slippageBps: Slippage tolerance in basis points (e.g., 50 for 0.5%).

    • Output: JSON with requestId, transaction (base64-encoded), inputMint, outputMint, inAmount, outAmount, price.

  • execute-ultra-order:

    • Description: Requests Jupiter to execute the swap transaction on behalf of the wallet owner, handling slippage, priority fees, and transaction landing.

    • Inputs:

      • requestId: Unique identifier from get-ultra-order.

      • transaction: Base64-encoded transaction from get-ultra-order.

    • Output: JSON with status, transactionId, slot, inputAmountResult, outputAmountResult, swapEvents.

Example Interaction

Below are examples of interacting with the server using natural language prompts and expected responses:

Fetching a Swap Order

  • Prompt: "Get a swap order to trade 1.23 SOL for USDC."

  • Input:

    • Tool: get-ultra-order

    • Arguments:

      • inputMint: "So11111111111111111111111111111111111111112" (SOL)

      • outputMint: "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v" (USDC)

      • amount: "1.23"

      • slippageBps: 50

  • Response:

    {
      "requestId": "a770110b-82c9-46c8-ba61-09d955b27503",
      "transaction": "AQAAAA...base64-encoded-transaction...==",
      "inputMint": "So11111111111111111111111111111111111111112",
      "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "inAmount": "1230000000",
      "outAmount": "19950000",
      "price": 0.01621951219512195
    }

Executing a Swap

  • Prompt: "Execute the swap order with request ID 'a770110b-82c9-46c8-ba61-09d955b27503' using the transaction provided."

  • Input:

    • Tool: execute-ultra-order

    • Arguments:

      • requestId: "a770110b-82c9-46c8-ba61-09d955b27503"

      • transaction: "AQAAAA...base64-encoded-transaction...=="

  • Response:

    {
      "status": "Success",
      "transactionId": "5x...solana-transaction-signature...",
      "slot": 299283763,
      "inputAmountResult": "1230000000",
      "outputAmountResult": "19950000",
      "swapEvents": [
        {
          "type": "swap",
          "inputMint": "So11111111111111111111111111111111111111112",
          "outputMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
          "inAmount": "1230000000",
          "outAmount": "19950000"
        }
      ]
    }

License

This project is licensed under the MIT License. See the LICENSE file for details.

-
security - not tested
A
license - permissive license
-
quality - not tested

Appeared in Searches

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kukapay/jupiter-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server