Il y a trois mois, j'ai accompagné Marc, développeur indépendant basé à Lyon, sur un projet d'analyse crypto pour un fonds de trading algorithmique à Singapour. Son problème quotidien : jongler entre l'interface web de Tardis.dev, son notebook Jupyter et Claude pour interpréter des carnets d'ordres. Trois onglets, deux terminaux, zéro traçabilité, et beaucoup de copier-coller risqués. La solution qu'on a construite ensemble en une après-midi : un serveur MCP (Model Context Protocol) qui parle à Tardis, branché nativement dans Claude Desktop. Coût total de la première semaine de tests : moins de 30 € de crédit API. Voici exactement comment on a fait, pas à pas.

Pourquoi MCP + Tardis change la donne pour l'analyse crypto

MCP (Model Context Protocol) est le protocole ouvert lancé par Anthropic fin 2024 qui permet à Claude d'invoquer des outils externes comme s'ils étaient natifs. Combiné à Tardis.dev — la référence pour les données historiques crypto tick-by-tick (order books, trades, liquidations sur plus de 40 exchanges) — on obtient un assistant capable de raisonner directement sur des flux de données réels, sans export CSV intermédiaire.

Cas d'usage concret testé chez Marc : « Analyse les liquidations BTCUSDT du 12 mars 2024 entre 14 h et 16 h UTC et identifie les clusters anormaux ». Claude appelle le MCP, récupère les données, raisonne, restitue une analyse structurée. Le tout en moins de 6 secondes.

Prérequis techniques

Étape 1 — Installer les dépendances et le SDK MCP

python -m venv mcp-tardis-env
source mcp-tardis-env/bin/activate
pip install mcp requests python-dotenv httpx

Étape 2 — Écrire le serveur MCP qui interroge Tardis

Créez un fichier tardis_server.py à la racine de votre projet. Trois outils sont définis ci-dessous : récupération de trades historiques Futures, snapshot du carnet d'ordres, et ticker dérivé temps réel.

import os
import requests
from mcp.server.fastmcp import FastMCP
from dotenv import load_dotenv

load_dotenv()

mcp = FastMCP("tardis-crypto-mcp")
TARDIS_API_KEY = os.getenv("TARDIS_API_KEY")
BASE_URL = "https://api.tardis.dev/v1"

@mcp.tool()
def get_binance_futures_trades(symbol: str, date: str, limit: int = 1000) -> dict:
    """Récupère un échantillon de trades historiques Binance Futures.
    Args:
        symbol: ex. BTCUSDT
        date: format AAAA-MM-JJ
        limit: nombre max de trades (defaut 1000)
    """
    url = f"{BASE_URL}/binance-futures/trades"
    headers = {"Authorization": f"Bearer {TARDIS_API_KEY}"}
    params = {"symbol": symbol.upper(), "date": date}
    r = requests.get(url, params=params, headers=headers, timeout=15)
    r.raise_for_status()
    data = r.json()
    sample = data[:limit]
    return {
        "symbol": symbol,
        "date": date,
        "trades_count": len(data),
        "sample_size": len(sample),
        "vwap": round(sum(t["price"] * t["amount"] for t in sample) /
                       sum(t["amount"] for t in sample), 2),
        "volume_total": round(sum(t["amount"] for t in sample), 4