MLflow模型管理服务器

一个基于模型上下文协议(MCP)的服务器,使LLM能够与MLflow跟踪服务器交互,通过自然语言管理实验、分析运行、比较指标并管理模型注册表。

  • by kkruglik
  • Python
  • 本地部署
  • 15 星标
  • 更新于
在 GitHub 查看 kkruglik/mlflow-mcp

使用说明

MLflow MCP服务器

A. 模型上下文协议(MCP) 使LLM能够与之交互的服务器 MLW 跟踪服务器。查询实验、分析运行、比较指标、管理模型注册表以及将模型推广到生产环境——所有这些都是通过自然语言完成的。

特性

  • 实验管理:列出、搜索和筛选实验
  • 运行分析:查询运行、比较指标、查找性能最佳的模型
  • 度量与参数:获取度量历史记录,跨运行比较参数
  • 人工制品:浏览并下载运行工件
  • LoggedModel支持:搜索和检索MLflow 3 LoggedModel实体
  • 模型注册表:完整的注册表管理——注册、标记、别名、阶段和升级模型
  • 写入和删除操作:标记、别名、注册、升级和删除运行/实验/模型
  • MCP提示:用于常见任务的内置指导工作流程
  • 分页:用于浏览大型结果集的基于偏移量的分页

安装

使用uvx(推荐)

# Run directly without installation
uvx mlflow-mcp

# Or install globally
pip install mlflow-mcp

来源

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

配置

克劳德桌面

添加到您的Claude Desktop配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %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"
      }
    }
  }
}

克劳德代码(项目范围)

添加 .mcp.json 到您的项目根目录:

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

经过身份验证的服务器

对于具有身份验证的MLflow服务器,请将凭据添加到 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"
      }
    }
  }
}

对于Rancher或基于令牌的身份验证,请使用 MLFLOW_TRACKING_TOKEN 相反:

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

环境变量

变量 必填 描述
MLFLOW_TRACKING_URI 是 工作流跟踪服务器URL,例如。 http://127.0.0.1:5000
MLFLOW_TRACKING_USERNAME 否 HTTP基本身份验证用户名(MLflow内置身份验证)
MLFLOW_TRACKING_PASSWORD 否 HTTP基本身份验证密码(MLflow内置身份验证)
MLFLOW_TRACKING_TOKEN 否 承载令牌(基于copula或令牌的设置)

工具

实验

工具 说明
get_experiments() 列出所有实验
search_experiments(filter_string, order_by, max_results) 过滤和排序实验
get_experiment_by_name(name) 按名称获取实验
get_experiment_metrics(experiment_id) 发现所有唯一的度量键
get_experiment_params(experiment_id) 发现所有唯一的参数键
get_experiment_tags(experiment_id) 发现所有在运行中使用的唯一标签密钥
set_experiment_tag(experiment_id, key, value) 标记实验
delete_experiment(experiment_id) 删除实验(移动到已删除阶段)

跑

工具 说明
get_runs(experiment_id, limit, offset, order_by) 列表运行时包含完整的详细信息、排序和分页
get_run(run_id) 获取详细的运行信息,包括指标、参数、标签、工件URI和数据集输入
get_parent_run(run_id) 获取嵌套运行的父运行
query_runs(experiment_id, query, limit, offset, order_by) 过滤器运行,例如。 "metrics.accuracy > 0.9"
search_runs_by_tags(experiment_id, tags, limit, offset) 按标记键/值查找跑步记录
set_run_tag(run_id, key, value) 标记跑步
delete_run(run_id) 删除跑步记录(移动到已删除的阶段)

度量与参数

工具 说明
get_run_metrics(run_id) 获取跑步的所有指标
get_run_metric(run_id, metric_name) 获取包含步骤的完整度量历史记录

人工制品

工具 说明
get_run_artifacts(run_id, path) 列出工件,支持浏览子目录
get_run_artifact(run_id, artifact_path) 下载工件文件
get_artifact_content(run_id, artifact_path) 将工件内容读取为文本/JSON

分析与比较

工具 说明
get_best_run(experiment_id, metric, ascending) 按指标查找最佳运行
compare_runs(experiment_id, run_ids) 并排运行比较

