# PumpSwap MCP Server An MCP server that enables AI agents to interact with [PumpSwap](https://swap.pump.fun/) for real-time token swaps and automated on-chain trading. ![License](https://img.shields.io/badge/license-MIT-green) ![Python](https://img.shields.io/badge/python-3.10%2B-blue) ![Status](https://img.shields.io/badge/status-active-brightgreen.svg) ## Features - **Buy Tokens**: Purchase tokens using SOL with customizable slippage and priority fees. - **Sell Tokens**: Sell tokens for SOL with configurable parameters. - **Token Price Query**: Retrieve current token prices in SOL. - **Pool Data Retrieval**: Fetch and display detailed pool information for a given token mint. ## Prerequisites - Python 3.13 or higher - [uv](https://github.com/astral-sh/uv) for dependency management and script execution - Solana RPC endpoint (e.g., `https://api.mainnet-beta.solana.com`) - A valid Solana private key for transaction signing ## Installation 1. **Clone the Repository**: ```bash git clone https://github.com/kukapay/pumpswap-mcp.git cd pumpswap-mcp ``` 2. **Install uv**: If `uv` is not installed, follow the official [uv installation guide](https://github.com/astral-sh/uv#installation). For example: ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` 3. **Set Up Dependencies**: Use `uv` to install dependencies: ```bash uv sync ``` 4. **Configure Environment Variables**: Create a `.env.private` filein the project root with the following variables: ```plaintext HTTPS_RPC_ENDPOINT=https://api.mainnet-beta.solana.com BUY_SLIPPAGE=0.3 SELL_SLIPPAGE=0.1 SWAP_PRIORITY_FEE=1500000 PRIVATE_KEY=your-solana-private-key ``` Replace `your-solana-private-key` with your actual Solana private key. ## Usage ### Run the MCP Server Use `uv` to run the server: ```bash uv run main.py ``` The server will listen for MCP commands and expose the following tools: - `buy_token(mint: str, sol_amount: float, user_private_key: str)`: Buy tokens with SOL. - `sell_token(mint: str, token_amount: float, user_private_key: str)`: Sell tokens for SOL. - `get_token_price(mint: str)`: Fetch the current token price in SOL. - `get_pool_data(mint: str)`: Retrieve formatted pool data for a token. ### Buy Tokens **Prompt**: ``` Buy 0.1 SOL worth of tokens with mint address FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump. ``` This triggers `buy_token("FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump", 0.1)`. **Expected Output**: ``` Buy successful for 0.1 SOL of token FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump Transaction ID: Amount: Token Price (SOL): ``` ### Sell Tokens **Prompt**: ``` Sell 1000 tokens of FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump. ``` This triggers `sell_token("FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump", 1000)`. **Expected Output**: ``` Sell successful for 1000 tokens of FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump Transaction ID: Amount: Token Price (SOL): ``` ### Get Token Price **Prompt**: ``` What is the current price of the token with mint FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump? ``` This triggers `get_token_price("FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump")`. **Expected Output**: ``` The current price of token FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump is SOL. ``` ### Get Pool Data **Prompt**: ``` Show me the pool data for the token with mint FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump. ``` This triggers `get_pool_data("FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump")`. **Expected Output**: ``` PumpPool Data for mint FC988ZAKRPc26wefDAxcYWB8kgbJTH4Tg3qDvf7xpump: Pool Bump: Index: Creator: Base Mint: Quote Mint: LP Mint: Pool Base Token Account: Pool Quote Token Account: LP Supply: ``` ## Environment Variables The server uses the following environment variables, loaded from `.env.private`: | Variable | Description | Default Value | |-----------------------|--------------------------------------------------|-------------------------------------| | `HTTPS_RPC_ENDPOINT` | Solana RPC endpoint URL | https://api.mainnet-beta.solana.com | | `BUY_SLIPPAGE` | Slippage tolerance for buy transactions | 0.3 (30%) | | `SELL_SLIPPAGE` | Slippage tolerance for sell transactions | 0.1 (10%) | | `SWAP_PRIORITY_FEE` | Priority fee for transactions (in lamports) | 1500000 | | `PRIVATE_KEY` | Solana private key for signing transactions | None (required) | Ensure `PRIVATE_KEY` is set, as the server will raise an error if it's missing. ## License This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. ## Disclaimer This software interacts with decentralized finance (DeFi) protocols and handles sensitive data like private keys. Use it at your own risk. Ensure your `.env.private` file is secure and never share your private key. The authors are not responsible for any financial losses or security issues arising from the use of this software.