Skip to main content
Glama

MLOps MCP Server

PyPI Python 3.11+ License: MIT

MCP server for common MLOps workflows

An MCP (Model Context Protocol) server that gives AI assistants like Claude direct access to MLOps workflows — experiment tracking, model registry, dataset management, pipeline orchestration, lineage tracing, and more. Wraps DVC, MLflow, and Git rather than replacing them.


Related MCP server: MLflow MCP Server

Features

  • Experiment tracking — create runs, log params/metrics/artifacts, compare runs, find best run, export to CSV

  • Model registry — register, promote, tag, deprecate, and compare model versions; generate model cards

  • Dataset management — profile datasets, validate schemas, detect statistical drift (KS-test), split, merge, and generate dataset cards

  • Pipeline management — create, validate, and visualize DAG pipelines as Mermaid diagrams; cycle detection via Kahn's algorithm

  • Data lineage — record artifact lineage, trace provenance with BFS, visualize as Mermaid graphs, check integrity

  • File operations — full file/directory CRUD, content search, disk usage, batch operations

  • Project scaffolding — 7 ML project templates with component injection and structure validation

  • Documentation generation — model cards, dataset cards, experiment reports, pipeline docs, project READMEs, API docs

  • MLflow integration — optional; wraps tracking, registry, and artifact operations

  • DVC integration — optional; wraps data versioning and pipeline reproduction

  • Git operations — optional; status, add, commit, log, .gitignore generation

  • Environment tools — scan imports, generate requirements, check conflicts, create conda env files

Tools are registered in two tiers: a small set of always-on tools for quick file ops and discovery, and 15 domain modules you activate on demand to avoid flooding the agent context window.


Installation

Install directly from GitHub (available now)

pip install git+https://github.com/anant-patankar/mlops-mcp-server.git

Using uv:

uv add git+https://github.com/anant-patankar/mlops-mcp-server.git

Install from PyPI (coming soon)

# Core install
pip install mlops-mcp-server

# With optional extras
pip install mlops-mcp-server[mlflow]
pip install mlops-mcp-server[mlflow,compare,notebooks,parquet]

Using uv:

uv add mlops-mcp-server
uv add "mlops-mcp-server[mlflow,compare,notebooks,parquet]"

Usage

Claude Desktop

Add to your Claude Desktop MCP config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

First install the package, then add to your Claude Desktop config:

{
  "mcpServers": {
    "mlops": {
      "command": "mlops-mcp-server"
    }
  }
}

Restart Claude Desktop. The server starts automatically when Claude connects.

Example prompts

Once connected, you can ask Claude things like:

"Show me all experiment runs, find the one with the best validation accuracy, and register that model in the registry."

"Profile data/train.csv, check it against schema.yaml, then split it 70/15/15 and save to data/splits/."

"Create a pipeline with three stages: preprocess → train → evaluate, validate it for cycles, and show me the Mermaid diagram."

Running directly

mlops-mcp-server

Optional Dependencies

Extra

Installs

Enables

mlflow

mlflow

MLflow tracking and registry tools

compare

deepdiff

Structured diff in compare_runs

notebooks

nbformat

Notebook summary in get_notebook_summary

parquet

pyarrow

Parquet read/write in dataset tools

models

joblib, onnx, safetensors

Model file format support

validation

pandera, scipy

Schema validation and drift statistics

templates

jinja2

Jinja2 templates in create_model_card

All extras are optional — the server runs without them and returns clear errors if a missing dependency is needed.


License

MIT — see LICENSE.

Available Tools

127 tools
add_pipeline_stageD

Inputs: stage_name (required), pipeline_path (required), stage_definition (required). Returns: object

add_project_componentD

Inputs: component (required), project_path (required). Returns: object

analysis_directoryD

Inputs: path (required). Returns: object

archive_experimentD

Inputs: experiment_path (required), output_directory, compression_level. Returns: object

batch_classifyD

Inputs: paths (required). Returns: object

batch_deleteD

Inputs: paths (required), dry_run, base_path. Returns: object

check_data_freshnessD

Inputs: path (required), stale_after_hours. Returns: object

check_dependency_conflictsD

Inputs: project_path. Returns: object

check_env_varsD

Inputs: template_path (required), env_file_path. Returns: object

check_lineage_integrityD

Inputs: project_path (required). Returns: object

classify_fileD

Inputs: path (required). Returns: object

cleanup_empty_logsD

Inputs: logs_path (required), dry_run, min_size_bytes. Returns: object

cleanup_failed_runsD

Inputs: runs_path (required), dry_run. Returns: object

cleanup_old_checkpointsD

Inputs: checkpoints_path (required), keep, dry_run. Returns: object

cleanup_projectD

Inputs: project_path (required), dry_run. Returns: object

compare_directoriesD

Inputs: path_a (required), path_b (required). Returns: object

compare_filesD

Inputs: path_a (required), path_b (required). Returns: object

compare_model_versionsD

Inputs: version_a (required), version_b (required), model_name (required), project_path (required). Returns: object

compare_requirementsD

Inputs: base_path (required), target_path (required). Returns: object

