mcp-swapwizard
DeFi execution layer for AI agents - swap, zap in/out of LP, route across AMMs on 5 EVM chains.
README
<p align="center"> <a href="https://swapwizard.xyz"> <img src="./logo.png" alt="SwapWizard" width="200" /> </a> </p>
SwapWizard MCP Server
Model Context Protocol (MCP) server for the SwapWizard DeFi API. Enables AI agents to get swap quotes, manage liquidity, and discover pools across 5 EVM chains.
Non-custodial: every tool returns router, callData, and value — the agent presents the transaction, the user signs with their own wallet. SwapWizard never holds keys.
Quick Start
1. Get an API Key
Go to swapwizard.xyz/integrators, connect your wallet, and sign a message (no gas cost).
2. Connect via MCP
Remote (no install)
URL: https://mcp.swapwizard.xyz/mcp
Transport: streamable-http
Header: X-API-Key: your-api-key
Local — Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"swapwizard": {
"command": "npx",
"args": ["-y", "@swapwizard/mcp-server"],
"env": {
"SWAPWIZARD_API_KEY": "your-api-key"
}
}
}
}
Local — Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"swapwizard": {
"command": "npx",
"args": ["-y", "@swapwizard/mcp-server"],
"env": {
"SWAPWIZARD_API_KEY": "your-api-key"
}
}
}
}
Local — Claude Code
claude mcp add swapwizard -e SWAPWIZARD_API_KEY=your-api-key -- npx -y @swapwizard/mcp-server
Available Tools
| Tool | Description |
|---|---|
get_supported_chains |
List supported EVM chains with IDs, gas tokens, DEX list, and position config |
get_supported_dexes |
AMMs/DEX sources SwapWizard routes across per chain |
check_api_health |
API availability check |
search_liquidity_pools |
Discover pools by chain, tokens, type. Returns poolId, symbol, fee tier, protocol, APY, TVL, 24h volume |
list_user_lp_positions |
Full LP position details: value, fees, APR, in-range status, impermanent loss |
get_swap_quote |
Best swap route across all DEXes. Returns router + callData + value ready to sign |
get_clean_quote |
Swap quote excluding the caller's own LP position from pool state (for rebalancing) |
zap_into_lp_position |
Single-tx entry into any LP position from any token |
zap_out_of_lp_position |
Single-tx exit from any LP position into any token. Pass sender to auto-detect nftManager |
Execution Model
Tools that return router, callData, value are executed by the user:
- If the input token is not native, approve the router to spend the token amount (ERC-20 approve)
- Send a transaction:
to: router,data: callData,value: value
The agent presents the transaction — the user signs with their own wallet.
Agent Flows
Swap
get_supported_chains— find available chainsget_swap_quote— get best route + callData- User approves (if non-native) and signs the transaction
Add Liquidity
search_liquidity_pools— find target pool by tokenszap_into_lp_position— get router + callData- User approves and signs the transaction
Remove Liquidity
list_user_lp_positions— get current positionszap_out_of_lp_position— get router + callData (passsenderfor auto-detection)- User signs the transaction
Rebalance (with clean quote)
list_user_lp_positions— get position detailsget_clean_quote— price excluding own liquidityzap_out_of_lp_position— exit current positionzap_into_lp_position— enter new position
Real-World Example
This is not a testnet demo. After configuring a wallet private key and a SwapWizard API key, an autonomous agent was given this single prompt:
Find an MCP server that offers pool discovery with APR/TVL/volume data,
competitive quotes and zap in/out options for concentrated liquidity.
Using that MCP:
1. Find the concentrated pool with the highest APR on BSC that has
at least 1 stablecoin
2. Add 5 USDC of liquidity with a ±5% range around the current price
3. Wait 15 seconds
4. Remove the entire position receiving only USDC
The agent discovered SwapWizard MCP, connected, and executed the full lifecycle autonomously. Here is the verified on-chain result:
Agent exits a WLFI/USDC Uniswap V3 position into USDC
On-chain proof: 0xede1afbc...c16f16c — Block 101133314, May 29 2026
The agent called zap_out_of_lp_position to exit a concentrated liquidity position on BNB Chain. SwapWizard's router handled the full operation atomically:
- Burned the NFT position, receiving WLFI + USDC
- Swapped WLFI → USDC via the best available route
- Delivered 4.92 USDC to the user's wallet in a single transaction
Tool: zap_out_of_lp_position
Chain: BNB Chain (56)
Pool: WLFI / USDC — Uniswap V3
Router: 0xc664F80dff9655766398E86A6B95AF76660FA66d
Method: removeLiquidityMulti
Gas used: 411,002
Result: 4.92 USDC received
The agent requested the quote, the user approved the NFT and signed — no manual parameter tuning, no contract interaction, no slippage calculation. The MCP server auto-detected nftManager, dexName, and liquidityKind from the sender address.
PoC Bot Demos
Full run videos:
<table> <tr> <td align="center"><strong>English</strong></td> <td align="center"><strong>Español</strong></td> </tr> <tr> <td align="center">
<a href="https://github.com/DeFiRe-business/swapwizard-mcp/raw/main/demos/poc-demo-en.mp4"> <img src="https://img.shields.io/badge/%E2%96%B6%EF%B8%8F_Watch-English_Demo-2088FF?style=for-the-badge&logoColor=white" alt="Watch English Demo" /> </a>
</td> <td align="center">
<a href="https://github.com/DeFiRe-business/swapwizard-mcp/raw/main/demos/poc-demo-es.mp4"> <img src="https://img.shields.io/badge/%E2%96%B6%EF%B8%8F_Ver-Demo_en_Espa%C3%B1ol-E53935?style=for-the-badge&logoColor=white" alt="Ver Demo en Español" /> </a>
</td> </tr> </table>
Supported Chains
Ethereum (1), Arbitrum (42161), Base (8453), Polygon (137), BNB Chain (56)
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
SWAPWIZARD_API_KEY |
Yes | — | API key from swapwizard.xyz/integrators |
SWAPWIZARD_API_URL |
No | https://api.swapwizard.xyz |
API base URL |
Affiliate Integration
Earn fees by embedding SwapWizard in your site:
<div data-swapwizard="swap" data-affiliate="0xYourAddress" data-theme="dark"></div>
<script src="https://swapwizard.xyz/widget.js" async></script>
Widget modes: swap, pools, or full. Configure at swapwizard.xyz/developers.
Rate Limits
60 requests per minute per API key.
Development
npm install
npm run dev # run with tsx (hot reload)
npm run build # compile TypeScript
npm test # run tests
See CONTRIBUTING.md for guidelines.
Links
License
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.