1inch Cross-Chain Swap MCP Server
An MCP server that enables cross-chain token swapping between different blockchains using 1inch Fusion+ API, along with portfolio management tools for tracking assets across chains.
README Documentation
1inch Cross-Chain Swap Tool
A tool for executing cross-chain token swaps using 1inch Fusion+ and Model Context Protocol (MCP).
Demo Video
Overview
This tool facilitates cross-chain token swaps between different blockchains (Arbitrum, Base, Polygon, etc.) using the 1inch Fusion+ API. It handles the entire swap process, from initiating orders to monitoring their execution status through a background worker system.
Installation
Dependencies must be installed using pnpm
or yarn
and not npm
:
pnpm install
# or
yarn install
Configuration
The project must be setup as a CommonJS project. The design of the library does not work in its current form if you import it as ESM.
- Create a
.env
file in the root directory and populate it with the following variables:
DEV_PORTAL_KEY=replace_with_developer_portal_api_key
WALLET_ADDRESS=replace_with_wallet_address
WALLET_KEY=replace_with_wallet_private_key
RPC_URL_ETHEREUM=replace_with_ethereum_rpc_url
RPC_URL_BASE=replace_with_base_rpc_url
INCH_API_KEY=replace_with_1inch_api_key
Usage
Start the MCP Server
npm start
This starts the Model Context Protocol server which exposes tools for cross-chain swapping and portfolio management.
Available MCP Tools
The tool provides the following MCP functions that can be used with Claude or other MCP-compatible assistants:
Cross-Chain Swap
- swap: Initiates a cross-chain token swap
Parameters: - srcChainId: Source chain ID (default: 8453/Base) - dstChainId: Destination chain ID (default: 42161/Arbitrum) - srcTokenAddress: Source token address - dstTokenAddress: Destination token address - amount: Amount to swap (in base units or human-readable format) - invert: Swap direction toggle (default: false)
Order Management
- swap-status: Checks the status of swap orders
Parameters: - orderHash: (Optional) Specific order hash to check
Portfolio Management
-
portfolio-protocols-value: Gets the value of protocols in your portfolio
Parameters: - chainId: Blockchain ID (default: 1/Ethereum)
-
portfolio-tokens-details: Gets detailed information about tokens in your portfolio
Parameters: - chainId: Blockchain ID (default: 1/Ethereum) - closed: Include closed positions (default: true) - closedThreshold: Threshold for considering positions closed (default: 1)
-
portfolio-general-value: Gets the general value of your portfolio
Parameters: - chainId: Blockchain ID (default: 1/Ethereum)
-
portfolio-value-chart: Gets chart data for portfolio value over time
Parameters: - chainId: Blockchain ID (default: 1/Ethereum)
Monitoring System
The application includes a background worker system that monitors and processes swap orders:
Monitor Commands
# Start the monitor daemon
npm run monitor:start
# Check status of all orders
npm run status
# Check status of monitor daemon
npm run monitor:status
# Stop the monitor daemon
npm run monitor:stop
How the Worker System Functions
- When a swap is initiated, the order information is saved to
order-status.json
- The monitor daemon continuously checks for new orders that need monitoring
- For each new order, a dedicated worker process is spawned
- The worker monitors the order status and submits secrets when needed to complete the swap
- Once an order is executed, the worker is terminated and the status is updated
Technical Notes
- Built with the 1inch Cross-Chain SDK for secure cross-chain swaps
- Uses Model Context Protocol for AI-assistant integration
- PrivateKeyProviderConnector in the Fusion SDK supports BlockchainProviderConnector
- The tool handles secret management for cross-chain swap verification