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

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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