Skip to main content
Glama

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

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.

  1. ๐Ÿš€ Features
    1. ๐Ÿ“‹ Requirements
      1. ๐Ÿ”ง Installation
        1. ๐Ÿƒ Usage
          1. Running the Server
          2. Available Tools
          3. Example Usage with MCP Client
        2. ๐Ÿงช Testing
          1. Test Coverage
        3. ๐Ÿ“ Project Structure
          1. ๐Ÿ”‘ Key Design Decisions
            1. 1. Exchange Selection
            2. 2. Caching Strategy
            3. 3. Error Handling
            4. 4. Data Validation
          2. ๐Ÿ› ๏ธ Configuration
            1. Changing the Default Exchange
            2. Adjusting Cache TTL
          3. ๐Ÿ” Assumptions
            1. ๐Ÿ“Š Performance Considerations
              1. ๐Ÿ› Known Limitations
                1. ๐Ÿ”ฎ Future Enhancements
                  1. ๐Ÿ“ License
                    1. ๐Ÿ™ Acknowledgments
                      1. ๐Ÿ“ง Contact

                        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