Skip to main content
Glama
monostate

100ms Raydium Sniper MCP

by monostate
amm-manager.ts2.63 kB
import { Connection, PublicKey, AccountInfo } from '@solana/web3.js'; import dotenv from 'dotenv'; dotenv.config(); interface ProgramAccount { pubkey: PublicKey; account: AccountInfo<Buffer>; } export class AmmManager { private readonly RAYDIUM_PROGRAM_ID = process.env.RAYDIUM_PROGRAM_ID!; private readonly MIN_AMM_DATA_SIZE = Number(process.env.MIN_AMM_DATA_SIZE) || 300; async findPools(connection: Connection, tokenMint: PublicKey): Promise<ProgramAccount[]> { try { console.error('Fetching Raydium AMM accounts...'); // Get all program accounts const accounts = await connection.getProgramAccounts( new PublicKey(this.RAYDIUM_PROGRAM_ID), { commitment: 'processed', filters: [ { dataSize: this.MIN_AMM_DATA_SIZE } ] } ); // Filter accounts that contain the token mint const pools = accounts.filter(account => { try { const data = account.account.data; const mintA = new PublicKey(data.slice(8, 40)); const mintB = new PublicKey(data.slice(40, 72)); return mintA.equals(tokenMint) || mintB.equals(tokenMint); } catch (error) { return false; } }); console.error(`Found ${pools.length} Raydium pools for token ${tokenMint.toBase58()}`); return pools; } catch (error: any) { // Check if error is due to disabled RPC method if (error.message?.includes('410') || error.message?.includes('disabled')) { console.error('RPC endpoint does not support getProgramAccounts, trying alternative method...'); try { // Try alternative method using getTokenAccountsByOwner const tokenAccounts = await connection.getTokenAccountsByOwner( new PublicKey(this.RAYDIUM_PROGRAM_ID), { programId: new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA') } ); const pools = tokenAccounts.value.filter(account => { try { const data = account.account.data; return data.length >= this.MIN_AMM_DATA_SIZE; } catch (error) { return false; } }); console.error(`Found ${pools.length} Raydium pools using alternative method`); return pools; } catch (altError: any) { throw new Error(`Failed to find Raydium pools (alternative method): ${altError.message}`); } } throw new Error(`Failed to find Raydium pools: ${error.message}`); } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/monostate/100ms-SPL-Token-Sniper-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server