MLflow MCP

Servidor MCP de MLflow para seguimiento de experimentos de ML con consultas avanzadas, comparación de ejecuciones, acceso a artefactos y registro de modelos.

Documentación

Servidor MLflow MCP

Un servidor Model Context Protocol (MCP) que permite a los LLMs interactuar con servidores de tracking de MLflow. Consulta experimentos, analiza ejecuciones, compara métricas, gestiona el registro de modelos y promueve modelos a producción — todo mediante lenguaje natural.

Características

  • Gestión de Experimentos: Listar, buscar y filtrar experimentos
  • Análisis de Ejecuciones: Consultar ejecuciones, comparar métricas, encontrar los mejores modelos
  • Métricas y Parámetros: Obtener historiales de métricas, comparar parámetros entre ejecuciones
  • Artefactos: Explorar y descargar artefactos de ejecuciones
  • Soporte para LoggedModel: Buscar y recuperar entidades LoggedModel de MLflow 3
  • Registro de Modelos: Gestión completa del registro — registrar, etiquetar, alias, etapas y promover modelos
  • Acciones de Escritura y Eliminación: Etiquetar, alias, registrar, promover y eliminar ejecuciones/experimentos/modelos
  • Prompts MCP: Flujos de trabajo guiados integrados para tareas comunes
  • Paginación: Paginación basada en offset para explorar grandes conjuntos de resultados

Instalación

Usando uvx (Recomendado)

# Run directly without installation
uvx mlflow-mcp

# Or install globally
pip install mlflow-mcp

Desde el Código Fuente

git clone https://github.com/kkruglik/mlflow-mcp.git
cd mlflow-mcp
uv sync
uv run mlflow-mcp

Configuración

Claude Desktop

Añade a tu archivo de configuración de Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "mlflow": {
      "command": "uvx",
      "args": ["mlflow-mcp"],
      "env": {
        "MLFLOW_TRACKING_URI": "http://localhost:5000"
      }
    }
  }
}

Claude Code (a nivel de proyecto)

Añade .mcp.json a la raíz de tu proyecto:

{
  "mcpServers": {
    "mlflow": {
      "command": "uvx",
      "args": ["mlflow-mcp"],
      "env": {
        "MLFLOW_TRACKING_URI": "http://localhost:5000"
      }
    }
  }
}

Servidor Autenticado

Para servidores MLflow con autenticación, añade las credenciales al bloque env:

{
  "mcpServers": {
    "mlflow": {
      "command": "uvx",
      "args": ["mlflow-mcp"],
      "env": {
        "MLFLOW_TRACKING_URI": "https://mlflow.company.com",
        "MLFLOW_TRACKING_USERNAME": "your-username",
        "MLFLOW_TRACKING_PASSWORD": "your-password"
      }
    }
  }
}

Para Databricks o autenticación basada en tokens, usa MLFLOW_TRACKING_TOKEN en su lugar:

{
  "mcpServers": {
    "mlflow": {
      "command": "uvx",
      "args": ["mlflow-mcp"],
      "env": {
        "MLFLOW_TRACKING_URI": "https://mlflow.company.com",
        "MLFLOW_TRACKING_TOKEN": "your-token"
      }
    }
  }
}

Variables de Entorno

VariableRequeridaDescripción
MLFLOW_TRACKING_URISíURL del servidor de tracking de MLflow, p. ej. http://127.0.0.1:5000
MLFLOW_TRACKING_USERNAMENoNombre de usuario de autenticación básica HTTP (autenticación integrada de MLflow)
MLFLOW_TRACKING_PASSWORDNoContraseña de autenticación básica HTTP (autenticación integrada de MLflow)
MLFLOW_TRACKING_TOKENNoToken Bearer (configuraciones de Databricks o basadas en tokens)

Herramientas

Experimentos

HerramientaDescripción
get_experiments()Listar todos los experimentos
search_experiments(filter_string, order_by, max_results)Filtrar y ordenar experimentos
get_experiment_by_name(name)Obtener experimento por nombre
get_experiment_metrics(experiment_id)Descubrir todas las claves de métricas únicas
get_experiment_params(experiment_id)Descubrir todas las claves de parámetros únicas
get_experiment_tags(experiment_id)Descubrir todas las claves de etiquetas únicas usadas en las ejecuciones
set_experiment_tag(experiment_id, key, value)Etiquetar un experimento
delete_experiment(experiment_id)Eliminar un experimento (se mueve a la etapa de eliminados)

