Skip to main content
Glama
Nielsen642

Crypto MCP Server

by Nielsen642

πŸš€ Crypto MCP Server

πŸ“Œ Overview

Crypto MCP Server is a Model Context Protocol (MCP) compatible server that provides real-time and historical cryptocurrency market data using ccxt. It exposes three fully tested tools:

get_ticker β†’ Live price & market summary

get_ohclv β†’ Historical candlestick data

stream_ticker β†’ Real-time price streaming (async generator)

The project includes:

Custom error handling

In-memory caching

A lightweight MCP server architecture

Complete test suite (pytest)

Local client for manual testing

✨ Features

πŸ”Ή get_ticker

Fetches:

last price

high & low

base volume

price_change_percent

πŸ”Ή get_ohclv

Fetches OHLCV candles with:

timestamp

open

high

low

close

volume

πŸ”Ή stream_ticker

Real-time streaming ticker with async generator that yields updates every N seconds.

🧩 Project Structure

crypto-mcp-server/ β”‚ β”œβ”€β”€ server/ β”‚ β”œβ”€β”€ main.py β”‚ β”œβ”€β”€ mcp_server.py β”‚ β”œβ”€β”€ cache.py β”‚ β”œβ”€β”€ errors.py β”‚ β”œβ”€β”€ exchanges.py β”‚ └── tools/ β”‚ β”œβ”€β”€ get_ticker.py β”‚ β”œβ”€β”€ get_ohclv.py β”‚ └── stream_ticker.py β”‚ β”œβ”€β”€ tests/ β”‚ β”œβ”€β”€ test_get_ticker.py β”‚ β”œβ”€β”€ test_ohclv.py β”‚ └── test_stream_ticker.py β”‚ β”œβ”€β”€ client_test.py β”œβ”€β”€ README.md β”œβ”€β”€ requirements.txt └── .gitignore

πŸ› οΈ Tech Stack

Python 3.10+

ccxt for exchange APIs

pytest for testing

asyncio for streaming

MCP server protocol style

πŸ“¦ Installation

git clone https://github.com/yourusername/crypto-mcp-server cd crypto-mcp-server pip install -r requirements.txt

▢️ Running the MCP Server

From the server/ directory:

python -m server.main

You should see:

Crypto MCP Server running… Registered tools: get_ticker, get_ohclv, stream_ticker

πŸ§ͺ Running Tests

All tests are under tests/ and cover:

Valid/invalid symbols

Unsupported exchanges

API errors

Streaming behavior

Run:

pytest -vv

πŸ“ Tools Implemented

πŸ”Ή get_ticker

Handles:

Invalid symbols

Unsupported exchanges

ccxt API exceptions

Caching responses for 20 seconds

πŸ”Ή get_ohclv

Returns OHCLV historical candles

Validates timeframe & limit

Raises custom errors

πŸ”Ή stream_ticker

Async generator

Streams live ticker updates

Internal delay using asyncio.sleep()

Full validation & error handling

Caching Layer

cache.py implements simple in-memory TTL cache:

save(key, value, ttl)

get(key)

Prevents extra API calls

πŸ§ͺ Testing Strategy

Unit Tests (pytest)

Each tool has:

success test

invalid symbol test

invalid exchange test

API failure test

Streaming Tests

Uses asyncio.mark

Simulates multiple ticker updates

Checks generator behavior

πŸ§ͺ Local Testing Without MCP CLI

Run:

python client_test.py

It prints:

get_ticker result

get_ohclv candles

3 streamed ticker updates

πŸ” Example Output

--- Testing get_ticker --- {...}

--- Testing get_ohclv --- {...}

--- Testing stream_ticker --- {...}

πŸ“Œ Key Learning & Highlights

Designed full MCP-style server

Implemented async streaming tool

Wrote complete test suite

Built caching + error handling abstraction

Validated exchange + symbol inputs safely

-
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/Nielsen642/Crypto_MCP_Server'

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