记录模型(MLflow 3)

工具 说明
search_logged_models(experiment_ids, filter_string, order_by, max_results) 按指标/参数/标签搜索记录的模型
get_logged_model(model_id) 获取已记录模型的完整详细信息

模型注册表

工具 说明
get_registered_models() 列出所有已注册的型号
get_registered_model(name) 完整的模型详细信息,包括版本和别名
get_model_versions(model_name) 获取模型的所有版本
get_model_version(model_name, version) 使用指标获取版本详细信息
get_model_version_by_alias(name, alias) 通过别名获取版本,例如。 "champion"
get_latest_versions(name, stages) 获取每个阶段的最新版本
register_model(model_name, model_uri, tags) 将模型注册到注册表中
update_model_version(name, version, description) 更新版本说明
set_registered_model_tag(name, key, value) 标记已注册的模型
set_model_alias(name, alias, version) 为模型版本指定别名
delete_model_alias(name, alias) 从模型中删除别名
copy_model_version(src_model_name, src_version, dst_model_name) 将版本升级到另一个注册型号
transition_model_version_stage(name, version, stage) 过渡到暂存/生产/归档 (自MLF2.9以来已弃用,请改用别名)
delete_model_version(name, version) 删除模型版本
delete_registered_model(name) 删除已注册的模型及其所有版本

健康

工具 说明
health() 检查服务器连接

提示

Claude中内置的引导式工作流以斜线命令的形式提供:

提示 描述
compare_runs_by_ids 并排比较特定跑步记录
find_best_run 通过度量找到并分析实验中的最佳运行
promote_best_model 端到端:找到最佳模型→ 注册→ tag → 别名→ 促进
audit_mlflow_setup 根据行业最佳实践审核工作流设置——对7个类别1-10进行评分,并制定优先改进路线图

使用示例

探索实验和运行

“给我看看所有的实验。哪些实验最近更新了?”

“在实验‘欺诈检测’中跟踪了哪些指标和参数?”

“获得按测试/f1排序的‘欺诈检测’前10名。给我看看前3个参数之间差异最大的参数。”

“查找标记为model_type=lightgbm的所有跑步记录,并比较它们的回忆分数。”

分析训练跑

“显示运行abc123的全部详细信息——指标、参数和工件。”

“绘制abc123跑步的训练损失曲线。” (Claude获取度量历史并呈现图表)

“此运行有一个父级--向我显示父级运行并比较它们的指标。”

查找并注册最佳型号

“通过测试/召回在实验‘欺诈检测’中找到记录最佳的模型。使用selection_metric标签将其注册为‘欺诈分类器’。”

“实验1和2中哪个记录的模型在验证集中的F1得分最高?”

“将运行abc123工件路径‘model/’中的模型注册为‘我的分类器’。”

管理模型注册表

“向我展示所有版本的‘欺诈分类器’及其别名和阶段。”

“在欺诈分类器的版本3上设置冠军别名。”

“更新欺诈分类器v3的描述,以解释它是在什么数据集上训练的。”

“将欺诈分类器v3复制到单独的‘欺诈分类器prod’模型中作为生产条目。”

审核您的工作流设置

“审核我的工作流设置”

(触发 audit_mlflow_setup 内置提示——Claude探索实验、运行、工件和模型注册表,然后根据Google/Databricks最佳实践对每个领域进行评分)

Example output
| 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

端到端推广工作流程

“通过测试/召回找到‘欺诈检测’中的最佳模型,将其注册为‘欺诈分类器’,用框架和问题类型标记它,并将其设置为冠军。在复制到产品之前问我。”

(这直接映射到 promote_best_model 内置提示)

调试

使用 MCP检查员 浏览工具,使用自定义输入调用它们,并检查原始响应,而不涉及LLM。

已发布包:

npx @modelcontextprotocol/inspector uvx mlflow-mcp

本地来源:

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

集 MLFLOW_TRACKING_URI 在检查器的环境面板中,或将其内联传递:

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

需求

  • Python>=3.10
  • 流量>=3.4.0
  • 访问工作流跟踪服务器

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

贡献

欢迎投稿!请打开问题或提交拉取请求。

链接