Ejecuciones

HerramientaDescripción
get_runs(experiment_id, limit, offset, order_by)Listar ejecuciones con detalles completos, ordenación y paginación
get_run(run_id)Obtener información detallada de la ejecución incluyendo métricas, parámetros, etiquetas, URI de artefactos y entradas de datasets
get_parent_run(run_id)Obtener la ejecución padre para ejecuciones anidadas
query_runs(experiment_id, query, limit, offset, order_by)Filtrar ejecuciones, p. ej. "metrics.accuracy > 0.9"
search_runs_by_tags(experiment_id, tags, limit, offset)Encontrar ejecuciones por clave/valor de etiqueta
set_run_tag(run_id, key, value)Etiquetar una ejecución
delete_run(run_id)Eliminar una ejecución (se mueve a la etapa de eliminados)

Métricas y Parámetros

HerramientaDescripción
get_run_metrics(run_id)Obtener todas las métricas de una ejecución
get_run_metric(run_id, metric_name)Obtener el historial completo de métricas con pasos

Artefactos

HerramientaDescripción
get_run_artifacts(run_id, path)Listar artefactos, admite exploración de subdirectorios
get_run_artifact(run_id, artifact_path)Descargar un archivo de artefacto
get_artifact_content(run_id, artifact_path)Leer el contenido del artefacto como texto/JSON

Análisis y Comparación

HerramientaDescripción
get_best_run(experiment_id, metric, ascending)Encontrar la mejor ejecución por métrica
compare_runs(experiment_id, run_ids)Comparación de ejecuciones lado a lado

Modelos Registrados (MLflow 3)

HerramientaDescripción
search_logged_models(experiment_ids, filter_string, order_by, max_results)Buscar modelos registrados por métricas/parámetros/etiquetas
get_logged_model(model_id)Obtener detalles completos de un modelo registrado

Registro de Modelos

HerramientaDescripción
get_registered_models()Listar todos los modelos registrados
get_registered_model(name)Detalles completos del modelo incluyendo versiones y alias
get_model_versions(model_name)Obtener todas las versiones de un modelo
get_model_version(model_name, version)Obtener detalles de la versión con métricas
get_model_version_by_alias(name, alias)Obtener versión por alias, p. ej. "champion"
get_latest_versions(name, stages)Obtener las últimas versiones por etapa
register_model(model_name, model_uri, tags)Registrar un modelo en el registro
update_model_version(name, version, description)Actualizar la descripción de la versión
set_registered_model_tag(name, key, value)Etiquetar un modelo registrado
set_model_alias(name, alias, version)Asignar un alias a una versión del modelo
delete_model_alias(name, alias)Eliminar un alias de un modelo
copy_model_version(src_model_name, src_version, dst_model_name)Promover una versión a otro modelo registrado
transition_model_version_stage(name, version, stage)Transición a Staging/Production/Archived (obsoleto desde MLflow 2.9, usa alias en su lugar)
delete_model_version(name, version)Eliminar una versión del modelo
delete_registered_model(name)Eliminar un modelo registrado y todas sus versiones

Salud

HerramientaDescripción
health()Verificar la conectividad del servidor

Prompts

Flujos de trabajo guiados integrados disponibles como comandos de barra en Claude:

PromptDescripción
compare_runs_by_idsComparar ejecuciones específicas lado a lado
find_best_runEncontrar y analizar la mejor ejecución en un experimento por métrica
promote_best_modelDe extremo a extremo: encontrar el mejor modelo → registrar → etiquetar → alias → promover
audit_mlflow_setupAuditar la configuración de MLflow contra las mejores prácticas de la industria — puntúa 7 categorías del 1 al 10 y produce una hoja de ruta de mejora priorizada

Ejemplos de Uso

Explorar experimentos y ejecuciones

"Muéstrame todos los experimentos. ¿Cuáles se actualizaron recientemente?"

