MCP service for crypto power data analysis with CCXT and OKX DEX API integration
Project description
Crypto PowerData MCP Service
A comprehensive MCP (Model Context Protocol) service for cryptocurrency data acquisition with advanced technical analysis capabilities
๐ Quick Start with uvx (Recommended)
No installation required! Run directly with uvx:
# Run MCP server for Claude Desktop/MCP Studio
uvx crypto-powerdata-mcp
# Run HTTP server for web access
uvx crypto-powerdata-mcp --http
# Run with OKX API credentials
uvx crypto-powerdata-mcp --env OKX_API_KEY=your_key --env OKX_SECRET_KEY=your_secret
Claude Desktop Configuration:
{
"mcpServers": {
"crypto-powerdata": {
"command": "uvx",
"args": ["crypto-powerdata-mcp"],
"env": {
"OKX_PROJECT_ID": "your_okx_project_id",
"OKX_API_KEY": "your_okx_api_key",
"OKX_SECRET_KEY": "your_okx_secret_key",
"OKX_PASSPHRASE": "your_okx_passphrase"
}
}
}
}
๐ See QUICK_START.md for complete uvx usage guide
๐ Table of Contents
- Overview
- Features
- Architecture
- Installation Methods
- Configuration
- Usage Examples
- API Documentation
- Supported Indicators
- Data Sources
- Development
- Testing
- Contributing
- License
๐ฏ Overview
The Crypto PowerData MCP Service is an advanced cryptocurrency data acquisition service that provides:
- Comprehensive TA-Lib Integration: 158 technical indicators across 10 categories
- Dual Transport Support: Both stdio and HTTP/SSE protocols
- Multi-Exchange Access: 100+ centralized exchanges via CCXT
- DEX Integration: Real-time decentralized exchange data via OKX DEX API
- Flexible Parameters: Multiple instances of indicators with different parameters
- Intelligent Labeling: Automatic column naming based on parameters
Key Capabilities
๐ Dual Transport Protocols
- stdio transport - Standard input/output for command-line and programmatic access
- HTTP/SSE transport - Server-Sent Events for web applications and real-time data feeds
- Auto-detection - Automatically chooses appropriate transport method
- Identical functionality - Same tools and features across both protocols
๐ Data Sources
- CEX Data - Candlestick data from 100+ centralized exchanges (CCXT)
- DEX Data - Candlestick data from decentralized exchanges (OKX DEX API)
- Real-time Prices - Current token prices from DEX markets
๐งฎ Technical Analysis
- 158 TA-Lib indicators with flexible multi-parameter support
- Enhanced parameter format:
{'ema': [{'timeperiod': 12}, {'timeperiod': 26}]} - Intelligent result labeling:
ema_12,ema_26,macd_12_26_9
โจ Features
๐ Dual Transport Architecture
- stdio Transport: Standard MCP protocol for command-line tools and local integrations
- HTTP/SSE Transport: RESTful API with Server-Sent Events for web applications
- Auto-Detection: Intelligent transport selection based on environment
- Session Management: Persistent sessions with proper cleanup
๐ Comprehensive Technical Analysis
- 158 TA-Lib Indicators across 10 categories (Momentum, Overlap, Pattern Recognition, etc.)
- Multi-Parameter Support: Multiple instances of same indicator with different parameters
- Flexible Configuration: JSON-based parameter specification with validation
- Intelligent Labeling: Automatic column naming (e.g.,
ema_12,macd_12_26_9)
๐ Multi-Exchange Support
- 100+ CEX Exchanges: Via CCXT library (Binance, Coinbase, Kraken, etc.)
- DEX Integration: OKX DEX API for decentralized exchange data
- Real-time Data: Current prices and historical candlestick data
- Multiple Timeframes: From 1 minute to 1 month intervals
๐ก๏ธ Robust Parameter Handling
- String Parameter Processing: Handles MCP client string inputs
- JSON Parsing: Supports various JSON formats and error correction
- Validation: Comprehensive parameter validation with helpful error messages
- Type Conversion: Automatic conversion between string and native types
๐๏ธ Architecture
graph TB
A[MCP Client] --> B{Transport Layer}
B -->|stdio| C[FastMCP Server]
B -->|HTTP/SSE| D[Dual Transport Server]
C --> E[MCP Bridge]
D --> E
E --> F[Tool Functions]
F --> G[Data Provider]
F --> H[Enhanced Indicators]
G --> I[CCXT - CEX Data]
G --> J[OKX DEX API]
H --> K[TA-Lib Registry]
I --> L[100+ Exchanges]
J --> M[DEX Markets]
K --> N[158 Indicators]
Core Components
- MCP Bridge: Unified interface between transport protocols and business logic
- Data Provider: Handles data fetching from CEX and DEX sources
- Enhanced Indicators: Advanced technical analysis with flexible parameters
- TA-Lib Registry: Complete registry of all available indicators with metadata
- Dual Transport Server: HTTP/SSE server with session management
๐ Quick Start
Prerequisites
- Python 3.10+ installed on your system
- UV package manager (installation guide)
- Git for cloning the repository
1. Installation
# Clone the repository
git clone https://github.com/veithly/crypto-powerdata-mcp.git
cd crypto-powerdata-mcp
# Install dependencies using UV
uv sync
# Verify installation
uv run python -c "import src.main; print('โ
Installation successful!')"
2. Basic Usage
Option A: stdio Transport (Default)
# Start the MCP service
uv run python -m src.main
# Test with the provided test script
uv run python test_mcp_functionality.py
Option B: HTTP/SSE Transport
# Start HTTP server
uv run python -m src.main --http
# Access endpoints:
# - API: http://localhost:8000/mcp
# - Health: http://localhost:8000/health
# - Documentation: http://localhost:8000/
Option C: Auto-Detection Mode
# Let the server choose the best transport
uv run python -m src.dual_transport_server --mode auto
3. First API Call
import asyncio
import json
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
async def test_basic_functionality():
server_params = StdioServerParameters(
command="uv",
args=["run", "python", "-m", "src.main"],
cwd=".",
env={"PYTHONPATH": "."}
)
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Get available indicators
result = await session.call_tool("get_available_indicators", {})
print(f"Available indicators: {len(json.loads(result.content[0].text))}")
if __name__ == "__main__":
asyncio.run(test_basic_functionality())
๐ฆ Installation
System Requirements
- Operating System: Windows 10+, macOS 10.15+, or Linux (Ubuntu 18.04+)
- Python: 3.10 or higher
- Memory: Minimum 2GB RAM (4GB recommended for large datasets)
- Storage: 500MB free space for dependencies
Dependencies
The service automatically installs the following key dependencies:
- MCP Framework:
mcp>=1.0.0- Model Context Protocol implementation - CCXT:
ccxt>=4.0.0- Cryptocurrency exchange trading library - TA-Lib:
ta-lib>=0.4.25- Technical analysis library - FastAPI:
fastapi>=0.104.0- Modern web framework for HTTP transport - Pandas:
pandas>=2.0.0- Data manipulation and analysis - NumPy:
numpy>=1.24.0- Numerical computing
Installation Methods
Method 1: Direct Usage with uvx (Recommended) โญ
No installation required! Run directly without cloning:
# Run MCP server (stdio mode for Claude Desktop)
uvx crypto-powerdata-mcp
# Run HTTP server for web access
uvx crypto-powerdata-mcp --http
# Run with environment variables
uvx crypto-powerdata-mcp --env OKX_API_KEY=your_key --env OKX_SECRET_KEY=your_secret
Advantages:
- โ No repository cloning needed
- โ No dependency management
- โ Always uses latest published version
- โ Automatic isolation
- โ Works across different environments
Method 2: Local Development Installation
# Install UV if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh
# Clone and install
git clone https://github.com/veithly/crypto-powerdata-mcp.git
cd crypto-powerdata-mcp
uv sync
Method 3: Using pip
git clone https://github.com/veithly/crypto-powerdata-mcp.git
cd crypto-powerdata-mcp
pip install -e .
Method 4: Development Installation with Testing
git clone https://github.com/veithly/crypto-powerdata-mcp.git
cd crypto-powerdata-mcp
uv sync --dev # Includes development dependencies
TA-Lib Installation
TA-Lib requires additional system-level installation:
Windows
# Using conda (recommended)
conda install -c conda-forge ta-lib
# Or download pre-compiled wheels
pip install TA-Lib
macOS
brew install ta-lib
pip install TA-Lib
Linux (Ubuntu/Debian)
Quick Solution - Pre-compiled Binary (Recommended):
# Install pre-compiled TA-Lib binary - no system dependencies needed
pip install ta-lib-bin
Official Installation - Latest Version:
# Download and compile from source
wget http://prdownloads.sourceforge.net/ta-lib/ta-lib-0.4.0-src.tar.gz
tar -xzf ta-lib-0.4.0-src.tar.gz
cd ta-lib/
sudo apt-get install build-essential
./configure --prefix=/usr
make
sudo make install
sudo ldconfig
# Install Python wrapper
pip install TA-Lib
Ubuntu 22.04 and older:
sudo apt-get install libta-lib-dev
pip install TA-Lib
โ๏ธ Configuration
Environment Variables
Create a .env file in the project root for configuration:
# OKX DEX API Configuration (Required for DEX features)
OKX_API_KEY=your_api_key_here
OKX_SECRET_KEY=your_secret_key_here
OKX_API_PASSPHRASE=your_passphrase_here
OKX_PROJECT_ID=your_project_id_here
# Optional Performance Settings
RATE_LIMIT_REQUESTS_PER_SECOND=10
TIMEOUT_SECONDS=30
LOG_LEVEL=INFO
# Optional Transport Settings
DEFAULT_TRANSPORT=stdio
HTTP_HOST=127.0.0.1
HTTP_PORT=8000
OKX API Setup
- Create OKX Account: Visit OKX and create an account
- Generate API Keys: Go to API Management in your account settings
- Enable DEX API: Ensure DEX API access is enabled for your API key
- Configure Permissions: Set appropriate permissions for market data access
MCP Client Configuration
Claude Desktop Configuration
Add to your Claude Desktop configuration file:
{
"mcpServers": {
"crypto-powerdata-mcp": {
"command": "uv",
"args": ["run", "python", "-m", "src.main"],
"cwd": "/absolute/path/to/crypto-powerdata-mcp",
"env": {
"PYTHONPATH": ".",
"OKX_API_KEY": "your_api_key",
"OKX_SECRET_KEY": "your_secret_key",
"OKX_API_PASSPHRASE": "your_passphrase",
"OKX_PROJECT_ID": "your_project_id"
}
}
}
}
MCP Studio Configuration
{
"name": "Crypto PowerData MCP",
"command": ["uv", "run", "python", "-m", "src.main"],
"env": {
"PYTHONPATH": "/path/to/crypto-powerdata-mcp"
}
}
๐ก Usage Examples
Basic Examples
1. Get Real-time Token Price
# Get current USDC price on Ethereum
result = await session.call_tool("get_dex_token_price", {
"chain_index": "1", # Ethereum
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" # USDC
})
2. Fetch CEX Data with Indicators
# Get BTC/USDT data from Binance with technical indicators
result = await session.call_tool("get_cex_data_with_indicators", {
"exchange": "binance",
"symbol": "BTC/USDT",
"timeframe": "1h",
"limit": 100,
"indicators_config": '{"ema": [{"timeperiod": 12}, {"timeperiod": 26}], "rsi": [{"timeperiod": 14}]}'
})
3. Advanced Multi-Indicator Analysis
# Complex indicator configuration
indicators_config = {
"ema": [{"timeperiod": 12}, {"timeperiod": 26}, {"timeperiod": 50}],
"macd": [{"fastperiod": 12, "slowperiod": 26, "signalperiod": 9}],
"rsi": [{"timeperiod": 14}, {"timeperiod": 21}],
"bbands": [{"timeperiod": 20, "nbdevup": 2, "nbdevdn": 2}],
"stoch": [{"fastkperiod": 5, "slowkperiod": 3, "slowdperiod": 3}]
}
result = await session.call_tool("get_enhanced_dex_data_with_indicators", {
"chain_index": "1",
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"timeframe": "1h",
"limit": 200,
"indicators_config": json.dumps(indicators_config)
})
Advanced Usage Patterns
Pattern Recognition Analysis
# Candlestick pattern recognition
pattern_config = {
"cdldoji": [{}],
"cdlhammer": [{}],
"cdlengulfing": [{}],
"cdl3blackcrows": [{}],
"cdlmorningstar": [{}]
}
result = await session.call_tool("get_enhanced_dex_data_with_indicators", {
"chain_index": "1",
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"timeframe": "4h",
"limit": 100,
"indicators_config": json.dumps(pattern_config)
})
Multi-Timeframe Analysis
# Analyze same asset across different timeframes
timeframes = ["1h", "4h", "1d"]
results = {}
for tf in timeframes:
result = await session.call_tool("get_enhanced_dex_data_with_indicators", {
"chain_index": "1",
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"timeframe": tf,
"limit": 50,
"indicators_config": '{"ema": [{"timeperiod": 20}], "rsi": [{"timeperiod": 14}]}'
})
results[tf] = result
๐ API Documentation
Available Tools
| Tool Name | Description | Transport Support |
|---|---|---|
get_enhanced_dex_data_with_indicators |
Advanced DEX data with flexible indicators | stdio, HTTP/SSE |
get_available_indicators |
Complete indicator registry | stdio, HTTP/SSE |
get_cex_data_with_indicators |
CEX data with enhanced indicators | stdio, HTTP/SSE |
get_dex_data_with_indicators |
DEX data with indicators (legacy) | stdio, HTTP/SSE |
get_dex_token_price |
Current DEX token price | stdio, HTTP/SSE |
get_cex_price |
Current CEX price | stdio, HTTP/SSE |
Tool Specifications
get_enhanced_dex_data_with_indicators
Purpose: Fetch DEX candlestick data with comprehensive technical indicators
Parameters:
chain_index(string, required): Blockchain identifier ("1" for Ethereum, "56" for BSC, etc.)token_address(string, required): Token contract address (42-character hex string)timeframe(string, optional): Time interval ("1m", "5m", "15m", "1h", "4h", "1d", "1w")limit(integer, optional): Number of candles to fetch (default: 100, max: 1000)indicators_config(string, required): JSON string with indicator configurations
Example Request:
{
"chain_index": "1",
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"timeframe": "1h",
"limit": 100,
"indicators_config": "{\"ema\": [{\"timeperiod\": 12}, {\"timeperiod\": 26}], \"rsi\": [{\"timeperiod\": 14}]}"
}
Response Format:
{
"success": true,
"data": {
"candles": [...],
"indicators": {
"ema_12": [...],
"ema_26": [...],
"rsi_14": [...]
},
"metadata": {
"symbol": "USDC",
"timeframe": "1h",
"count": 100
}
}
}
๐ Supported Indicators
Indicator Categories (158 Total)
| Category | Count | Examples |
|---|---|---|
| Momentum Indicators | 30 | RSI, MACD, Stochastic, ADX, CCI, Williams %R, ROC |
| Overlap Studies | 17 | SMA, EMA, Bollinger Bands, KAMA, T3, TEMA |
| Pattern Recognition | 61 | Doji, Hammer, Engulfing, Three Black Crows, Morning Star |
| Volume Indicators | 3 | OBV, A/D Line, Chaikin A/D Oscillator |
| Volatility Indicators | 3 | ATR, NATR, True Range |
| Price Transform | 4 | Average Price, Median Price, Typical Price, Weighted Close |
| Cycle Indicators | 5 | Hilbert Transform Dominant Cycle Period, Trend Mode |
| Statistic Functions | 9 | Beta, Correlation, Linear Regression, Standard Deviation |
| Math Transform | 15 | ACOS, ASIN, ATAN, COS, SIN, TAN, SQRT, LN, LOG10 |
| Math Operators | 11 | ADD, SUB, MULT, DIV, MIN, MAX, SUM |
Parameter Format Examples
Basic Indicators
{
"sma": [{"timeperiod": 20}],
"ema": [{"timeperiod": 12}, {"timeperiod": 26}],
"rsi": [{"timeperiod": 14}]
}
Advanced Indicators
{
"macd": [{"fastperiod": 12, "slowperiod": 26, "signalperiod": 9}],
"bbands": [{"timeperiod": 20, "nbdevup": 2, "nbdevdn": 2}],
"stoch": [{"fastkperiod": 5, "slowkperiod": 3, "slowdperiod": 3}]
}
Pattern Recognition
{
"cdldoji": [{}],
"cdlhammer": [{}],
"cdlengulfing": [{}]
}
Result Column Naming
The service automatically generates descriptive column names based on parameters:
- Single Parameter:
indicator_value(e.g.,rsi_14,sma_20) - Multiple Parameters:
indicator_param1_param2_...(e.g.,macd_12_26_9) - Multiple Outputs:
indicator_params_output(e.g.,bbands_2_2_20_upperband)
Popular Indicator Combinations
Trend Following Strategy
{
"ema": [{"timeperiod": 12}, {"timeperiod": 26}, {"timeperiod": 50}],
"macd": [{"fastperiod": 12, "slowperiod": 26, "signalperiod": 9}],
"adx": [{"timeperiod": 14}]
}
Mean Reversion Strategy
{
"rsi": [{"timeperiod": 14}],
"bbands": [{"timeperiod": 20, "nbdevup": 2, "nbdevdn": 2}],
"stoch": [{"fastkperiod": 5, "slowkperiod": 3, "slowdperiod": 3}]
}
Momentum Analysis
{
"rsi": [{"timeperiod": 14}, {"timeperiod": 21}],
"cci": [{"timeperiod": 14}],
"willr": [{"timeperiod": 14}],
"roc": [{"timeperiod": 10}]
}
๐ Data Sources
Centralized Exchanges (CEX)
Supported via CCXT Library (100+ exchanges):
Major Exchanges
- Binance - World's largest cryptocurrency exchange
- Coinbase - Leading US-based exchange
- Kraken - Established European exchange
- Bitfinex - Advanced trading features
- Huobi - Global cryptocurrency exchange
- OKX - Comprehensive trading platform
Regional Exchanges
- Bitstamp - European exchange
- Gemini - Regulated US exchange
- KuCoin - Global altcoin exchange
- Gate.io - Wide variety of trading pairs
- Bybit - Derivatives trading platform
Decentralized Exchanges (DEX)
Supported via OKX DEX API:
Supported Blockchains
| Chain | Chain Index | Native Token | Popular DEXs |
|---|---|---|---|
| Ethereum | 1 | ETH | Uniswap, SushiSwap, 1inch |
| BSC | 56 | BNB | PancakeSwap, Venus |
| Polygon | 137 | MATIC | QuickSwap, SushiSwap |
| Avalanche | 43114 | AVAX | Trader Joe, Pangolin |
| Arbitrum | 42161 | ETH | Uniswap V3, SushiSwap |
| Optimism | 10 | ETH | Uniswap V3, Synthetix |
Popular Token Addresses
Ethereum (chain_index: "1"):
USDC: 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48
USDT: 0xdac17f958d2ee523a2206206994597c13d831ec7
WETH: 0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2
DAI: 0x6b175474e89094c44da98b954eedeac495271d0f
BSC (chain_index: "56"):
WBNB: 0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c
BUSD: 0xe9e7cea3dedca5984780bafc599bd69add087d56
CAKE: 0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82
๐ ๏ธ Development
Project Structure
crypto-powerdata-mcp/
โโโ src/
โ โโโ main.py # Main MCP server entry point
โ โโโ data_provider.py # Data fetching and processing
โ โโโ enhanced_indicators.py # Advanced technical analysis
โ โโโ talib_registry.py # TA-Lib indicator registry
โ โโโ mcp_bridge.py # Transport protocol bridge
โ โโโ dual_transport_server.py # HTTP/SSE server
โโโ tests/
โ โโโ test_enhanced_mcp.py # Comprehensive test suite
โ โโโ test_mcp_functionality.py # Basic functionality tests
โ โโโ comprehensive_mcp_test.py # Advanced testing
โโโ docs/
โ โโโ API_DOCUMENTATION.md # Detailed API reference
โ โโโ CONFIGURATION.md # Configuration guide
โ โโโ TESTING_REPORT.md # Testing documentation
โโโ config_examples.py # Configuration examples
โโโ pyproject.toml # Project dependencies
โโโ README.md # This file
โโโ LICENSE # MIT license
Development Setup
# Clone repository
git clone https://github.com/veithly/crypto-powerdata-mcp.git
cd crypto-powerdata-mcp
# Install development dependencies
uv sync --dev
# Install pre-commit hooks
pre-commit install
# Run tests
pytest
# Run linting
black src/ tests/
isort src/ tests/
flake8 src/ tests/
mypy src/
Adding New Indicators
- Register in TA-Lib Registry (
src/talib_registry.py):
def register_custom_indicator(self):
self.indicators["custom_indicator"] = IndicatorDefinition(
name="custom_indicator",
category=IndicatorCategory.MOMENTUM,
description="Custom indicator description",
# ... other parameters
)
- Implement Calculation (
src/enhanced_indicators.py):
def calculate_custom_indicator(self, data, params):
# Implementation here
return result
- Add Tests (
tests/test_enhanced_mcp.py):
def test_custom_indicator():
# Test implementation
pass
๐งช Testing
Test Suite Overview
The project includes comprehensive testing to ensure reliability and functionality:
Available Test Files
-
test_enhanced_mcp.py- Comprehensive test suite for enhanced MCP features- Tests all 158 TA-Lib indicators
- Validates multi-parameter support
- Checks transport protocols
- Error handling scenarios
-
test_mcp_functionality.py- Basic functionality demonstration- Simple usage examples
- Integration testing
- Client-server communication
-
comprehensive_mcp_test.py- Advanced testing scenarios- Performance testing
- Edge case handling
- Real-world usage patterns
Running Tests
Quick Test
# Run basic functionality test
uv run python test_mcp_functionality.py
Comprehensive Testing
# Run all tests with pytest
pytest tests/ -v
# Run specific test file
pytest test_enhanced_mcp.py -v
# Run with coverage
pytest --cov=src --cov-report=html
Manual Testing
# Test enhanced indicators system
uv run python -c "
import asyncio
from src.enhanced_indicators import EnhancedTechnicalAnalysis
import pandas as pd
import numpy as np
async def test():
ta = EnhancedTechnicalAnalysis()
# Create sample data
dates = pd.date_range('2024-01-01', periods=100, freq='1H')
data = pd.DataFrame({
'open': np.random.uniform(50000, 51000, 100),
'high': np.random.uniform(50500, 51500, 100),
'low': np.random.uniform(49500, 50500, 100),
'close': np.random.uniform(50000, 51000, 100),
'volume': np.random.uniform(100, 1000, 100)
}, index=dates)
# Test indicators
config = {
'ema': [{'timeperiod': 12}, {'timeperiod': 26}],
'rsi': [{'timeperiod': 14}],
'macd': [{'fastperiod': 12, 'slowperiod': 26, 'signalperiod': 9}]
}
result = ta.calculate_indicators(data, config)
print(f'โ
Calculated {len(result.columns)} columns')
print(f'๐ Indicators: {[col for col in result.columns if col not in data.columns]}')
asyncio.run(test())
"
Performance Testing
# Test HTTP transport performance
curl -X POST http://localhost:8000/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"method": "initialize",
"params": {"protocolVersion": "2024-11-05"},
"id": 1
}'
Troubleshooting Tests
Common Issues
-
Import Errors
# Solution: Set PYTHONPATH export PYTHONPATH=/path/to/crypto-powerdata-mcp
-
TA-Lib Installation Issues
# Windows conda install -c conda-forge ta-lib # macOS brew install ta-lib pip install ta-lib # Linux - Quick Solution (Recommended) pip install ta-lib-bin # Linux - From Source (Latest Version) sudo apt-get install build-essential # Download and compile from source - see installation section above # Linux (Ubuntu 22.04 and older) sudo apt-get install libta-lib-dev pip install ta-lib
-
API Rate Limits
# Solution: Reduce request rate export RATE_LIMIT_REQUESTS_PER_SECOND=5
-
Memory Issues
# Solution: Use smaller datasets # Reduce limit parameter in API calls
Debug Mode
# Enable detailed logging
export LOG_LEVEL=DEBUG
uv run python -m src.main
๐ค Contributing
We welcome contributions to the Crypto PowerData MCP service! Here's how you can help:
Ways to Contribute
- Bug Reports - Report issues via GitHub Issues
- Feature Requests - Suggest new features or improvements
- Code Contributions - Submit pull requests for bug fixes or new features
- Documentation - Improve documentation and examples
- Testing - Add test cases or improve existing tests
Development Workflow
-
Fork the Repository
git clone https://github.com/veithly/crypto-powerdata-mcp.git cd crypto-powerdata-mcp
-
Create a Feature Branch
git checkout -b feature/your-feature-name
-
Set Up Development Environment
uv sync --dev pre-commit install
-
Make Your Changes
- Follow the existing code style
- Add tests for new features
- Update documentation as needed
-
Run Tests
pytest tests/ -v black src/ tests/ isort src/ tests/ flake8 src/ tests/ mypy src/
-
Commit and Push
git add . git commit -m "feat: add your feature description" git push origin feature/your-feature-name
-
Create Pull Request
- Provide clear description of changes
- Reference any related issues
- Ensure all tests pass
Code Style Guidelines
- Python Style: Follow PEP 8 with Black formatting
- Type Hints: Use type hints for all function parameters and returns
- Documentation: Add docstrings for all public functions and classes
- Testing: Maintain test coverage above 80%
Adding New Features
Adding Exchange Support
- Extend
data_provider.pywith new exchange integration - Add configuration options in
main.py - Create comprehensive tests
- Update documentation
Adding New Indicators
- Register in
talib_registry.py - Implement calculation in
enhanced_indicators.py - Add parameter validation
- Create test cases
- Update API documentation
Reporting Issues
When reporting bugs, please include:
- Python version and operating system
- Complete error messages and stack traces
- Steps to reproduce the issue
- Expected vs actual behavior
- Relevant configuration details
Feature Requests
For feature requests, please provide:
- Clear description of the proposed feature
- Use cases and benefits
- Potential implementation approach
- Any relevant examples or references
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
MIT License Summary
- โ Commercial Use - Use in commercial projects
- โ Modification - Modify the source code
- โ Distribution - Distribute the software
- โ Private Use - Use for private projects
- โ Liability - No warranty or liability
- โ Warranty - No warranty provided
Third-Party Licenses
This project uses several open-source libraries:
- TA-Lib - BSD License
- CCXT - MIT License
- FastAPI - MIT License
- Pandas - BSD License
- NumPy - BSD License
๐ Acknowledgments
Special thanks to the following projects and communities:
- TA-Lib - Technical Analysis Library for comprehensive indicator calculations
- CCXT - Cryptocurrency Exchange Trading Library for multi-exchange support
- OKX - DEX API provider for decentralized exchange data
- FastMCP - Model Context Protocol framework
- FastAPI - Modern web framework for HTTP transport
- Model Context Protocol - Protocol specification and community
Contributors
- Initial development and architecture
- Technical analysis system design
- Dual transport protocol implementation
- Comprehensive testing framework
- Documentation and examples
๐ Support
- Documentation: API Documentation | Configuration Guide
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: dev@example.com
Made with โค๏ธ for the cryptocurrency and AI communities
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file crypto_powerdata_mcp-0.1.0.tar.gz.
File metadata
- Download URL: crypto_powerdata_mcp-0.1.0.tar.gz
- Upload date:
- Size: 213.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0da137ba73c28579f8748e0f690035a02fdb64be17c99df2e69d0d865a7d3983
|
|
| MD5 |
d2d96fb645e4d700089bcd30120bb308
|
|
| BLAKE2b-256 |
c0d6f632635c9621aba13b70fc5b4e45228238a3d5c377e4276fea546bccfffb
|
File details
Details for the file crypto_powerdata_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: crypto_powerdata_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 42.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9f131b27f9cc3575b5b961d8044262863323ca4a5599635951264a40fdf9ffcd
|
|
| MD5 |
56b3f10bcc9891162d86312acfe784c7
|
|
| BLAKE2b-256 |
9353c323fa99f5f2ff0fe6b0d6b17b5ebc847966ff0fa197c38aa1335ae03b79
|