Skip to main content
Glama
Kamatalarajeev

Crypto MCP Server

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:

git clone <your-repo-url>
cd crypto-mcp-server
  1. Create a virtual environment (recommended):

python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install dependencies:

pip install -r requirements.txt

๐Ÿƒ Usage

Running the Server

Start the MCP server:

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

# 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:

pytest

Run tests with coverage:

pytest --cov=src/crypto_mcp_server --cov-report=html

Run specific test file:

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:

server = CryptoMCPServer(
    exchange_id='coinbase',  # Change to any supported exchange
    cache_ttl=60
)

Adjusting Cache TTL

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

๐Ÿ“ง 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.

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Kamatalarajeev/MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server