compare_runsD

Inputs: run_ids (required), project_path (required). Returns: object

copy_fileD

Inputs: source_path (required), destination_path (required), dry_run, base_path. Returns: object

create_archiveD

Inputs: source_path (required), archive_path (required), archive_format, compression_level. Returns: object

create_conda_env_fileD

Inputs: output_path (required), requirements_path (required), env_name, python_version. Returns: object

create_directoryD

Inputs: path (required), base_path. Returns: object

create_dvc_pipelineD

Inputs: stages (required), repo_path (required), output_file. Returns: object

create_env_templateD

Inputs: variables (required), output_path (required). Returns: object

create_fileD

Inputs: path (required), content, encoding, base_path, +1 more. Returns: object

create_gitignoreD

Inputs: overwrite, repo_path. Returns: object

create_ml_projectD

Inputs: project_path (required), template, project_name. Returns: object

create_model_cardD

Inputs: version (required), model_name (required), project_path (required), output_path. Returns: object

create_pipelineD

Inputs: stages (required), pipeline_path (required). Returns: object

create_runD

Inputs: project_path. Returns: object

delete_fileD

Inputs: path (required), dry_run, base_path. Returns: object

delete_model_versionD

Inputs: version (required), model_name (required), project_path (required), delete_file. Returns: object

delete_runD

Inputs: run_id (required), project_path (required), dry_run. Returns: object

deprecate_modelD

Inputs: reason (required), version (required), model_name (required), project_path (required). Returns: object

detect_data_driftD

Inputs: candidate_path (required), reference_path (required). Returns: object

detect_model_frameworkD

Inputs: model_path (required). Returns: object

detect_uncommitted_changesD

Inputs: repo_path. Returns: object

download_mlflow_artifactD

Inputs: run_id (required), artifact_path (required), destination_path (required). Returns: object

dvc_addD

Inputs: path (required), repo_path. Returns: object

dvc_check_availableD

Inputs: no named parameters. Returns: object

dvc_initD

Inputs: repo_path. Returns: object

dvc_pullD

Inputs: repo_path. Returns: object

dvc_pushD

Inputs: repo_path. Returns: object

dvc_reproD

Inputs: repo_path. Returns: object

dvc_statusD

Inputs: repo_path. Returns: object

experiment_list_runsD

Inputs: project_path. Returns: object

export_runs_csvD

Inputs: output_path (required), project_path (required). Returns: object

extract_archiveD

Inputs: archive_path (required), destination_path (required). Returns: object

file_listD

Inputs: path (required), recursive. Returns: object

file_readD

Inputs: path (required), encoding. Returns: object

file_writeD

Inputs: path (required), content (required), encoding. Returns: object

find_dataset_filesD

Inputs: path (required). Returns: object

find_duplicate_filesD

Inputs: dir_path (required), max_size, min_size. Returns: object

finish_runD

Inputs: run_id (required), project_path (required), status. Returns: object

generate_api_docsD

Inputs: source_path (required), output_path. Returns: object

generate_dataset_cardD

Inputs: dataset_path (required), description, output_path, intended_use, +1 more. Returns: object

generate_experiment_reportD

Inputs: project_path (required), output_path. Returns: object

generate_model_cardD

Inputs: dataset (required), metrics (required), task_type (required), model_name (required), +3 more. Returns: object

generate_pipeline_docsD

Inputs: pipeline_path (required), output_path. Returns: object

generate_project_readmeD

Inputs: project_path (required), output_path. Returns: object

generate_requirementsD

Inputs: output_path, pin_versions, project_path. Returns: object

get_artifact_provenanceD

Inputs: artifact (required), project_path (required). Returns: object

get_best_runD

Inputs: metric_name (required), project_path (required), direction. Returns: object

get_dataset_statsD

Inputs: data_path (required). Returns: object

get_disk_usageD

Inputs: path, base_path. Returns: object

get_file_infoD

Inputs: path (required). Returns: object

get_mlflow_model_versionsD

Inputs: model_name (required). Returns: object

get_mlflow_runsD

Inputs: experiment_id (required), max_results. Returns: object

get_model_infoD

Inputs: version (required), model_name (required), project_path (required). Returns: object

get_model_lineageD

Inputs: version (required), model_name (required), project_path (required). Returns: object

get_model_versionsD

Inputs: model_name (required), project_path (required). Returns: object

get_notebook_summaryD

Inputs: path (required). Returns: object

get_operation_historyD

Inputs: limit. Returns: object

get_pipelineD

Inputs: pipeline_path (required). Returns: object

get_pipeline_statusD

Inputs: pipeline_path (required), project_root. Returns: object

get_python_versionD

Inputs: project_path. Returns: object

get_runD

Inputs: run_id (required), project_path (required). Returns: object

git_addD

Inputs: files, repo_path. Returns: object

git_commitD

Inputs: message, repo_path. Returns: object

git_initD

Inputs: repo_path, create_ignore. Returns: object

git_logD

Inputs: limit, repo_path. Returns: object

git_statusD

Inputs: repo_path. Returns: object

