uniswap-trader-mcp

by kukapay
Verified
# Uniswap Trader MCP An MCP server for AI agents to automate token swaps on Uniswap DEX across multiple blockchains. ## Features - **Price Quotes**: Get real-time price quotes for token swaps with multi-hop route optimization. - **Swap Execution**: Execute swaps on Uniswap V3 with configurable slippage tolerance and deadlines. - **Swap Suggestions**: Generate trading suggestions based on liquidity, fees, and optimal paths. - **Multi-Chain Support**: Compatible with Ethereum, Optimism, Polygon, Arbitrum, Celo, BNB Chain, Avalanche, and Base. ## Prerequisites - **Node.js**: Version 14.x or higher. - **npm**: For package management. - **Wallet**: A funded wallet with a private key for executing swaps. - **RPC Endpoints**: Access to blockchain RPC URLs (e.g., Infura, Alchemy) for supported chains. ## Installation 1. **Clone the Repository**: ```bash git clone https://github.com/kukapay/uniswap-trader-mcp.git cd uniswap-trader-mcp ``` 2. **Install Dependencies**: ```bash npm install ``` ## Configuration ```json { "mcpServers": { "Uniswap-Trader-MCP": { "command": "node", "args": ["path/to/uniswap-trader-mcp/server/index.js"], "env": { "INFURA_KEY": "your infura key", "WALLET_PRIVATE_KEY": "your private key" } } } } ``` ## Usage ### Supported Chains The following blockchains are supported. Ensure each chain is configured in `chainConfigs.js` with a valid RPC URL, WETH address, and SwapRouter address. | Chain ID | Name | Notes | |----------|--------------|--------------------------------------------| | 1 | Ethereum | Mainnet, widely used for Uniswap trades | | 10 | Optimism | Layer 2, requires Optimism RPC | | 137 | Polygon | Fast and low-cost, uses MATIC as native | | 42161 | Arbitrum | Layer 2, Arbitrum One network | | 42220 | Celo | Mobile-first blockchain, uses CELO | | 56 | BNB Chain | Binance Smart Chain, uses BNB | | 43114 | Avalanche | High-throughput, uses AVAX | | 8453 | Base | Coinbase’s Layer 2, built on Optimism | ### Tools and Prompts #### 1. `getPrice` Fetches a price quote for a Uniswap swap. **Schema**: - `chainId`: Number (default: 1) - `tokenIn`: String (e.g., `"NATIVE"` or token address) - `tokenOut`: String (e.g., `"NATIVE"` or token address) - `amountIn`: String (optional, required for `"exactIn"`) - `amountOut`: String (optional, required for `"exactOut"`) - `tradeType`: `"exactIn"` or `"exactOut"` (default: `"exactIn"`) Example prompt: ``` Get me a price quote for swapping 1 ETH to DAI on Ethereum. ``` Output: ``` { "chainId": 1, "tradeType": "exactIn", "price": "3000.50", "inputAmount": "1.000000", "outputAmount": "3000.50", "minimumReceived": "2985.50", "maximumInput": "1.005000", "route": [ { "tokenIn": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "tokenOut": "0x6B175474E89094C44Da98b954EedeAC495271d0F", "fee": 3000 } ], "estimatedGas": "150000" } ``` #### 2. `executeSwap` Executes a swap on Uniswap. **Schema**: - `chainId`: Number (default: 1) - `tokenIn`: String - `tokenOut`: String - `amountIn`: String (optional, required for `"exactIn"`) - `amountOut`: String (optional, required for `"exactOut"`) - `tradeType`: `"exactIn"` or `"exactOut"` (default: `"exactIn"`) - `slippageTolerance`: Number (default: 0.5, in percentage) - `deadline`: Number (default: 20, in minutes) Example prompt: ``` Swap 1 ETH for DAI on Ethereum with a 0.5% slippage tolerance and a 20-minute deadline. ``` Output: ``` { "chainId": 1, "txHash": "0x1234...abcd", "tradeType": "exactIn", "amountIn": "1.000000", "outputAmount": "2990.75", "minimumReceived": "2985.50", "maximumInput": "1.005000", "fromToken": "NATIVE", "toToken": "0x6B175474E89094C44Da98b954EedeAC495271d0F", "route": [ { "tokenIn": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2", "tokenOut": "0x6B175474E89094C44Da98b954EedeAC495271d0F", "fee": 3000 } ], "gasUsed": "145000" } ``` ## License MIT License. See [LICENSE](LICENSE) for details.