Pas à pas avec les serveurs MCP de PineForge : connectez l’endpoint hébergé gratuit en une commande ou lancez le serveur Docker local sur vos propres données, demandez à votre assistant de backtester une stratégie Pine, puis lisez le rapport qu’il reçoit en retour.
Dernières versions : moteur v1.10.0, sorti le 2026-11-03, et serveur local
@pineforge/backtest-mcpv0.9.40.
Mis à jour le 2026-09-30 pour les serveurs actuels : l’endpoint hébergé sur mcp.pineforge.dev et le serveur Docker local
ghcr.io/pineforge-4pass/pineforge-backtest-mcp(v0.9.32).
PineForge expose son moteur de backtest sous la forme d’un serveur Model Context Protocol : vous pouvez donc piloter un backtest depuis n’importe quel client compatible MCP, que ce soit Claude Code, Claude Desktop, Cursor ou d’autres. Il existe deux serveurs. Le serveur hébergé ne demande aucune installation. Le serveur local tourne dans Docker sur votre machine, sur vos propres données.
Ce que font les serveurs
Le serveur hébergé, à l’adresse https://mcp.pineforge.dev/mcp, expose 11 outils. Ceux que vous utiliserez le plus :
| Outil | Rôle | Coût |
|---|---|---|
backtest_pine | Transpile, compile et backteste une stratégie Pine v6 sur l’OHLCV hébergé | quota hebdomadaire par IP, partagé avec les contrôles de parité, gratuit |
list_symbols | Liste les symboles disposant d’OHLCV sur un marché crypto pris en charge | non décompté |
check_pine_feature | Indique si un identifiant Pine est pris en charge | non décompté |
check_quota | Nombre d’appels qu’il vous reste cette semaine, backtests et contrôles de parité confondus | non décompté |
Le serveur local propose 11 outils, dont backtest_pine sur votre propre CSV, backtest_pine_grid pour les balayages de paramètres, check_tradingview_parity pour noter la parité face à un export TradingView, transpile_pine et fetch_binance_ohlcv. Il n’est soumis à aucun quota.
La question de la confidentialité mérite qu’on s’y arrête. Avec le serveur hébergé, votre code Pine part vers mcp.pineforge.dev et l’OHLCV provient du jeu de données de PineForge. Pour compter combien d’appelants différents utilisent le serveur hébergé, celui-ci enregistre l’adresse IP de chaque appel d’outil (pour IPv6, le bloc /64), ainsi que la semaine et le nombre d’appels. Ces enregistrements sont supprimés au bout de 8 semaines ; seuls les totaux hebdomadaires sans adresse sont conservés. Avant ce changement, seuls les appels qui comptaient dans le quota hebdomadaire étaient enregistrés avec leur adresse IP. Avec le serveur local, la transpilation et le backtest tournent dans le conteneur : votre code Pine et votre CSV restent sur votre machine. Les seuls appels réseau partent vers l’API publique de Binance : les téléchargements que vous demandez, la taille du tick d’un marché quand vous indiquez son symbole, ainsi que les barres que check_tradingview_parity récupère quand vous n’en fournissez aucune.
Connecter le serveur hébergé (une commande)
claude mcp add --transport http pineforge https://mcp.pineforge.dev/mcp
Ni installation ni clé. Les autres clients acceptent l’URL https://mcp.pineforge.dev/mcp comme serveur Streamable HTTP. Dans Claude Desktop, ajoutez-la comme connecteur personnalisé (Customize, Connectors, Add custom connector).
Ou lancer le serveur local
Il vous faut Docker. Enregistrez le serveur dans Claude Code :
claude mcp add pineforge-backtest \
-- docker run --rm -i -v "$PWD:/work" ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest
Si vous avez déjà téléchargé l’image, docker pull ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest la met à jour : Docker ne récupère pas de lui-même un latest plus récent.
Le répertoire depuis lequel vous lancez la commande est monté sur /work. Désignez vos fichiers par leur chemin /work/... (par exemple /work/eth_15m.csv) : un chemin relatif est résolu dans le conteneur, pas dans votre répertoire.
Claude Desktop et Cursor
Pour les clients qui lisent un JSON mcpServers, ajoutez le serveur local. Dans Cursor, il s’agit de .cursor/mcp.json dans votre projet (ou de ~/.cursor/mcp.json pour tous vos projets) ; dans Claude Desktop, de claude_desktop_config.json (Settings, Developer, Edit Config). Remplacez /absolute/path/to/your/data par le dossier qui contient vos CSV :
{
"mcpServers": {
"pineforge-backtest": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-v", "/absolute/path/to/your/data:/work",
"ghcr.io/pineforge-4pass/pineforge-backtest-mcp:latest"
]
}
}
}
Gardez -i et n’ajoutez jamais -t : un TTY corrompt le flux JSON-RPC qui passe par stdio.
Piloter en langage naturel
Une fois un serveur connecté, tout se passe en langage naturel. Avec le serveur local, un échange réaliste (condensé ; les chiffres proviennent d’une exécution du 2026-09-30) :
Vous : Récupère les 7 derniers jours d’ETHUSDT en 15 minutes dans
/work/eth_15m.csv, puis backtestestrategy.pinedessus et donne-moi le taux de réussite et le drawdown.
Claude : J’exécute
fetch_binance_ohlcv, puisbacktest_pine…[
fetch_binance_ohlcvécrit 672 barres ;backtest_pinerépond en deux secondes environ]49 trades sur la fenêtre. P&L net −144,63, taux de réussite 38,8 %, drawdown max 199,66. Profit factor 0,61. Voulez-vous que je balaie les longueurs des moyennes mobiles avec
backtest_pine_grid?
Le modèle dispose des descriptions des outils, sait ce que renvoie backtest_pine et peut enchaîner l’appel suivant. La boucle « modifier le Pine, basculer sur TradingView, recharger le graphique, lire les chiffres, revenir à l’éditeur » se réduit à une seule conversation.
À quoi ressemble le rapport
backtest_pine renvoie le même rapport JSON que celui qu’écrit l’image Docker pineforge-release. Voici le bloc de synthèse de l’exécution ci-dessus :
{
"engine": "pineforge",
"summary": {
"total_trades": 49,
"wins": 19,
"losses": 30,
"win_rate_pct": 38.7755,
"net_pnl": -144.63,
"avg_trade": -2.9516,
"best_trade": 45.39,
"worst_trade": -47.13,
"max_drawdown": -199.66,
"bars_processed": 672
},
"trades": [
/* 49 entries: side, entry and exit time and price, qty, pnl, bar indices */
],
"metrics": { /* profit factor, Sharpe, Sortino, CAGR and more */ },
"equity_curve": [ /* one point per bar */ ],
"fingerprint": { /* engine, transpiler, inputs and data behind the run */ }
}
Le modèle reçoit toute la structure : il peut répondre à « quel a été le pire trade ? » à partir de trades, sans second appel. Pour les très gros rapports, le serveur local renvoie la synthèse directement dans sa réponse plutôt que le rapport complet.
Surveiller le quota
Sur le serveur hébergé, backtest_pine et check_tradingview_parity puisent dans un même quota hebdomadaire par IP, indiqué sur la page Assistants IA ; la semaine repart à zéro le lundi à 00:00 UTC, et les autres outils ne consomment aucun quota. Un budget de calcul mensuel, partagé par tous les utilisateurs gratuits, peut aussi suspendre les backtests gratuits jusqu’au mois UTC suivant. check_quota permet au modèle de vérifier avant une longue boucle. Le serveur local n’a pas de quota, ce qui en fait le meilleur choix pour les balayages.
Une bonne pratique : dans le CLAUDE.md de votre projet (ou son équivalent), ajoutez une consigne comme Before running more than 5 hosted backtests, call check_quota and report the remaining budget.
Ce que les serveurs ne font pas, volontairement
- Pas de passage d’ordres. Les serveurs backtestent ; ils ne se connectent jamais à un courtier.
- Pas de données que vous n’avez pas demandées. Le serveur hébergé backteste sur ses propres données crypto ; le serveur local utilise votre CSV ou un téléchargement Binance que vous avez demandé.
- Pas d’état entre les appels. Chaque appel à
backtest_pineest indépendant.
Ce sont des limites de périmètre délibérées. Elles gardent la surface auditable et les modes de défaillance simples.
Là où ça devient intéressant
Quelques usages fastidieux à faire à la main :
- « Resserre le stop et relance. » Le modèle modifie un nombre dans le code Pine, rappelle
backtest_pineet compare les résultats. - « Essaie sur les 30 derniers jours au lieu des 7 derniers. » Le modèle récupère une autre fenêtre et relance.
- « Quelle est la sensibilité aux paramètres ? » Avec le serveur local,
backtest_pine_gridtranspile le code source une seule fois, exécute toutes les combinaisons des inputs que vous listez et classe les résultats. - « Compare avec mon autre stratégie. » Deux appels à
backtest_pine, un rapport côte à côte.
Rien de tout cela ne demande de nouvelle infrastructure. Tout vient du modèle, des outils et de votre prose.
Essayer
- Page de configuration complète (hébergé et local, Claude Code, Claude Desktop, Cursor)
- Le serveur local sur GitHub (MIT)
- Comment nous mesurons la parité