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ável | Obrigatória | Descrição |
|---|---|---|
MLFLOW_TRACKING_URI | Sim | URL do servidor de tracking do MLflow, ex.: http://127.0.0.1:5000 |
MLFLOW_TRACKING_USERNAME | Não | Nome de usuário HTTP Basic Auth (autenticação integrada do MLflow) |
MLFLOW_TRACKING_PASSWORD | Não | Senha HTTP Basic Auth (autenticação integrada do MLflow) |
MLFLOW_TRACKING_TOKEN | Não | Bearer token (Databricks ou configurações baseadas em token) |
Ferramentas
Experimentos
| Ferramenta | Descriçã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
| Ferramenta | Descriçã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
| Ferramenta | Descriçã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
| Ferramenta | Descriçã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
| Ferramenta | Descriçã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)
| Ferramenta | Descriçã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
| Ferramenta | Descriçã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
| Ferramenta | Descrição |
|---|---|
health() | Verifique a conectividade do servidor |
Prompts
Fluxos de trabalho guiados integrados disponíveis como comandos de barra (slash commands) no Claude:
| Prompt | Descrição |
|---|---|
compare_runs_by_ids | Compare runs específicos lado a lado |
find_best_run | Encontre e analise o melhor run em um experimento por métrica |
promote_best_model | Ponta a ponta: encontre o melhor modelo → registre → adicione tag → crie alias → promova |
audit_mlflow_setup | Audite 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.