Skip to main content
Glama
openSVM

DexScreener MCP Server

by openSVM
README.md
# DexScreener MCP Server

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):
```bash
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:
```bash
npm install
npm run build
npm run setup
```

## Testing

```bash
npm test
```

## Usage

### Available Tools

1. `get_latest_token_profiles`
   - Get the latest token profiles
   - No parameters required
   ```typescript
   const result = await mcpClient.callTool('dexscreener', 'get_latest_token_profiles');
   ```

2. `get_latest_boosted_tokens`
   - Get the latest boosted tokens
   - No parameters required
   ```typescript
   const result = await mcpClient.callTool('dexscreener', 'get_latest_boosted_tokens');
   ```

3. `get_top_boosted_tokens`
   - Get tokens with most active boosts
   - No parameters required
   ```typescript
   const result = await mcpClient.callTool('dexscreener', 'get_top_boosted_tokens');
   ```

4. `get_token_orders`
   - Check orders paid for a specific token
   ```typescript
   const result = await mcpClient.callTool('dexscreener', 'get_token_orders', {
     chainId: 'solana',
     tokenAddress: 'So11111111111111111111111111111111111111112'
   });
   ```

5. `get_pairs_by_chain_and_address`
   - Get one or multiple pairs by chain and pair address
   ```typescript
   const result = await mcpClient.callTool('dexscreener', 'get_pairs_by_chain_and_address', {
     chainId: 'solana',
     pairId: 'HxFLKUAmAMLz1jtT3hbvCMELwH5H9tpM2QugP8sKyfhc'
   });
   ```

6. `get_pairs_by_token_addresses`
   - Get one or multiple pairs by token address (max 30)
   ```typescript
   const result = await mcpClient.callTool('dexscreener', 'get_pairs_by_token_addresses', {
     tokenAddresses: 'So11111111111111111111111111111111111111112'
   });
   ```

7. `search_pairs`
   - Search for pairs matching query
   ```typescript
   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](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

TDQS

B3.1/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have distinct purposes, with clear separation between boosted tokens, token profiles, pairs retrieval, token orders, and pair search. However, get_latest_boosted_tokens and get_top_boosted_tokens could potentially cause some confusion regarding whether they serve overlapping or complementary functions, as both relate to boosted tokens with slightly different focuses.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores, using descriptive and predictable naming conventions. The structure is uniform across all seven tools, making it easy for agents to understand and predict tool purposes based on their names.

Tool Count5/5

With 7 tools, the server is well-scoped for its purpose of providing DexScreener data access. Each tool appears to serve a specific and necessary function without redundancy, covering key operations like retrieving tokens, pairs, orders, and searches in a focused manner.

Completeness4/5

The tool set covers essential operations for accessing DexScreener data, including token and pair retrieval, orders, and search. A minor gap exists in the lack of update or management tools, but this is reasonable for a read-only data access server, and agents can work effectively with the provided query-focused tools.

Maintenance

ActivityInactive
ResponsivenessNo issues