mcpField
M
mlflow-python

mlflow-python

github.com/terrylicaData & databases2138 installsUpdated 1d ago
Repository

About mlflow-python

MLflow Python Skill provides Python-based read and write operations for MLflow experiments and runs, with QuantStats calculations for trading metrics. It is intended for users tracking backtests who need to log results, query runs, and retrieve metric histories without directly managing the backend.

Key features

  1. 01Log backtest returns and metrics
  2. 02Record experiment parameters
  3. 03Create and manage experiments
  4. 04Filter and sort runs
  5. 05Retrieve metric time series
  6. 06Calculate 70+ QuantStats metrics

Use cases

  1. 01Logging trading strategy backtests
  2. 02Searching runs by metric filters
  3. 03Reviewing a run's metric history

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/terrylica/cc-skills --skill mlflow-python

After installing, type/mlflow-pythonin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
authentication.md
evolution-log.md
migration-from-cli.md
quantstats-metrics.md
query-patterns.md
scripts/
create_experiment.py
get_metric_history.py
log_backtest.py
query_experiments.py

Details

From the project README

MLflow Python Skill

Unified read/write MLflow operations via Python API with QuantStats integration for comprehensive trading metrics.

ADR: 2025-12-12-mlflow-python-skill

Note: This skill uses Pandas (MLflow API requires it). The mlflow-python path is auto-skipped by the Polars preference hook.

Self-Evolving Skill: This skill improves through use. If instructions are wrong, parameters drifted, or a workaround was needed — fix this file immediately, don't defer. Only update for real, reproducible issues.

When to Use This Skill

CAN Do:

  • Log backtest metrics (Sharpe, max_drawdown, total_return, etc.)
  • Log experiment parameters (strategy config, timeframes)
  • Create and manage experiments
  • Query runs with SQL-like filtering
  • Calculate 70+ trading metrics via QuantStats
  • Retrieve metric history (time-series data)

CANNOT Do:

  • Direct database access to MLflow backend
  • Artifact storage management (S3/GCS configuration)
  • MLflow server administration

Prerequisites

Authentication Setup

MLflow uses separate environment variables for credentials (NOT embedded in URI):

# Option 1: .env.local + uv --env-file (recommended)
# Create .env.local (gitignored) in the skill directory with the lines below,
# then run scripts as: uv run --env-file .env.local scripts/<script>.py
MLFLOW_TRACKING_URI=http://mlflow.example.com:5000
MLFLOW_TRACKING_USERNAME=<user>
MLFLOW_TRACKING_PASSWORD=<password>

# Option 2: Direct environment variables
export MLFLOW_TRACKING_URI="http://mlflow.example.com:5000"
export MLFLOW_TRACKING_USERNAME="<user>"
export MLFLOW_TRACKING_PASSWORD="<password>"
Verify Connection
/usr/bin/env bash << 'SKILL_SCRIPT_EOF'
ROOT="$(cc-plugin-root devops-tools)"
cd "$ROOT/skills/mlflow-python"
uv run scripts/query_experiments.py experiments
SKILL_SCRIPT_EOF

Quick Start Workflows

A. Log Backtest Results (Primary Use Case)
/usr/bin/env bash << 'SKILL_SCRIPT_EOF_2'
ROOT="$(cc-plugin-root devops-tools)"
cd "$ROOT/skills/mlflow-python"
uv run scripts/log_backtest.py \
  --experiment "crypto-backtests" \
  --run-name "btc_momentum_v2" \
  --returns path/to/returns.csv \
  --params '{"strategy": "momentum", "timeframe": "1h"}'
SKILL_SCRIPT_EOF_2
B. Search Experiments
uv run scripts/query_experiments.py experiments
C. Query Runs with Filter
uv run scripts/query_experiments.py runs \
  --experiment "crypto-backtests" \
  --filter "metrics.sharpe_ratio > 1.5" \
  --order-by "metrics.sharpe_ratio DESC"
D. Create New Experiment
uv run scripts/create_experiment.py \
  --name "crypto-backtests-2025" \
  --description "Q1 2025 cryptocurrency trading strategy backtests"
E. Get Metric History
uv run scripts/get_metric_history.py \
  --run-id abc123 \
  --metrics sharpe_ratio,cumulative_return

QuantStats Metrics Available

The log_backtest.py script calculates 70+ metrics via QuantStats, including:

CategoryMetrics
Ratiossharpe, sortino, calmar, omega, treynor
Returnscagr, total_return, avg_return, best, worst
Drawdownmax_drawdown, avg_drawdown, drawdown_days
Tradewin_rate, profit_factor, payoff_ratio, consecutive_wins/losses
Riskvolatility, var, cvar, ulcer_index, serenity_index
Advancedkelly_criterion, recovery_factor, risk_of_ruin, information_ratio

See quantstats-metrics.md for full list.

Bundled Scripts

ScriptPurpose
log_backtest.pyLog backtest returns with QuantStats metrics
query_experiments.pySearch experiments and runs (replaces CLI)
create_experiment.pyCreate new experiment with metadata
get_metric_history.pyRetrieve metric time-series data

Configuration

Configuration comes from MLFLOW_* environment variables. Create .env.local (gitignored) for credentials and load it per command with uv run --env-file .env.local scripts/<script>.py:

MLFLOW_TRACKING_URI=http://mlflow.example.com:5000
MLFLOW_TRACKING_USERNAME=<user>
MLFLOW_TRACKING_PASSWORD=<password>

Reference Documentation

Migration from mlflow-query

This skill replaces the CLI-based mlflow-query skill. Key differences:

Featuremlflow-query (old)mlflow-python (new)
Log metricsNot supportedmlflow.log_metrics()
Log paramsNot supportedmlflow.log_params()
Query runsCLI text parsingDataFrame output
Metric historyWorkaround onlyNative support
Auth patternEmbedded in URISeparate env vars

See migration-from-cli.md for detailed mapping.


Troubleshooting

IssueCauseSolution
Connection refusedMLflow server not runningVerify MLFLOW_TRACKING_URI and server status
Authentication failedWrong credentialsCheck MLFLOW_TRACKING_USERNAME and PASSWORD in .env
Experiment not foundExperiment name typoRun query_experiments.py experiments to list all
QuantStats import errorMissing dependencyuv add quantstats in skill directory
Pandas import warningExpected for this skillIgnore - MLflow requires Pandas (hook-excluded)
Run creation failsExperiment doesn't existUse create_experiment.py to create first
Metric history emptyWrong run_id or metric nameVerify run_id with query_experiments.py runs
Returns CSV parse errorWrong date format or columnsCheck CSV has date index and returns column

Post-Execution Reflection

After this skill completes, check before closing:

  1. Did the command succeed? — If not, fix the instruction or error table that caused the failure.
  2. Did parameters or output change? — If the underlying tool's interface drifted, update Usage examples and Parameters table to match.
  3. Was a workaround needed? — If you had to improvise (different flags, extra steps), update this SKILL.md so the next invocation doesn't need the same workaround.

Only update if the issue is real and reproducible — not speculative.

Comments

Markdown supported