Accéder à MLflow
Serveur MCP
mlflow-mcp donne aux agents un accès direct à MLflow — interroger les runs, comparer les métriques, parcourir les artefacts, tout en langage naturel.
Convention des ID
Quand l'utilisateur fournit un ID hexadécimal (p. ex. 71f3f3199ea5e1f0) sans spécifier ce qu'il est, supposez que c'est un invocation_id (et non un run_id MLflow). Un invocation_id identifie une invocation de launcher et est stocké à la fois comme tag et comme paramètre sur les runs MLflow. Une invocation peut produire plusieurs runs MLflow (un par tâche). Vous devrez peut-être rechercher across plusieurs expériences si vous ne savez pas à quelle expérience appartient le run.
Interroger les Runs
# Trouver les runs par invocation_id
MLflow:search_runs_by_tags(experiment_id, {"invocation_id": "<invocation_id>"})
# Interroger par exemple les runs de modèle/tâche
MLflow:query_runs(experiment_id, "tags.model LIKE '%<model>%'")
MLflow:query_runs(experiment_id, "tags.task_name LIKE '%<task_name>%'")
# Obtenir une config depuis les artefacts du run
MLflow:get_artifact_content(run_id, "config.yml")
# Obtenir des statistiques imbriquées depuis les artefacts du run
MLflow:get_artifact_content(run_id, "artifacts/eval_factory_metrics.json")
NOTE: Vous NE trouverez PAS les runs PENDING, RUNNING, KILLED ou FAILED dans MLflow ! Seuls les runs SUCCESSFUL sont exportés vers MLflow.
Conseils de Workflow
Quand vous comparez les métriques entre runs, récupérez les données via MCP, puis exécutez le calcul en Python pour des résultats exacts plutôt que de faire du calcul mental en contexte :
uv run --with pandas python3 << 'EOF'
import pandas as pd
# ... calculer les deltas, moyennes, etc.
EOF
Structure des Artefacts
<harness>.<task>/
├── artifacts/
│ ├── config.yml # Config complètement résolue utilisée lors de l'évaluation
│ ├── launcher_unresolved_config.yaml # Config non résolue passée au launcher
│ ├── results.yml # Tous les résultats en format YAML
│ ├── eval_factory_metrics.json # Stats runtime (latence, compte de tokens, mémoire)
│ ├── report.html # Samples de paires Requête-Réponse en format HTML (si activé)
│ └── report.json # Samples de paires Requête-Réponse en format JSON (si activé)
└── logs/
├── client-*.log # Client d'évaluation
├── server-*-N.log # Déploiement par nœud
├── slurm-*.log # Job Slurm
└── proxy-*.log # Proxy de requête
Dépannage
Si le serveur MCP MLflow ne se charge pas ou ses tools ne sont pas disponibles :
-
uvxnon trouvé — installez uv :curl -LsSf https://astral.sh/uv/install.sh | sh -
Serveur MCP non configuré — ajoutez la config et redémarrez l'agent :
Pour Claude Code — ajoutez à
.claude/settings.json(niveau projet ou utilisateur), sous"mcpServers":"MLflow": { "command": "uvx", "args": ["mlflow-mcp"], "env": { "MLFLOW_TRACKING_URI": "https://<your-mlflow-server>/" } }Pour Cursor — éditez
~/.cursor/mcp.json(Settings > Tools & MCP > New MCP Server) :{ "mcpServers": { "MLflow": { "command": "uvx", "args": ["mlflow-mcp"], "env": { "MLFLOW_TRACKING_URI": "https://<your-mlflow-server>/" } } } }