Skip to main content
Glama
README.md
# pumpfun-mcp

A Model Context Protocol (MCP) server for interacting with the [Pump.fun](https://pump.fun) platform on Solana. This server enables AI assistants to create, buy, and sell tokens on the Pump.fun platform.

<img src="https://pump.fun/logo.png" width="250" height="250" alt="Pump.fun MCP Demo">

## Usage

https://github.com/user-attachments/assets/0b0f1f6f-6ea6-4ca8-92a8-b4cc895814e4

To use this server with Claude or other MCP-compatible AI assistants, add the following configuration to your MCP client:

If you're on MacOS and want to run this in Claude Desktop, in your ~/Library/Application \Support/Claude/claude_desktop_config.json file, write the following:

```json
{
  "mcpServers": {
    "pumpfun": {
      "command": "node",
      "args": ["/Users/noahsolomon/Desktop/pumpfun-mcp/build/index.js"], // note this should be YOUR absolute path to index.js, not mine.
      "env": {
        "HELIUS_RPC_URL": "https://your-helius-rpc-url.com"
      }
    }
  }
}
```

Replace `https://your-helius-rpc-url.com` with your [Helius RPC URL](https://dev.helius.xyz/).

## Installation

1. Clone this repository:

   ```
   git clone https://github.com/noahgsolomon/pumpfun-mcp.git
   cd pumpfun-mcp
   ```

2. Install dependencies:

   ```
   npm install
   ```

3. Create a `.env` file with your Solana RPC URL:

   ```
   HELIUS_RPC_URL=https://your-helius-rpc-url.com
   ```

   You can get a free RPC URL from [Helius](https://dev.helius.xyz/).

   To use an existing Solana wallet, add your private key to the `.env` file:

   ```
   PRIVATE_KEY=your-base58-encoded-private-key
   ```

   Then run the conversion script to create a keypair file:

   ```
   node convert-key.js
   ```

   This will create a `default.json` file in the `.keys` folder with your keypair.

4. Build the project:

   ```
   npm run build
   ```

5. Run the MCP server:
   ```
   node build/index.js
   ```

## Components

### Tools

- **get-token-info**

  - Get information about a Pump.fun token
  - Input parameters:
    - `tokenAddress` (string, required): The token's mint address

- **create-token**

  - Create a new Pump.fun token
  - Input parameters:
    - `name` (string, required): Token name
    - `symbol` (string, required): Token symbol
    - `description` (string, required): Token description
    - `imageUrl` (string, optional): Path to local image file
    - `initialBuyAmount` (number, required): Initial buy amount in SOL (min 0.0001)
    - `accountName` (string, optional): Name of the account to use (defaults to "default")

- **buy-token**

  - Buy a Pump.fun token
  - Input parameters:
    - `tokenAddress` (string, required): The token's mint address
    - `buyAmount` (number, required): Amount to buy in SOL (min 0.0001)
    - `accountName` (string, optional): Name of the account to use (defaults to "default")
    - `slippageBasisPoints` (number, optional): Slippage tolerance in basis points (defaults to 100)

- **sell-token**

  - Sell a Pump.fun token
  - Input parameters:
    - `tokenAddress` (string, required): The token's mint address
    - `sellAmount` (number, required): Amount of tokens to sell (use 0 to sell all)
    - `accountName` (string, optional): Name of the account to use (defaults to "default")
    - `slippageBasisPoints` (number, optional): Slippage tolerance in basis points (defaults to 100)

- **list-accounts**

  - List all accounts in the keys folder
  - No input parameters required

- **get-account-balance**
  - Get the SOL and token balances for an account
  - Input parameters:
    - `accountName` (string, optional): Name of the account to check (defaults to "default")
    - `tokenAddress` (string, optional): Token address to check balance for

### Account Management

The MCP automatically creates and manages Solana keypairs in the `.keys` folder. Each keypair is stored as a JSON file with the account name as the filename.

When creating a token, the mint keypair is also saved in the `.keys` folder with the prefix `mint-`.

To use the MCP with your own account, you need to:

1. Add your private key to the `.env` file and run `node convert-key.js`
2. Have sufficient SOL in that wallet

## Standalone Scripts

The project includes several standalone scripts that can be run directly:

- **Get Token Info**: `node build/get-token-info.js <token_address>`
- **Create Token**: `node build/create-token.js <name> <symbol> <description> <initial_buy_amount> [account_name] [image_url]`
- **Buy Token**: `node build/buy-token.js <token_address> <buy_amount_sol> [account_name] [slippage_basis_points]`
- **Sell Token**: `node build/sell-token.js <token_address> <sell_amount> [account_name] [slippage_basis_points]`
- **List Accounts**: `node build/list-accounts.js`
- **Get Account Balance**: `node build/get-token-balance.js <account_name> [token_address]`

## Important Notes

- **Security**: The keypairs are stored unencrypted in the `.keys` folder. Make sure to secure this folder appropriately.
- **Fees**: All transactions on Solana require SOL for transaction fees. Make sure your accounts have enough SOL.
- **Slippage**: The default slippage tolerance is 1% (100 basis points). You can adjust this for each transaction.
- **Images**: When creating tokens with images, you must provide a local file path to the image. Remote URLs are not supported.

## Development

### Project Structure

- `src/index.ts`: Main MCP server entry point
- `src/get-token-info.ts`: Token information retrieval
- `src/create-token.ts`: Token creation functionality
- `src/buy-token.ts`: Token buying functionality
- `src/sell-token.ts`: Token selling functionality
- `src/list-accounts.ts`: Account listing functionality
- `src/get-token-balance.ts`: Account balance checking
- `src/utils.ts`: Shared utility functions
- `convert-key.js`: Utility to convert a base58 private key to a keypair JSON file

### Building

```
npm run build
```

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no overlap: buying, selling, and creating tokens are separate actions, while getting token info, account balances, and listing accounts are distinct read operations. The descriptions make it unambiguous which tool to use for each task.

Naming Consistency4/5

The naming follows a consistent verb-noun pattern with hyphens (e.g., buy-token, create-token, get-token-info), except for 'list-accounts' which uses 'list' instead of 'get' like the other read operations. This minor deviation prevents a perfect score but maintains overall readability.

Tool Count5/5

With 6 tools, this server is well-scoped for interacting with Pump.fun tokens and accounts. Each tool serves a clear purpose (e.g., core token lifecycle operations and account management), and none feel redundant or missing given the domain.

Completeness4/5

The toolset covers the essential token lifecycle (create, buy, sell, get info) and account management (balance, list), but lacks update or delete operations for tokens or accounts, which might be minor gaps depending on the platform's capabilities. Overall, it supports core workflows effectively.

Maintenance

ActivityInactive
ResponsivenessSyncing