Provides access to real-time cryptocurrency prices, historical OHLCV data, market statistics, and order book information from Binance exchange through CCXT library integration.
Enables retrieval of cryptocurrency market data including real-time prices, historical data, and trading pair information from Coinbase exchange through CCXT library integration.
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
Clone the repository:
Create a virtual environment (recommended):
Install dependencies:
๐ Usage
Running the Server
Start the MCP server:
Available Tools
The server exposes the following MCP tools:
get_crypto_price: Get current price for a cryptocurrency pair
Parameters:
symbol(e.g., "BTC/USDT"),use_cache(optional)
get_multiple_prices: Get prices for multiple pairs
Parameters:
symbols(list of trading pairs)
get_historical_data: Get historical OHLCV data
Parameters:
symbol,timeframe(e.g., "1d"),limit,use_cache
get_market_summary: Get comprehensive market statistics
Parameters:
symbol,use_cache
get_orderbook: Get current order book
Parameters:
symbol,limit
search_symbols: Search for available trading pairs
Parameters:
query(e.g., "BTC")
get_supported_exchanges: List all supported exchanges
No parameters required
clear_cache: Clear all cached data
No parameters required
get_cache_stats: Get cache statistics
No parameters required
Example Usage with MCP Client
๐งช Testing
Run all tests:
Run tests with coverage:
Run specific test file:
Test Coverage
The project includes comprehensive tests for:
โ API wrapper functionality
โ Caching layer
โ MCP server tools
โ Error handling
โ Edge cases
๐ Project Structure
๐ 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:
Adjusting Cache TTL
๐ Assumptions
Network Connectivity: Assumes stable internet connection
Exchange Availability: Assumes target exchange APIs are operational
Rate Limits: Built-in rate limiting through CCXT's enableRateLimit
Data Format: Assumes standard CCXT data formats
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
Historical Data: Limited by exchange-specific restrictions
Real-time Updates: Not true WebSocket streaming (polling-based)
Authentication: Only public endpoints supported currently
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 - Cryptocurrency exchange API library
Anthropic MCP - Model Context Protocol
pytest - 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 installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Provides real-time and historical cryptocurrency market data from 100+ exchanges including prices, OHLCV data, market statistics, and order books through the CCXT library with intelligent caching.