DexScreener API服务器

一个生产就绪的DexScreener API集成服务器,提供全面的代币信息、交易对分析和趋势发现功能。

  • by Malomalsky
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 malomalsky/dexscreener-mcp-server

使用说明

DexScreener MCP服务器

DexScreener API的生产就绪模型上下文协议服务器

快速开始 • 文档 • 发展 • 特性


为什么选择MCP服务器?

为生产而建:企业级错误处理、速率限制和监控
迅速的:智能缓存、异步架构和优化的API调用
坚实的:全面测试、类型安全和防弹错误处理
开发者友好:漂亮的API、丰富的文档和流畅的开发人员体验


特性

完成DexScreener API集成

  • 代币信息和交易对
  • 配对细节和分析
  • 搜索功能
  • 趋势配对发现
  • 多对批处理请求

生产就绪架构

  • 全面的错误处理
  • 速率限制(默认为300要求/分钟)
  • TTL智能缓存
  • 具有指数回退的自动重试
  • 使用Pydantic进行输入验证

监测和可观察性

  • 结构化日志记录 structlog
  • 请求/响应跟踪
  • 性能指标
  • 错误分析

开发者体验

  • 具有全面注释的全类型安全
  • 漂亮的异步/等待API
  • 大量文件
  • 易于配置
  • 开发友好型设置

快速开始

安装

# Clone the repository
git clone https://github.com/Malomalsky/dexscreener-mcp-server.git
cd dexscreener-mcp-server

# Standard installation
pip install -e .

# For development
pip install -e ".[dev]"

# If you have FastAPI compatibility issues
pip install -e ".[fastapi-compat]"

依赖冲突

如果您遇到与FastAPI或其他软件包的依赖冲突:

# Option 1: Use virtual environment (recommended)
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e .

# Option 2: Force installation (may cause issues)
pip install -e . --force-reinstall

# Option 3: Use compatibility mode
pip install -e ".[fastapi-compat]"

# Option 4: Standalone minimal installation
python standalone_install.py

配置

# Copy example environment file
cp .env.example .env

# Edit configuration (optional - works great with defaults!)
nano .env

运行服务器

⚠️ 重要:这是一个MCP(模型上下文协议)服务器,设计用于在启用MCP的应用程序中运行。它不能单独使用。

# Test the server installation
python -c "from dexscreener_mcp.server import DexScreenerMCPServer; print('✅ Server ready!')"

# The server will be automatically started by MCP clients
# Do NOT run these commands directly unless testing:
# python -m dexscreener_mcp.server  # Will wait for MCP protocol input

运作原理:MCP应用程序(Claude Desktop、Cursor等)将自动启动并使用stdio协议与此服务器通信。

与应用程序集成

⚠️ MCP支持状态:

  • ✅ 克劳德桌面:完全原生支持
  • 🧪 光标IDE:实验性/有限支持
  • 🧪 Zed编辑:实验支持
  • 🧪 VS代码:需要MCP扩展
  • ❓ Continue.dev:支持可能会有所不同
Claude Desktop

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "dexscreener": {
      "command": "python",
      "args": ["-m", "dexscreener_mcp.server"],
      "env": {}
    }
  }
}

配置文件位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%/Claude/claude_desktop_config.json
Cursor IDE
  1. 安装MCP支架 光标(如果可用)
  2. 添加服务器配置 在光标设置中(settings.json):

选项1(推荐-克劳德桌面格式):

{
  "mcpServers": {
    "dexscreener": {
      "command": "python",
      "args": ["-m", "dexscreener_mcp.server"],
      "env": {}
    }
  }
}

选项2(替代格式):

{
  "mcp": {
    "servers": {
      "dexscreener": {
        "command": "python",
        "args": ["-m", "dexscreener_mcp.server"]
      }
    }
  }
}

选项3(Windows的完整Python路径):

