Crypto MCP Server
README.md
# Crypto MCP Server
A Python-based Model Context Protocol (MCP) server that provides real-time and historical cryptocurrency market data from major exchanges using the CCXT library.
## ๐ Features
- **Real-time Price Data**: Fetch current prices for any cryptocurrency trading pair
- **Historical Data**: Retrieve OHLCV (Open, High, Low, Close, Volume) historical data
- **Market Statistics**: Get comprehensive market summaries including 24h changes
- **Order Book Data**: Access current bid/ask order books
- **Multi-Exchange Support**: Works with 100+ cryptocurrency exchanges via CCXT
- **Intelligent Caching**: Reduces API calls with built-in caching layer
- **Error Handling**: Robust error handling and validation
- **Comprehensive Testing**: Full test coverage with pytest
## ๐ Requirements
- Python 3.10 or higher
- pip (Python package manager)
- Internet connection for API access
## ๐ง Installation
1. **Clone the repository**:
```bash
git clone <your-repo-url>
cd crypto-mcp-server
```
2. **Create a virtual environment** (recommended):
```bash
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
```
3. **Install dependencies**:
```bash
pip install -r requirements.txt
```
## ๐ Usage
### Running the Server
Start the MCP server:
```bash
python -m src.crypto_mcp_server.server
```
### Available Tools
The server exposes the following MCP tools:
1. **get_crypto_price**: Get current price for a cryptocurrency pair
- Parameters: `symbol` (e.g., "BTC/USDT"), `use_cache` (optional)
2. **get_multiple_prices**: Get prices for multiple pairs
- Parameters: `symbols` (list of trading pairs)
3. **get_historical_data**: Get historical OHLCV data
- Parameters: `symbol`, `timeframe` (e.g., "1d"), `limit`, `use_cache`
4. **get_market_summary**: Get comprehensive market statistics
- Parameters: `symbol`, `use_cache`
5. **get_orderbook**: Get current order book
- Parameters: `symbol`, `limit`
6. **search_symbols**: Search for available trading pairs
- Parameters: `query` (e.g., "BTC")
7. **get_supported_exchanges**: List all supported exchanges
- No parameters required
8. **clear_cache**: Clear all cached data
- No parameters required
9. **get_cache_stats**: Get cache statistics
- No parameters required
### Example Usage with MCP Client
```python
# Example: Get Bitcoin price
{
"tool": "get_crypto_price",
"arguments": {
"symbol": "BTC/USDT"
}
}
# Example: Get historical data
{
"tool": "get_historical_data",
"arguments": {
"symbol": "ETH/USDT",
"timeframe": "1h",
"limit": 24
}
}
```
## ๐งช Testing
Run all tests:
```bash
pytest
```
Run tests with coverage:
```bash
pytest --cov=src/crypto_mcp_server --cov-report=html
```
Run specific test file:
```bash
pytest tests/test_crypto_api.py -v
```
### Test Coverage
The project includes comprehensive tests for:
- โ
API wrapper functionality
- โ
Caching layer
- โ
MCP server tools
- โ
Error handling
- โ
Edge cases
## ๐ Project Structure
```
crypto-mcp-server/
โโโ src/
โ โโโ crypto_mcp_server/
โ โโโ __init__.py # Package initialization
โ โโโ server.py # Main MCP server
โ โโโ crypto_api.py # CCXT API wrapper
โ โโโ cache.py # Caching layer
โโโ tests/
โ โโโ test_server.py # Server tests
โ โโโ test_crypto_api.py # API tests
โ โโโ test_cache.py # Cache tests
โโโ requirements.txt # Python dependencies
โโโ README.md # This file
โโโ .gitignore # Git ignore rules
```
## ๐ Key Design Decisions
### 1. Exchange Selection
- **Default Exchange**: Binance
- **Rationale**: Binance is one of the largest and most reliable exchanges with excellent API support
- **Flexibility**: Can be configured to use any of 100+ exchanges supported by CCXT
### 2. Caching Strategy
- **TTL Values**:
- Real-time prices: 30 seconds
- Historical data: 5 minutes
- Market summaries: 1 minute
- **Rationale**: Balances data freshness with API rate limit compliance
### 3. Error Handling
- All API calls wrapped in try-catch blocks
- Graceful degradation for partial failures
- Detailed error messages for debugging
### 4. Data Validation
- Symbol format validation
- Timeframe validation
- Limit parameter validation
## ๐ ๏ธ Configuration
### Changing the Default Exchange
Edit `server.py`:
```python
server = CryptoMCPServer(
exchange_id='coinbase', # Change to any supported exchange
cache_ttl=60
)
```
### Adjusting Cache TTL
```python
server = CryptoMCPServer(
exchange_id='binance',
cache_ttl=120 # 2 minutes default cache
)
```
## ๐ Assumptions
1. **Network Connectivity**: Assumes stable internet connection
2. **Exchange Availability**: Assumes target exchange APIs are operational
3. **Rate Limits**: Built-in rate limiting through CCXT's enableRateLimit
4. **Data Format**: Assumes standard CCXT data formats
5. **No Authentication**: Uses public endpoints (no API keys required)
## ๐ Performance Considerations
- **Caching**: Reduces API calls by up to 90% for repeated queries
- **Rate Limiting**: Automatically managed by CCXT
- **Concurrent Requests**: Handles multiple simultaneous requests
- **Memory Usage**: In-memory cache with automatic cleanup
## ๐ Known Limitations
1. **Historical Data**: Limited by exchange-specific restrictions
2. **Real-time Updates**: Not true WebSocket streaming (polling-based)
3. **Authentication**: Only public endpoints supported currently
4. **Cache Persistence**: Cache is in-memory only (not persistent)
## ๐ฎ Future Enhancements
- [ ] WebSocket support for true real-time updates
- [ ] Support for authenticated endpoints
- [ ] Persistent cache (Redis/SQLite)
- [ ] Multi-exchange aggregation
- [ ] CoinMarketCap integration
- [ ] Custom alerts and notifications
- [ ] Portfolio tracking
## ๐ License
MIT License - Feel free to use this project for your needs.
## ๐ Acknowledgments
- [CCXT](https://github.com/ccxt/ccxt) - Cryptocurrency exchange API library
- [Anthropic MCP](https://github.com/anthropics/mcp) - Model Context Protocol
- [pytest](https://pytest.org/) - Testing framework
## ๐ง Contact
For questions or issues, please open an issue on GitHub.
---
**Note**: This project was developed as part of an internship assignment. It demonstrates proficiency in Python development, API integration, testing, and MCP protocol implementation.This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues