An MCP server for NEAR intents using the Defuse Protocol one-click SDK. This server provides tools for cross-chain token swaps through NEAR's intent-based architecture.
- GET_NEAR_SWAP_TOKENS: Discover available tokens for swaps
- GET_NEAR_SWAP_SIMPLE_QUOTE: Get basic swap quotes without addresses
- GET_NEAR_SWAP_FULL_QUOTE: Get complete quotes with deposit addresses
- EXECUTE_NEAR_SWAP: Execute swaps by submitting deposit transactions
- CHECK_NEAR_SWAP_STATUS: Check the status of swap executions
This server supports a complete 5-step user flow:
- [DISCOVERY] Use
GET_NEAR_SWAP_TOKENSto discover available tokens - [STEP 1] Use
GET_NEAR_SWAP_SIMPLE_QUOTEto check swap rates without addresses - [STEP 2] Use
GET_NEAR_SWAP_FULL_QUOTEto get deposit address when ready to swap - [STEP 3] User sends funds to the deposit address (external action)
- [STEP 4] Use
EXECUTE_NEAR_SWAPto submit deposit transaction hash - [STEP 5] Use
CHECK_NEAR_SWAP_STATUSto monitor swap progress until completion
- Node.js >= 16
- pnpm >= 8
- A JWT token from the Defuse Protocol (for authentication)
Set the following environment variables:
# Optional: Custom API endpoint (defaults to https://1click.chaindefuser.com)
export NEAR_SWAP_API_URL="https://1click.chaindefuser.com"
# Required: JWT token for authentication
export NEAR_SWAP_JWT_TOKEN="your-jwt-token-here"# Start the MCP server
pnpm start
# Or run directly
node dist/index.jsDiscover available tokens for swaps. Returns token metadata including blockchain, contract address, current USD price, symbol, decimals, and price update timestamp.
Parameters: None
Get a basic quote for a cross-chain token swap without requiring addresses. Perfect for checking swap rates and fees before committing.
Parameters:
originAsset: string - Origin asset identifier (e.g., 'nep141:arb-0xaf88d065e77c8cc2239327c5edb3a432268e5831.omft.near')destinationAsset: string - Destination asset identifieramount: string - Amount to swap (in base units)swapType?: "EXACT_INPUT" | "EXACT_OUTPUT" - Type of swap (default: "EXACT_INPUT")slippageTolerance?: number - Slippage tolerance in basis points (default: 100 = 1%)quoteWaitingTimeMs?: number - Time to wait for quote in milliseconds (default: 3000)
Get a complete quote with deposit address for a cross-chain token swap. Requires recipient and refund addresses.
Parameters:
originAsset: string - Origin asset identifierdestinationAsset: string - Destination asset identifieramount: string - Amount to swap (in base units)recipient: string - Recipient addressswapType?: "EXACT_INPUT" | "EXACT_OUTPUT" - Type of swap (default: "EXACT_INPUT")recipientType?: "DESTINATION_CHAIN" | "INTENTS" - Recipient address type (default: "DESTINATION_CHAIN")refundTo?: string - Refund address (optional)refundType?: "ORIGIN_CHAIN" | "INTENTS" - Refund address type (default: "ORIGIN_CHAIN")slippageTolerance?: number - Slippage tolerance in basis points (default: 100 = 1%)dry?: boolean - Whether this is a dry run (default: false)depositType?: "ORIGIN_CHAIN" | "INTENTS" - Deposit type (default: "ORIGIN_CHAIN")deadline?: string - Deadline in ISO format (default: 1 hour from now)referral?: string - Referral identifier (optional)quoteWaitingTimeMs?: number - Time to wait for quote in milliseconds (default: 3000)
Execute a swap by submitting a deposit transaction hash after sending funds to the deposit address.
Parameters:
txHash: string - Transaction hash of the deposit transactiondepositAddress: string - Deposit address for the swap
Check the execution status of a swap. Returns swap state and detailed transaction information.
Parameters:
depositAddress: string - Deposit address to check status for
{}{
"originAsset": "nep141:arb-0xaf88d065e77c8cc2239327c5edb3a432268e5831.omft.near",
"destinationAsset": "nep141:sol-5ce3bf3a31af18be40ba30f721101b4341690186.omft.near",
"amount": "1000000000000000000",
"swapType": "EXACT_INPUT",
"slippageTolerance": 100
}{
"originAsset": "nep141:arb-0xaf88d065e77c8cc2239327c5edb3a432268e5831.omft.near",
"destinationAsset": "nep141:sol-5ce3bf3a31af18be40ba30f721101b4341690186.omft.near",
"amount": "1000000000000000000",
"recipient": "13QkxhNMrTPxoCkRdYdJ65tFuwXPhL5gLS2Z5Nr6gjRK",
"recipientType": "DESTINATION_CHAIN",
"refundTo": "0x2527D02599Ba641c19FEa793cD0F167589a0f10D",
"refundType": "ORIGIN_CHAIN",
"slippageTolerance": 100,
"dry": false
}{
"txHash": "0x1234567890abcdef...",
"depositAddress": "0xabcdef1234567890..."
}{
"depositAddress": "0xabcdef1234567890..."
}When users provide simple token names (e.g., 'ETH', 'USDC'), use GET_NEAR_SWAP_TOKENS first to discover the exact token IDs required by the API. The API expects full token identifiers like 'nep141:arb-0xaf88d065e77c8cc2239327c5edb3a432268e5831.omft.near'.
This server requires a JWT token for authentication with the Defuse Protocol API. Make sure to set the NEAR_SWAP_JWT_TOKEN environment variable before running the server.
The server provides detailed error messages for common issues:
- Missing JWT token
- Invalid request parameters
- API connection errors
- Invalid asset identifiers
# Clone the repository
git clone https://github.com/IQAIcom/mcp-near-intents.git
cd mcp-near-intents
# Watch for changes during development
pnpm watch
# Format code
pnpm format
# Lint code
pnpm lint