MLflow MCP

Servidor MLflow MCP para rastreamento de experimentos de ML com consultas avançadas, comparação de execuções, acesso a artefatos e registro de modelos.

Documentação

Servidor MLflow MCP

Um servidor Model Context Protocol (MCP) que permite que LLMs interajam com servidores de tracking do MLflow. Consulte experimentos, analise runs, compare métricas, gerencie o model registry e promova modelos para produção — tudo por meio de linguagem natural.

Recursos

  • Gerenciamento de Experimentos: Liste, pesquise e filtre experimentos
  • Análise de Runs: Consulte runs, compare métricas, encontre os modelos com melhor desempenho
  • Métricas e Parâmetros: Obtenha históricos de métricas, compare parâmetros entre runs
  • Artefatos: Navegue e baixe artefatos de runs
  • Suporte a LoggedModel: Pesquise e recupere entidades LoggedModel do MLflow 3
  • Model Registry: Gerenciamento completo do registry — registre, adicione tags, crie aliases, defina estágios e promova modelos
  • Ações de Escrita e Exclusão: Adicione tags, crie aliases, registre, promova e exclua runs/experimentos/modelos
  • MCP Prompts: Fluxos de trabalho guiados integrados para tarefas comuns
  • Paginação: Paginação baseada em offset para navegar em grandes conjuntos de resultados

Instalação

Usando uvx (Recomendado)

# Run directly without installation
uvx mlflow-mcp

# Or install globally
pip install mlflow-mcp

A partir do código-fonte

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

Configuração

Claude Desktop

Adicione ao seu arquivo de configuração do 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 (escopo do projeto)

Adicione .mcp.json à raiz do seu projeto:

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

Servidor Autenticado

Para servidores MLflow com autenticação, adicione credenciais ao bloco 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 ou autenticação baseada em token, use MLFLOW_TRACKING_TOKEN em vez disso:

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

Variáveis de Ambiente

VariávelObrigatóriaDescrição
MLFLOW_TRACKING_URISimURL do servidor de tracking do MLflow, ex.: http://127.0.0.1:5000
MLFLOW_TRACKING_USERNAMENãoNome de usuário HTTP Basic Auth (autenticação integrada do MLflow)
MLFLOW_TRACKING_PASSWORDNãoSenha HTTP Basic Auth (autenticação integrada do MLflow)
MLFLOW_TRACKING_TOKENNãoBearer token (Databricks ou configurações baseadas em token)

Ferramentas

Experimentos

FerramentaDescrição
get_experiments()Liste todos os experimentos
search_experiments(filter_string, order_by, max_results)Filtre e ordene experimentos
get_experiment_by_name(name)Obtenha experimento por nome
get_experiment_metrics(experiment_id)Descubra todas as chaves de métricas únicas
get_experiment_params(experiment_id)Descubra todas as chaves de parâmetros únicas
get_experiment_tags(experiment_id)Descubra todas as chaves de tags únicas usadas nos runs
set_experiment_tag(experiment_id, key, value)Adicione tag a um experimento
delete_experiment(experiment_id)Exclua um experimento (move para o estágio deleted)

Runs

FerramentaDescrição
get_runs(experiment_id, limit, offset, order_by)Liste runs com detalhes completos, ordenação e paginação
get_run(run_id)Obtenha informações detalhadas do run, incluindo métricas, parâmetros, tags, URI de artefatos e entradas de dataset
get_parent_run(run_id)Obtenha o run pai para runs aninhados
query_runs(experiment_id, query, limit, offset, order_by)Filtre runs, ex.: "metrics.accuracy > 0.9"
search_runs_by_tags(experiment_id, tags, limit, offset)Encontre runs por chave/valor de tag
set_run_tag(run_id, key, value)Adicione tag a um run
delete_run(run_id)Exclua um run (move para o estágio deleted)

Métricas e Parâmetros

FerramentaDescrição
get_run_metrics(run_id)Obtenha todas as métricas de um run
get_run_metric(run_id, metric_name)Obtenha o histórico completo de métricas com steps

Artefatos

FerramentaDescrição
get_run_artifacts(run_id, path)Liste artefatos, com suporte à navegação em subdiretórios
get_run_artifact(run_id, artifact_path)Baixe um arquivo de artefato
get_artifact_content(run_id, artifact_path)Leia o conteúdo do artefato como texto/JSON

Análise e Comparação

FerramentaDescrição
get_best_run(experiment_id, metric, ascending)Encontre o melhor run por métrica
compare_runs(experiment_id, run_ids)Comparação lado a lado de runs

Logged Models (MLflow 3)

FerramentaDescrição
search_logged_models(experiment_ids, filter_string, order_by, max_results)Pesquise logged models por métricas/parâmetros/tags
get_logged_model(model_id)Obtenha detalhes completos de um logged model

