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
-
Clone the Repository:
git clone https://github.com/kukapay/uniswap-trader-mcp.git cd uniswap-trader-mcp
-
Install Dependencies:
npm install
Configuration
{
"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
: StringtokenOut
: StringamountIn
: 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 for details.