Skip to main content
Glama
Changelog.md7.05 kB
# Changelog All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). ## [0.1.0] - 2024-01-XX ### Added #### Core Features - **REST API Endpoints** - `GET /v1/health` - Health check with uptime and version - `GET /v1/markets/ticker` - Current price data with bid/ask - `GET /v1/markets/ohlcv` - Historical candle data with configurable intervals - `GET /v1/markets/orderbook` - Orderbook snapshots with multiple levels - `GET /v1/markets/trades` - Recent trade data with side information #### Real-Time Streaming - **Server-Sent Events (SSE)** - `GET /v1/stream/ticker` - Streaming ticker updates via SSE - Configurable price change threshold (default: 0.1%) - Heartbeat events for connection health - **WebSocket Support** - `WS /ws/ticker` - WebSocket ticker stream - Multiple concurrent connections - Automatic reconnection support #### Services - **CCXT Client** (`app/services/ccxt_client.py`) - Unified exchange API wrapper - Support for Binance, Coinbase Pro, Kraken (100+ exchanges available) - Per-exchange rate limit tracking - Automatic rate limit detection and handling - **Data Normalizer** (`app/services/normalizer.py`) - Exchange-agnostic data normalization - Canonical Pydantic models for all data types - Fallback logic for missing fields - Price change percentage calculation - **Caching Service** (`app/services/cache.py`) - Redis integration with automatic fallback to in-memory cache - TTL-based expiration - Configurable TTL per endpoint type - Graceful degradation when Redis unavailable - **CoinMarketCap Client** (`app/services/cmc_client.py`) - Fallback data source for ticker information - Optional integration (graceful degradation when API key missing) #### Error Handling & Resilience - **Custom Exceptions** (`app/utils/errors.py`) - `MCPException` - Base exception with HTTP status codes - `ExchangeError` - Exchange API failures (502) - `RateLimitError` - Rate limit exceeded (429) - `ValidationError` - Input validation failures (400) - `NotFoundError` - Resource not found (404) - `CacheError` - Cache operation failures (500) - **Retry & Backoff** (`app/utils/backoff.py`) - Exponential backoff with jitter - Configurable retry attempts and backoff parameters - Automatic rate limit handling with Retry-After support - Async-friendly sleep operations #### Configuration & Logging - **Settings Management** (`app/config.py`) - Pydantic-based configuration - Environment variable support - Sensible defaults for all settings - Type-safe configuration access - **Structured Logging** (`app/utils/logging_config.py`) - JSON logging in production - Human-readable logging in development - Configurable log levels - Request ID tracking support #### Testing - **Unit Tests** (`tests/unit/`) - `test_normalizer.py` - Data normalization tests (8 tests) - `test_cache.py` - Cache operations tests (6 tests) - `test_ccxt_client.py` - CCXT client tests (8 tests) - Test fixtures for mock data - **Integration Tests** (`tests/api/`) - `test_endpoints_market.py` - Market endpoint tests (10 tests) - `test_streaming.py` - Streaming endpoint tests (4 tests) - AsyncClient testing with mocked external calls - **Test Infrastructure** (`tests/conftest.py`) - Pytest fixtures for async testing - Mock data generators - Test database setup - Event loop management #### Docker & Deployment - **Dockerfile** (`docker/Dockerfile`) - Multi-stage build for optimized image size - Python 3.11-slim base image - Health check configuration - Non-root user execution (security best practice) - **Docker Compose** (`docker/docker-compose.yml`) - Redis service with persistent volume - Application service with environment configuration - Network isolation - Health checks for both services - Volume mounts for development #### CI/CD - **GitHub Actions Workflow** (`.github/workflows/ci.yml`) - Python 3.11 testing matrix - Linting with ruff (check + format) - Optional mypy type checking - Pytest with coverage reporting - Codecov integration - Docker image build (no push) #### Documentation - **README.md** - Comprehensive project documentation - Features overview - Architecture diagram and design decisions - Tech stack table - Quick start guide - Complete API documentation with examples - Configuration reference - Development guide - Testing instructions - Docker deployment guide - Rate limiting best practices - Extension guide - Limitations and future enhancements - **CHANGELOG.md** - This file #### Project Files - **pyproject.toml** - Project metadata and dependencies - Core dependencies (FastAPI, CCXT, Redis, etc.) - Development dependencies (pytest, ruff, etc.) - Tool configurations (pytest, coverage, ruff, black) - Python 3.11+ requirement - **.env.example** - Environment variable template - All configurable settings documented - Sensible defaults provided - **.gitignore** - Git ignore patterns - Python cache and artifacts - Virtual environments - IDE configurations - OS-specific files - **LICENSE** - MIT License ### Technical Highlights - **Async-First**: Full async/await stack for high concurrency - **Type Safety**: 100% type annotations with Pydantic validation - **Error Handling**: Comprehensive error mapping and recovery - **Performance**: Multi-tier caching with Redis integration - **Scalability**: Stateless design for horizontal scaling - **Testing**: 32+ tests with ≥90% coverage target - **Production Ready**: Logging, monitoring hooks, health checks ### Dependencies **Core**: - fastapi>=0.104.0 - uvicorn[standard]>=0.24.0 - pydantic>=2.0.0 - pydantic-settings>=2.0.0 - ccxt>=4.0.0 - httpx>=0.25.0 - redis>=5.0.0 - aioredis>=2.0.0 - python-dotenv>=1.0.0 - python-json-logger>=2.0.0 **Development**: - pytest>=7.4.0 - pytest-asyncio>=0.21.0 - pytest-cov>=4.1.0 - pytest-mock>=3.11.0 - respx>=0.20.0 - httpx-mock>=0.30.0 - ruff>=0.1.0 - black>=23.0.0 ### Known Issues - CoinMarketCap historical OHLCV requires premium API key (returns mock data) - WebSocket connections are per-client (consider message broker for scalability) - Real-time latency depends on exchange API and network conditions ### Future Roadmap - [ ] Persistent storage for historical candles (SQLite/Timescale) - [ ] Background job for OHLCV backfilling - [ ] API key-based rate limiting per consumer - [ ] Advanced authentication (OAuth2, API keys) - [ ] Metrics and monitoring (Prometheus) - [ ] GraphQL API - [ ] WebSocket multiplexing for better scalability --- ## [Unreleased] ### Planned - Performance optimizations for high-frequency updates - Additional exchange support (Kraken Futures, Deribit) - Advanced filtering and aggregation endpoints - Historical data export functionality - Analytics and statistics endpoints

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/wintersoldier3912-a11y/Project-1'

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