{
  "mcpServers": {
    "dexscreener": {
      "command": "C:\\Users\\YourUser\\AppData\\Local\\Programs\\Python\\Python311\\python.exe",
      "args": ["-m", "dexscreener_mcp.server"],
      "env": {}
    }
  }
}
  1. 配置位置:

    • 视窗: %APPDATA%\Cursor\User\settings.json
    • macOS: ~/Library/Application Support/Cursor/User/settings.json
    • Linux: ~/.config/Cursor/User/settings.json
  2. 故障排除:

    • 步骤1:验证安装: python -c "import dexscreener_mcp; print('✅ OK')"
    • 步骤2:手动测试服务器: python -m dexscreener_mcp.server
    • 步骤3:将配置添加到Cursor settings.json
    • 步骤4: 完全重新启动Cursor (重要!)
    • 步骤5:检查光标的输出面板→ MCP用于错误消息
    • 步骤6:在Cursor的MCP服务器列表中查找“dexscreener”

    如果“启用了0个工具”:

    • 在配置中使用绝对Python路径(见选项3)
    • 检查Python是否在PATH中: python --version
    • 尝试运行调试脚本: python debug_cursor.py
  3. 预期行为: 服务器将显示“⏳ 正在等待MCP客户端连接。..“正常工作时

备注:Cursor中的MCP支持可能是实验性的。如果这些都不起作用,MCP可能还没有得到完全支持。

Zed Editor

添加到Zed设置 (~/.config/zed/settings.json):

{
  "assistant": {
    "version": "2",
    "provider": {
      "name": "openai",
      "api_url": "https://api.openai.com/v1"
    }
  },
  "experimental": {
    "mcp_servers": {
      "dexscreener": {
        "command": "python",
        "args": ["-m", "dexscreener_mcp.server"]
      }
    }
  }
}

替代格式:

{
  "mcp": {
    "servers": {
      "dexscreener": {
        "command": "python",
        "args": ["-m", "dexscreener_mcp.server"]
      }
    }
  }
}

备注:Zed中的MCP支持是实验性的,可能需要特定的Zed版本。

Continue.dev

添加以继续配置 (~/.continue/config.json):

{
  "models": [...],
  "mcpServers": {
    "dexscreener": {
      "command": "python",
      "args": ["-m", "dexscreener_mcp.server"]
    }
  }
}

替代格式:

{
  "models": [...],
  "mcp": {
    "servers": {
      "dexscreener": {
        "command": "python",
        "args": ["-m", "dexscreener_mcp.server"]
      }
    }
  }
}

备注:Continue.dev中的MCP支持可能因版本而异。

VS Code
  1. 安装MCP扩展 VS代码(如果可用)
  2. 添加到工作区设置 (.vscode/settings.json):

选项1:

{
  "mcpServers": {
    "dexscreener": {
      "command": "python",
      "args": ["-m", "dexscreener_mcp.server"],
      "env": {}
    }
  }
}

选项2:

{
  "mcp": {
    "servers": {
      "dexscreener": {
        "command": "python",
        "args": ["-m", "dexscreener_mcp.server"]
      }
    }
  }
}

备注:VS Code中的MCP支持需要特定的扩展,并且可能受到限制。

GitHub Codespaces

开箱即用!只需安装软件包:

pip install -e .

然后与Codespace中任何启用MCP的扩展一起使用。

Custom MCP Client

对于自定义实现,请使用MCP SDK:

from mcp import ClientSession
import asyncio

async def main():
    async with ClientSession("dexscreener-mcp") as session:
        # List available tools
        tools = await session.list_tools()
        
        # Call a tool
        result = await session.call_tool(
            "search_tokens", 
            {"query": "USDC", "limit": 10}
        )
        print(result)

asyncio.run(main())

示例用法

# Through any MCP-enabled application:
"Get token information for USDC"
"Search for trending Ethereum pairs" 
"Find information about Uniswap V3 WETH/USDC pair"
"Show me the top 5 trending pairs on Base network"
"What's the current price and volume for PEPE token?"