init_experiment_trackerD

Inputs: project_path. Returns: object

init_model_registryD

Inputs: project_path. Returns: object

list_archive_contentsD

Inputs: archive_path (required). Returns: object

list_filesD

Inputs: path (required), pattern, base_path, recursive. Returns: object

list_lineage_artifactsD

Inputs: project_path (required). Returns: object

list_mlflow_experimentsD

Inputs: no named parameters. Returns: object

list_modelsD

Inputs: project_path. Returns: object

list_pipelinesD

Inputs: project_path. Returns: object

list_project_templatesD

Inputs: no named parameters. Returns: object

list_runsD

Inputs: project_path. Returns: object

log_artifactD

Inputs: run_id (required), project_path (required), artifact_path (required). Returns: object

log_artifact_to_mlflowD

Inputs: local_path (required), run_id. Returns: object

log_metricsD

Inputs: step (required), run_id (required), metrics (required), project_path (required). Returns: object

log_paramsD

Inputs: params (required), run_id (required), project_path (required). Returns: object

merge_datasetsD

Inputs: output_path (required), dataset_paths (required), deduplicate. Returns: object

mlflow_check_availableD

Inputs: project_path. Returns: object

mlops_activateD

Inputs: module (required). Returns: object

mlops_discoverD

Inputs: no named parameters. Returns: object

mlops_session_statusD

Inputs: no named parameters. Returns: object

model_listD

Inputs: project_path. Returns: object

move_fileD

Inputs: source_path (required), destination_path (required), dry_run, base_path. Returns: object

profile_datasetD

Inputs: path (required). Returns: object

promote_modelD

Inputs: version (required), new_stage (required), model_name (required), project_path (required). Returns: object

read_fileD

Inputs: path (required), encoding, base_path. Returns: object

record_lineageD

Inputs: inputs (required), output (required), run_id (required), project_path (required). Returns: object

register_modelD

Inputs: model_name (required), model_path (required), project_path (required), tags, +3 more. Returns: object

register_model_in_mlflowD

Inputs: model_name (required), model_path (required). Returns: object

remove_pipeline_stageD

Inputs: stage_name (required), pipeline_path (required). Returns: object

rename_fileD

Inputs: path (required), new_name (required), dry_run, base_path. Returns: object

scan_importsD

Inputs: project_path. Returns: object

search_file_contentD

Inputs: path (required), query (required), is_regex, base_path, +3 more. Returns: object

search_filesD

Inputs: path (required), max_size, min_size, base_path, +2 more. Returns: object

set_mlflow_tracking_uriD

Inputs: tracking_uri (required), project_path. Returns: object

split_datasetD

Inputs: output_dir (required), dataset_path (required), val_ratio, test_ratio, +3 more. Returns: object

storage_reportD

Inputs: dir_path (required), top_k.

tag_modelD

Inputs: tags (required), version (required), model_name (required), project_path (required). Returns: object

validate_dataset_schemaD

Inputs: schema_path (required), dataset_path (required). Returns: object

validate_pipelineD

Inputs: pipeline_path (required), project_root. Returns: object

validate_project_structureD

Inputs: template (required), project_path (required). Returns: object

visualize_lineageD

Inputs: artifact (required), project_path (required). Returns: object

visualize_pipelineD

Inputs: pipeline_path (required). Returns: object

write_fileD

Inputs: path (required), content (required), encoding, base_path. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    D1.1/5.0

    Scored across 127 tools

    Disambiguation1/5

    With 127 tools and no descriptions, many tool names overlap significantly (e.g., file_read vs read_file, list_models vs model_list, etc.). An agent would be unable to distinguish between them, leading to frequent misselection.

    Naming Consistency1/5

    Naming is highly inconsistent, mixing verb_noun, noun_verb, and prefixes like mlops_, mlflow_, dvc_, git_. Similar operations use different naming patterns (e.g., file_read vs read_file), making it unpredictable.

    Tool Count1/5

    127 tools is far too many for a coherent server. Typical MCP servers have 3-15 tools. This large number suggests an attempt to cover everything, resulting in bloat and redundancy rather than a focused tool set.

    Completeness2/5

    Despite the large number of tools, the surface appears redundant (multiple file operations, repeated model list functions) and lacks clear high-level operations like deploy or monitor. Without descriptions, it's hard to assess, but there are likely gaps in ML Ops lifecycle.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Transforms AI assistants into a full ML engineering environment for training and fine-tuning models across multiple backends (local GPU, Mistral, Together AI, OpenAI) and cloud providers (Lambda Labs, RunPod, SSH-accessible VPS), with dataset management, experiment tracking, cost estimation, and deployment to Ollama/Open WebUI.
      4
      PolyForm Noncommercial 1.0.0
    • A
      license
      C
      quality
      D
      maintenance
      Enables AI assistants to interact with MLflow experiments, runs, and registered models. Supports browsing experiments, retrieving run details with metrics and parameters, and querying the model registry through natural language.
      7
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables Claude to interact with ML experiment tracking, model registries, and deployment pipelines across popular MLOps platforms like MLflow.
      MIT