使用说明
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许可证-请参阅 许可证 文件以获取详细信息。
贡献
欢迎投稿!请打开问题或提交拉取请求。