使用说明
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
- 安装MCP支架 光标(如果可用)
- 添加服务器配置 在光标设置中(
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": {}
}
}
}
-
配置位置:
- 视窗:
%APPDATA%\Cursor\User\settings.json - macOS:
~/Library/Application Support/Cursor/User/settings.json - Linux:
~/.config/Cursor/User/settings.json
- 视窗:
-
故障排除:
- 步骤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
- 步骤1:验证安装:
-
预期行为: 服务器将显示“⏳ 正在等待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
- 安装MCP扩展 VS代码(如果可用)
- 添加到工作区设置 (
.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)
贡献
我们欢迎捐款!以下是如何开始:
快速贡献指南
- 分叉 存储库
- 创建 特征分支(
git checkout -b feature/amazing-feature) - 制造 您通过测试所做的更改
- 跑 质量检查(
pre-commit run --all-files) - 提交 带有描述性信息
- 推 到您的分行
- 打开 拉取请求
贡献清单
- []代码遵循项目风格(黑色、isort、Ruff)
- []为新功能添加了测试
- []必要时更新文档
- []为新代码添加了类型提示
- []考虑性能影响
- []审查了安全影响
实用链接
许可证
该项目根据 MIT许可证 -看看 许可证 文件以获取详细信息。
致谢
特别感谢:
- DexScreener 用于出色的DeFi数据API
- 模型上下文协议 对于令人惊叹的MCP框架
- Python社区 令人难以置信的库和工具
- Anthropic 克劳德和MCP创新
根据企业标准构建•生产就绪•类型安全•弹性•监控
如果这个仓库能帮助你构建出令人惊叹的DeFi工具,那么就把它当明星吧!