"¿Qué métricas y parámetros se registran en el experimento 'fraud-detection'?"

"Obtén las 10 mejores ejecuciones en 'fraud-detection' ordenadas por test/f1. Muéstrame los parámetros que más difieren entre las 3 mejores."

"Encuentra todas las ejecuciones etiquetadas con model_type=lightgbm y compara sus puntuaciones de recall."

Analizar una ejecución de entrenamiento

"Muéstrame los detalles completos de la ejecución abc123 — métricas, parámetros y artefactos."

"Grafica la curva de pérdida de entrenamiento para la ejecución abc123." (Claude obtiene el historial de métricas y renderiza un gráfico)

"Esta ejecución tiene un padre — muéstrame la ejecución padre y compara sus métricas."

Encontrar y registrar el mejor modelo

"Encuentra el mejor modelo registrado en el experimento 'fraud-detection' por test/recall. Regístralo como 'fraud-classifier' con una etiqueta selection_metric."

"¿Qué modelo registrado en los experimentos 1 y 2 tiene la puntuación F1 más alta en el conjunto de validación?"

"Registra el modelo de la ejecución abc123 en la ruta de artefacto 'model/' como 'my-classifier'."

Gestionar el registro de modelos

"Muéstrame todas las versiones de 'fraud-classifier' con sus alias y etapas."

"Establece el alias champion en la versión 3 de fraud-classifier."

"Actualiza la descripción de fraud-classifier v3 para explicar con qué dataset fue entrenado."

"Copia fraud-classifier v3 a un modelo separado 'fraud-classifier-prod' como entrada de producción."

Auditar tu configuración de MLflow

"Audita mi configuración de MLflow"

(Activa el prompt integrado audit_mlflow_setup — Claude explora experimentos, ejecuciones, artefactos y el registro de modelos, luego puntúa cada área contra las mejores prácticas de Google/Databricks)

Ejemplo de salida
| Category             | Score  | Top Issue                                      |
|----------------------|--------|------------------------------------------------|
| Experiment Org       |  5/10  | Flat namespace, no dot-notation hierarchy      |
| Parameter Logging    |  7/10  | No parent-child nesting for tuning sweeps      |
| Metric Logging       |  6/10  | Only final values logged, no training curves   |
| Tagging Strategy     |  5/10  | Params duplicated as tags; stale test_tag      |
| Artifact Management  |  2/10  | No log_model(); artifacts on local disk        |
| Model Registry       |  3/10  | Duplicate prod models instead of aliases       |
| Reproducibility      |  3/10  | No git SHA; no mlflow.log_input() datasets     |
| Mean Score           |  4.4/10|                                                |

Top 3 improvements:
1. Call log_model() and move artifact store to S3/GCS
2. Add git SHA tag + mlflow.log_input() for dataset tracking
3. Consolidate registry to one model entry with @champion alias

Flujo de trabajo de promoción de extremo a extremo

"Encuentra el mejor modelo en 'fraud-detection' por test/recall, regístralo como 'fraud-classifier', etiquétalo con el framework y el tipo de problema, y establécelo como champion. Pregúntame antes de copiar a producción."

(Esto se asigna directamente al prompt integrado promote_best_model)

Depuración

Usa MCP Inspector para explorar herramientas, llamarlas con entradas personalizadas e inspeccionar respuestas crudas — sin involucrar un LLM.

Paquete publicado:

npx @modelcontextprotocol/inspector uvx mlflow-mcp

Código fuente local:

npx @modelcontextprotocol/inspector uv run --project /path/to/mlflow-mcp mlflow-mcp

Establece MLFLOW_TRACKING_URI en el panel de entorno del Inspector, o pásalo en línea:

MLFLOW_TRACKING_URI=http://127.0.0.1:5000 npx @modelcontextprotocol/inspector uvx mlflow-mcp

Requisitos

  • Python >=3.10
  • MLflow >=3.4.0
  • Acceso a un servidor de tracking de MLflow

Licencia

Licencia MIT - consulta el archivo LICENSE para más detalles.

Contribuciones

¡Las contribuciones son bienvenidas! Por favor, abre un issue o envía un pull request.

Enlaces