dexscreener mcp server

Local 2025-08-31 23:15:02 0

An MCP server implementation that enables access to DexScreener API data, providing real-time information on DEX pairs, token profiles, and market statistics across multiple blockchains.


An MCP server implementation for accessing the DexScreener API, providing real-time access to DEX pair data, token information, and market statistics across multiple blockchains.

One-line install (automatically adds to Claude Desktop):

curl -L https://raw.githubusercontent.com/opensvm/dexscreener-mcp-server/main/install.sh | bash

Features

  • Rate-limited API access (respects DexScreener's rate limits)
  • Comprehensive error handling
  • Type-safe interfaces
  • Support for all DexScreener API endpoints
  • Integration tests

Installation

Manual installation:

npm install
npm run build
npm run setup

Testing

npm test

Usage

Available Tools

  1. get_latest_token_profiles
  2. Get the latest token profiles
  3. No parameters required

    const result = await mcpClient.callTool('dexscreener', 'get_latest_token_profiles');

  4. get_latest_boosted_tokens

  5. Get the latest boosted tokens
  6. No parameters required

    const result = await mcpClient.callTool('dexscreener', 'get_latest_boosted_tokens');

  7. get_top_boosted_tokens

  8. Get tokens with most active boosts
  9. No parameters required

    const result = await mcpClient.callTool('dexscreener', 'get_top_boosted_tokens');

  10. get_token_orders

  11. Check orders paid for a specific token

    const result = await mcpClient.callTool('dexscreener', 'get_token_orders', {
      chainId: 'solana',
      tokenAddress: 'So11111111111111111111111111111111111111112'
    });

  12. get_pairs_by_chain_and_address

  13. Get one or multiple pairs by chain and pair address

    const result = await mcpClient.callTool('dexscreener', 'get_pairs_by_chain_and_address', {
      chainId: 'solana',
      pairId: 'HxFLKUAmAMLz1jtT3hbvCMELwH5H9tpM2QugP8sKyfhc'
    });

  14. get_pairs_by_token_addresses

  15. Get one or multiple pairs by token address (max 30)

    const result = await mcpClient.callTool('dexscreener', 'get_pairs_by_token_addresses', {
      tokenAddresses: 'So11111111111111111111111111111111111111112'
    });

  16. search_pairs

  17. Search for pairs matching query
    const result = await mcpClient.callTool('dexscreener', 'search_pairs', {
      query: 'SOL'
    });

Rate Limits

The server implements rate limiting to comply with DexScreener's API limits: - Token Profile/Boost endpoints: 60 requests per minute - DEX/Pairs endpoints: 300 requests per minute

Error Handling

The server handles various error scenarios: - Rate limit exceeded - Invalid parameters - Network errors - API errors

Errors are returned in a standardized format with appropriate error codes and messages.

API Documentation

For detailed API documentation, see docs/api-reference.md.

Development

Project Structure

.
├── src/
│   ├── types/           # TypeScript interfaces and types
│   ├── services/        # API service implementations
│   ├── tests/           # Integration tests
│   └── index.ts         # Main server implementation
├── scripts/            # Setup and utility scripts
├── docs/              # Documentation
└── README.md          # This file

Adding New Features

  1. Define types in src/types/
  2. Implement service methods in src/services/
  3. Add tool handlers in src/index.ts
  4. Update documentation
  5. Add tests

License

MIT

[
  {
    "description": "Get the latest token profiles",
    "inputSchema": {
      "properties": {},
      "required": [],
      "type": "object"
    },
    "name": "get_latest_token_profiles"
  },
  {
    "description": "Get the latest boosted tokens",
    "inputSchema": {
      "properties": {},
      "required": [],
      "type": "object"
    },
    "name": "get_latest_boosted_tokens"
  },
  {
    "description": "Get tokens with most active boosts",
    "inputSchema": {
      "properties": {},
      "required": [],
      "type": "object"
    },
    "name": "get_top_boosted_tokens"
  },
  {
    "description": "Check orders paid for a specific token",
    "inputSchema": {
      "properties": {
        "chainId": {
          "description": "Chain ID (e.g., "solana")",
          "type": "string"
        },
        "tokenAddress": {
          "description": "Token address",
          "type": "string"
        }
      },
      "required": [
        "chainId",
        "tokenAddress"
      ],
      "type": "object"
    },
    "name": "get_token_orders"
  },
  {
    "description": "Get one or multiple pairs by chain and pair address",
    "inputSchema": {
      "properties": {
        "chainId": {
          "description": "Chain ID (e.g., "solana")",
          "type": "string"
        },
        "pairId": {
          "description": "Pair address",
          "type": "string"
        }
      },
      "required": [
        "chainId",
        "pairId"
      ],
      "type": "object"
    },
    "name": "get_pairs_by_chain_and_address"
  },
  {
    "description": "Get one or multiple pairs by token address (max 30)",
    "inputSchema": {
      "properties": {
        "tokenAddresses": {
          "description": "Comma-separated token addresses",
          "type": "string"
        }
      },
      "required": [
        "tokenAddresses"
      ],
      "type": "object"
    },
    "name": "get_pairs_by_token_addresses"
  },
  {
    "description": "Search for pairs matching query",
    "inputSchema": {
      "properties": {
        "query": {
          "description": "Search query",
          "type": "string"
        }
      },
      "required": [
        "query"
      ],
      "type": "object"
    },
    "name": "search_pairs"
  }
]