可用工具

工具 说明 示例
get_token_info 获取全面的代币数据和交易对 {"token_address": "0xA0b86a33E6Fe17D51f8C62C7B4E8CC38F8D5A0D8"}
get_pair_info 详细的交易对分析,包括价格、交易量、流动性 {"chain_id": "ethereum", "pair_address": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640"}
search_tokens 按名称、符号或地址搜索智能令牌 {"query": "PEPE", "limit": 20}
get_trending_pairs 在任何区块链上发现热门和趋势对 {"chain_id": "base"}
get_multiple_pairs 高效地批量处理多对请求 {"pair_addresses": ["ethereum:0x...", "bsc:0x..."]}
get_supported_chains 列出所有支持的区块链网络 {}
get_rate_limit_info 检查当前API费率限制状态 {}

响应示例

Token Search Example
{
  "tool": "search_tokens",
  "query": "USDC",
  "response": {
    "pairs": [
      {
        "chainId": "ethereum",
        "dexId": "uniswap",
        "url": "https://dexscreener.com/ethereum/0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
        "pairAddress": "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
        "baseToken": {
          "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
          "name": "Wrapped Ether",
          "symbol": "WETH"
        },
        "quoteToken": {
          "address": "0xa0b86a33e6fe17d51f8c62c7b4e8cc38f8d5a0d8",
          "name": "USD Coin",
          "symbol": "USDC"
        },
        "priceUsd": "3456.78",
        "volume": {
          "h24": 145000000
        }
      }
    ]
  }
}
Trending Pairs Example
{
  "tool": "get_trending_pairs",
  "chain_id": "base",
  "response": {
    "pairs": [
      {
        "chainId": "base",
        "dexId": "uniswap",
        "priceUsd": "0.000024",
        "priceChange": {
          "h24": 156.7
        },
        "volume": {
          "h24": 2400000
        },
        "marketCap": 12000000
      }
    ]
  }
}

建筑与设计

graph TB
    A[Claude/MCP Client] --> B[DexScreener MCP Server]
    B --> C[Rate Limiter]
    C --> D[Cache Layer]
    D --> E[HTTP Client]
    E --> F[DexScreener API]
    
    B --> G[Error Handler]
    B --> H[Type Validator]
    B --> I[Logger]
    
    style A fill:#e1f5fe
    style B fill:#f3e5f5
    style F fill:#e8f5e8

项目结构

dexscreener_mcp/
├── __init__.py          # Package initialization & exports
├── server.py            # MCP server implementation
├── client.py            # DexScreener API client with all features
└── types.py             # Pydantic models & type definitions

关键组件

组件 描述 功能
DexScreenerMCPServer 主MCP服务器 工具路由、错误处理、日志记录
DexScreenerClient API客户端 速率限制、缓存、重试
Pydantic模型 类型安全 验证、序列化、文档
误差系统 异常处理 用户友好的错误、监控、调试

配置选项

变量 默认值 描述 建议
DEXSCREENER_RATE_LIMIT 300 每分钟请求数 保持默认值以获得最佳性能
DEXSCREENER_CACHE_TTL 60 缓存TTL(秒) 增加不易失性数据
DEXSCREENER_TIMEOUT 30 请求超时(秒) 适用于大多数网络
DEXSCREENER_MAX_RETRIES 3 最大重试次数 不稳定连接的增加
LOG_LEVEL INFO 记录详细信息 使用 DEBUG 为了发展
LOG_FORMAT json 日志格式 json 为了生产, text 对于dev

配置示例

# .env file
DEXSCREENER_RATE_LIMIT=300      # Respectful rate limiting
DEXSCREENER_CACHE_TTL=60        # Fast responses with smart caching  
DEXSCREENER_TIMEOUT=30          # Reasonable timeout
DEXSCREENER_MAX_RETRIES=3       # Resilient error handling
LOG_LEVEL=INFO                  # Balanced logging
LOG_FORMAT=json                 # Structured logs for monitoring

发展

设置开发环境

# Install development dependencies
pip install -e ".[dev]"

# Install pre-commit hooks for automated quality checks
pre-commit install

# Run tests with coverage
pytest --cov=dexscreener_mcp --cov-report=html

# Run the full quality check suite
make lint    # or run manually below

手动质量检查

# Code formatting
black dexscreener_mcp/
isort dexscreener_mcp/

# Linting
ruff check dexscreener_mcp/ --fix

# Type checking  
mypy dexscreener_mcp/

# Testing
pytest tests/ -v

代码质量标准

本项目遵循企业级标准:

工具 目的 配置
黑色 代码格式 line-length = 88
isort 导入排序 profile = "black"
拉夫 快速脱绒 target-version = "py39"
mypy 类型检查 strict = true
pytest 测试框架 asyncio_mode = "auto"
预承诺 质量门 提交时自动

API参考和支持的网络

支持的区块链

网络 链ID 本地令牌 资源管理器
以太坊 ethereum ETH 以太扫描.io
BNB智能链 bsc BNB bscscan.com
多边形 polygon MATIC polygonscan.com
仲裁 arbitrum ETH arbiscan.io
乐观主义 optimism ETH optimisc.therscan.io
基础 base ETH basescan.org
雪崩 avalanche AVAX 网站 snowtrace.io
幻影 fantom FTM ftmscan.com

支持20多个网络!

响应模型

所有API响应均使用 Pydantic v2 模型:

# Token Information
class TokenResponse:
    pairs: List[PairInfo]  # All trading pairs for token

# Trading Pair Details  
class PairResponse:
    pair: Optional[PairInfo]  # Detailed pair information

# Search Results
class SearchResult:
    pairs: List[PairInfo]  # Matching pairs from search

# Trending Data
class TrendingResponse:
    pairs: List[PairInfo]  # Hot/trending pairs

错误处理

错误类型 处理策略 用户体验
API错误 结构化错误分析 清除可操作的错误消息
网络问题 指数回退重试 自动恢复,无中断
速率限制 智能节流 在限制范围内平稳运行
验证 Pydantic模型验证 类型安全、经过验证的响应
超时 可配置的超时 可预测的响应时间

性能与优化

速度特性

  • 智能缓存:基于TTL的响应缓存
  • 速率限制:尊重300需求/分钟默认值
  • 连接池:高效的HTTP客户端重用
  • 异步架构:非阻塞I/O操作
  • 批处理:单次呼叫中的多对请求

性能指标

# Typical response times (with cache miss)
Token Info:        ~200ms
Pair Details:      ~150ms  
Search Results:    ~300ms
Trending Pairs:    ~250ms

# With cache hit: ~5-10ms
# Rate limit overhead: ~0ms (smart queuing)

贡献

我们欢迎捐款!以下是如何开始:

快速贡献指南

  1. 分叉 存储库
  2. 创建 特征分支(git checkout -b feature/amazing-feature)
  3. 制造 您通过测试所做的更改
  4. 跑 质量检查(pre-commit run --all-files)
  5. 提交 带有描述性信息
  6. 推 到您的分行
  7. 打开 拉取请求

贡献清单

  • []代码遵循项目风格(黑色、isort、Ruff)
  • []为新功能添加了测试
  • []必要时更新文档
  • []为新代码添加了类型提示
  • []考虑性能影响
  • []审查了安全影响

实用链接


许可证

该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。

致谢

特别感谢:

  • DexScreener 用于出色的DeFi数据API
  • 模型上下文协议 对于令人惊叹的MCP框架
  • Python社区 令人难以置信的库和工具
  • Anthropic 克劳德和MCP创新

根据企业标准构建•生产就绪•类型安全•弹性•监控

如果这个仓库能帮助你构建出令人惊叹的DeFi工具,那么就把它当明星吧!