Experiments Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Experiments Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Query your MLflow experiments in plain English using Claude Desktop. No dashboards, no SQL — just ask.
Connect Claude Desktop to your MLflow experiment tracker via an MCP server. Ask natural language questions and Claude queries your experiments automatically.
Example questions you can ask Claude:
| Tool | Description |
|---|---|
list_experiments | Lists all experiments in MLflow |
compare_runs | Ranks top N runs by a given metric |
get_best_model | Returns the single best run for a metric |
fetch_metric_history | Returns epoch-by-epoch metric history for a run |
Before starting, make sure you have:
pip install uv)git clone https://github.com/yourusername/experiments-mcp.git
cd experiments-mcpuv venv --python /opt/homebrew/opt/[email protected]/bin/python3.11
source .venv/bin/activateWindows: use .venv\Scripts\activate insteaduv pip install -r requirements.txtrequirements.txt contains:
fastmcp
mlflow
pandaspython --version # Should show Python 3.11.x
mlflow --version # Should show mlflow, version 3.x.xIf you don't have real MLflow experiments, run the seed script to populate fake but realistic data:
python seed_mlflow.pyThis creates 2 experiments with 35 total runs:
pothole-detector — 20 runsroad-crack-detection — 15 runsEach run has params (learning_rate, batch_size, backbone, optimizer) and metrics (val_f1, val_accuracy, val_loss, train_f1).
which python
# Example output: /Users/yourname/experiments-mcp/.venv/bin/pythonpwd
# Example output: /Users/yourname/experiments-mcpOpen the config file:
# Mac
open ~/Library/Application\ Support/Claude/
# Windows
# %APPDATA%\Claude\claude_desktop_config.jsonAdd the mcpServers block to claude_desktop_config.json:
{
"mcpServers": {
"ml-experiment-tracker": {
"command": "/Users/yourname/experiments-mcp/.venv/bin/python",
"args": [
"/Users/yourname/experiments-mcp/server.py"
]
}
}
}Replace /Users/yourname/experiments-mcp with your actual paths from steps 1 and 2.Cmd + Q → reopen Claude DesktopClick the `+` button in the chat input → Add plugins → your server should appear as connected.
Or simply type in chat:
List all my ML experimentsexperiments-mcp/
├── server.py # MCP server — all 4 tools
├── mlflow_client.py # MLflow SDK wrapper
├── seed_mlflow.py # Fake data generator
├── requirements.txt # Dependencies
└── README.mdBy default the server points to a SQLite DB at ~/mcp/experiments-mcp/mlflow.db.
To point it to your own MLflow instance, edit the top of mlflow_client.py:
# Local SQLite (default)
mlflow.set_tracking_uri("sqlite:///path/to/your/mlflow.db")
# Remote MLflow server
mlflow.set_tracking_uri("http://your-mlflow-server:5000")PermissionError: Operation not permitted: .venv/pyvenv.cfgCause: Project is inside ~/Desktop — Claude Desktop cannot access Desktop on Mac due to macOS security.
Fix: Move the project out of Desktop:
mv ~/Desktop/experiments-mcp ~/experiments-mcp
cd ~/experiments-mcpUpdate the paths in claude_desktop_config.json accordingly.
ModuleNotFoundError: No module named 'mlflow'Cause: Wrong Python being used — system Python instead of venv Python.
Fix:
# Check which python is active
which python
# If it shows /usr/bin/python or /opt/homebrew/bin/python — wrong one
# Re-activate your venv:
source /full/path/to/experiments-mcp/.venv/bin/activate
# Then reinstall
uv pip install -r requirements.txtMlflowException: filesystem tracking backend is in maintenance modeCause: MLflow 3.x dropped file-based storage (mlruns/ folder). Requires SQLite.
Fix: Make sure mlflow_client.py uses SQLite URI:
import os
mlflow.set_tracking_uri(
f"sqlite:///{os.path.expanduser('~/experiments-mcp/mlflow.db')}"
)Also add the same line to seed_mlflow.py before running it.
sqlite3.OperationalError: unable to open database fileCause: The .db file doesn't exist yet — seed script hasn't been run, or was run from a different directory.
Fix:
cd ~/experiments-mcp
source .venv/bin/activate
python seed_mlflow.pyNameError: name 'os' is not definedCause: Missing import os at the top of mlflow_client.py.
Fix: Add to the very first line of mlflow_client.py:
import osServer disconnected in Claude DesktopCause: Could be any Python error in server.py or mlflow_client.py.
Fix: Check the logs:
tail -f ~/Library/Logs/Claude/mcp-server-ml-experiment-tracker.logThe last error in the log will tell you exactly what went wrong.
zsh: command not found: pythonCause: On newer Macs, python is not aliased — use python3 or activate venv properly.
Fix:
# Option 1: use python3
python3 seed_mlflow.py
# Option 2: recreate venv with correct python
uv venv --python /opt/homebrew/opt/[email protected]/bin/python3.11
source .venv/bin/activate
# now 'python' worksNo. The MCP server reads directly from the SQLite database. You do NOT need to keep mlflow ui running for Claude to query your experiments.
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.