dashai-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DASHAI_TIMEOUT | No | Seconds to wait per request | 30 |
| DASHAI_BASE_URL | No | Where the backend is | http://localhost:8000 |
| DASHAI_ALLOW_REMOTE | No | Allow a non-local host (see above). Set to '1' to allow. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dashai_server_infoA | Checks that dashAI is running and summarizes what is loaded. Call this FIRST when something fails or when you do not know whether the backend is up: it tells "dashAI is down" apart from "that id does not exist", which are two problems with different fixes. Args: params (NoArgs): no parameters. Returns: str: JSON with the following schema: { "base_url": str, # which instance is being targeted "reachable": bool, # whether it responded "datasets": int, # number of loaded datasets "runs": int, # number of recorded runs "queue_empty": bool, # whether the job queue is empty "compatibility": { # live API vs the release verified end to end "verified_against": str, # e.g. "dashAI 0.9.7.post1" "status": str, # "ok" | "mismatch" | "unknown" "warnings": [str], # only on mismatch: what differs "note": str # only on mismatch/unknown } } On failure: "Error: ". |
| dashai_list_datasetsA | Lists the datasets loaded in dashAI. Returns only id, name, date and status — just enough to pick one. To see columns and types use dashai_describe_dataset with the id. Args: params (ListDatasets): contains: - limit (int): maximum to return, 1-200 (default 50) Returns: str: JSON {"count": int, "datasets": [{"id", "name", "created", "status"}]} If there are none: a message explaining how to load data from the GUI. |
| dashai_describe_datasetA | Returns everything needed to configure a training run over a dataset. Gathers into a single call what the raw API splits into four ( Args: params (DescribeDataset): contains: - dataset_id (int): dataset id - include_sample (bool): include sample rows (default True) Returns: str: JSON {"dataset": {...}, "info": {...}, "column_types": {...}, "sample": [...]} If one part is unavailable it comes back as null instead of failing whole. |
| dashai_list_componentsA | Lists the registered components: models, metrics, tasks and optimizers. ALWAYS use this before dashai_train_model. The names dashAI expects are exact and case-sensitive, and the catalogue changes with the plugins that instance has installed — they cannot be guessed. Args: params (ListComponents): contains: - types (Optional[List[str]]): filter by 'Model', 'Metric', 'Task', 'Optimizer' Returns:
str: JSON {"count": int, "components": [{"name": str, "type": str, "schema": {...}}]}
The |
| dashai_train_modelA | Trains a model on a dataset and returns the id of the enqueued job. It does NOT wait for it to finish. Training can take minutes or hours, so dashAI enqueues it and this tool returns immediately; progress is polled with dashai_job_status. Collapses the three calls the raw API demands:
Args: params (TrainModel): contains: - dataset_id (int), task_name (str), model_name (str) - input_columns / output_columns (List[str]) - metrics (List[str]), goal_metric (str) - parameters (Dict): model hyperparameters - splits (Dict[str, float]): proportions adding up to 1.0 - optimizer_name (str), optimizer_parameters (Dict) - run_name (Optional[str]) Returns: str: JSON {"job_id": str, "run_id": int, "model_session_id": int, "status": "enqueued", "next_step": str} On failure: "Error: ..." stating which parameter dashAI rejected. Examples: - "Train a random forest on dataset 3 predicting 'species'" - Do not use it to read results: that is dashai_get_run, with the run_id. |
| dashai_job_statusA | Polls the status of an enqueued job (training, prediction, explanation). dashAI's statuses: Args: params (JobStatus): contains: - job_id (str): id returned when enqueuing Returns: str: JSON {"job_id": str, "status": str, "finished": bool, "failed": bool, "raw": {...}} |
| dashai_list_runsA | Lists the recorded training runs, with their status. Useful for comparing models trained within the same experiment. Args: params (ListRuns): contains: - model_session_id (Optional[int]): filter by experiment - limit (int): maximum to return, 1-200 (default 50) Returns: str: JSON {"count": int, "runs": [{"id", "name", "model_name", "status", "goal_metric"}]} |
| dashai_get_runA | Returns the configuration and metrics of a training run. This is where results are read once dashai_job_status says Args: params (GetRun): contains: - run_id (int): run id Returns: str: JSON with the full run: model parameters, status and metrics per split (train / validation / test). |
| dashai_predictA | Enqueues a prediction using the model of an already finished run. Like training, it is asynchronous: it returns a job_id and the result is followed with dashai_job_status. Collapses the two calls the GUI makes (read from DatasetPredictionPanel + createPrediction + enqueuePredictionJob, not from the docs):
Passing only run_id to the job raises KeyError 'prediction_id' inside PredictJob.run. The Prediction row must exist first. Args: params (Predict): contains: - run_id (int): id of a finished run - dataset_id (Optional[int]): dataset to score; defaults to the run's training dataset (from its model session) Returns: str: JSON {"job_id", "run_id", "prediction_id", "dataset_id", "status": "enqueued", "next_step"} |
| dashai_get_predictionA | Returns class counts for a finished prediction — never the rows. dashAI stores predictions as an Arrow dataset on disk and GET /predict/ only returns the SQL row (id, status, paths). This tool reads that row and, when the job is finished, aggregates the output column. The label list never leaves the function. Args: params (GetPrediction): contains prediction_id from dashai_predict. Returns: str: JSON {prediction_id, run_id, dataset_id, status, finished, n, n_classes, class_counts}. Paths and row lists are stripped. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 10 tools
Each tool targets a distinct resource and action: server health, dataset listing/description, component catalog, training, job polling, run listing/detail, prediction enqueue/result. Even the async train/predict pair is clearly separated by their respective result-reading tools.
All tools share the dashai_ prefix and mostly follow a verb_noun pattern (list_datasets, describe_dataset, train_model, get_run). A few names are noun-only (server_info, job_status) or bare verb (predict), causing slight inconsistency, but the pattern remains predictable overall.
Ten tools is well-scoped for an MLOps server covering health, dataset inspection, training, job tracking, run results, and predictions. Each tool has a clear role and none feel redundant or extraneous.
The tool set covers the full train-and-predict workflow: discover data, inspect it, list components, train asynchronously, poll status, read run metrics, and get prediction summaries. Minor gaps exist such as no dataset deletion, run deletion, or explanation tool, but they are not core to the apparent purpose.