Model Registry

FerramentaDescrição
get_registered_models()Liste todos os modelos registrados
get_registered_model(name)Detalhes completos do modelo, incluindo versões e aliases
get_model_versions(model_name)Obtenha todas as versões de um modelo
get_model_version(model_name, version)Obtenha detalhes da versão com métricas
get_model_version_by_alias(name, alias)Obtenha versão por alias, ex.: "champion"
get_latest_versions(name, stages)Obtenha as versões mais recentes por estágio
register_model(model_name, model_uri, tags)Registre um modelo no registry
update_model_version(name, version, description)Atualize a descrição da versão
set_registered_model_tag(name, key, value)Adicione tag a um modelo registrado
set_model_alias(name, alias, version)Atribua um alias a uma versão do modelo
delete_model_alias(name, alias)Remova um alias de um modelo
copy_model_version(src_model_name, src_version, dst_model_name)Promova a versão para outro modelo registrado
transition_model_version_stage(name, version, stage)Transição para Staging/Production/Archived (obsoleto desde o MLflow 2.9, use aliases em vez disso)
delete_model_version(name, version)Exclua uma versão do modelo
delete_registered_model(name)Exclua um modelo registrado e todas as suas versões

Saúde

FerramentaDescrição
health()Verifique a conectividade do servidor

Prompts

Fluxos de trabalho guiados integrados disponíveis como comandos de barra (slash commands) no Claude:

PromptDescrição
compare_runs_by_idsCompare runs específicos lado a lado
find_best_runEncontre e analise o melhor run em um experimento por métrica
promote_best_modelPonta a ponta: encontre o melhor modelo → registre → adicione tag → crie alias → promova
audit_mlflow_setupAudite a configuração do MLflow em relação às melhores práticas do setor — pontua 7 categorias de 1 a 10 e gera um roteiro de melhorias priorizado

Exemplos de Uso

Explore experimentos e runs

"Mostre-me todos os experimentos. Quais foram atualizados recentemente?"

"Quais métricas e parâmetros são rastreados no experimento 'fraud-detection'?"

"Obtenha os 10 melhores runs em 'fraud-detection' ordenados por test/f1. Mostre-me os parâmetros que mais diferem entre os 3 primeiros."

"Encontre todos os runs com a tag model_type=lightgbm e compare suas pontuações de recall."

Analise um run de treinamento

"Mostre-me os detalhes completos do run abc123 — métricas, parâmetros e artefatos."

"Plote a curva de perda de treinamento do run abc123." (O Claude busca o histórico de métricas e renderiza um gráfico)

"Este run tem um pai — mostre-me o run pai e compare suas métricas."

Encontre e registre o melhor modelo

"Encontre o melhor logged model no experimento 'fraud-detection' por test/recall. Registre-o como 'fraud-classifier' com uma tag selection_metric."

"Qual logged model nos experimentos 1 e 2 tem a maior pontuação F1 no conjunto de validação?"

"Registre o modelo do run abc123 no caminho de artefato 'model/' como 'my-classifier'."

Gerencie o model registry

"Mostre-me todas as versões de 'fraud-classifier' com seus aliases e estágios."

"Defina o alias champion na versão 3 do fraud-classifier."

"Atualize a descrição do fraud-classifier v3 para explicar em qual dataset ele foi treinado."

"Copie o fraud-classifier v3 para um modelo separado 'fraud-classifier-prod' como a entrada de produção."

Audite sua configuração do MLflow

"Audite minha configuração do MLflow"

(Aciona o prompt integrado audit_mlflow_setup — o Claude explora experimentos, runs, artefatos e o model registry, e então pontua cada área em relação às melhores práticas do Google/Databricks)

Exemplo de saída
| 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

Fluxo de promoção ponta a ponta

"Encontre o melhor modelo em 'fraud-detection' por test/recall, registre-o como 'fraud-classifier', adicione tags com o framework e o tipo de problema, e defina-o como champion. Pergunte-me antes de copiar para produção."

(Isso corresponde diretamente ao prompt integrado promote_best_model)

Depuração

Use o MCP Inspector para navegar pelas ferramentas, chamá-las com entradas personalizadas e inspecionar respostas brutas — sem envolver um LLM.

Pacote publicado:

npx @modelcontextprotocol/inspector uvx mlflow-mcp

Código-fonte local:

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

Defina MLFLOW_TRACKING_URI no painel de ambiente do Inspector, ou passe-o inline:

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

Requisitos

  • Python >=3.10
  • MLflow >=3.4.0
  • Acesso a um servidor de tracking do MLflow

Licença

Licença MIT — consulte o arquivo LICENSE para obter detalhes.

Contribuição

Contribuições são bem-vindas! Abra uma issue ou envie um pull request.

Links