Skip to main content
Glama
kks32

designsafe-mcp

by kks32

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DESIGNSAFE_MCP_MOCKNoSet to '1' to run the server in mock mode (no Tapis calls, no SUs).0

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
supported_capabilitiesA

What this server supports, by scientific domain.

Consult this before promising anything. Every capability names how it is served and whether it is tested; 'candidate' and 'untested' entries need a human-run graduation before unattended use. Requests outside this map should be declined by pointing at out_of_scope.

plan_simulationA

Plan an OpenSees/quoFEM simulation from the decision matrix.

Pass the facts you know; anything left None is inferred from the request only when unambiguous, and otherwise returned in open_questions for you to ask the user. The decision is the matrix's, not yours: do not override app_id, and compose the cells from the returned snippet, not from memory.

model_language: "tcl" | "python" parallelism: "serial" | "domain-decomposition" | "single-domain-parallel-solver" | "many-independent-cases"

plan_calibrationA

Plan a calibration study from the method matrix.

Pass what you know; unanswered facts come back as open questions. uncertainty_required: must the result carry parameter uncertainty into a downstream prediction (posterior), or is a best-fit point enough? quofem_wrappable: can quoFEM drive the model (OpenSees main script with parameter placeholders and a scalar-QoI postprocessor)? screened: has a sensitivity study already reduced the parameter set?

calibration_optionsA

Every calibration-stage method runnable on DesignSafe, with its engine, what it returns, and its tested/candidate status.

describe_materialA

Parameters, sensitivities, and the calibration sequence for a constitutive model, transcribed from its manual with page citations.

Use this before planning a calibration: it answers which parameters exist, what data informs each one, and in what order to calibrate.

search_snippetsA

Find tested, version-pinned workflow snippets matching a query.

Snippets are executed, self-checking notebooks with pinned app and dapi versions; only entries whose test passed are in the corpus.

search_communityA

Search every local notebook, model, and script for aligned passages.

Returns the matching text itself with its source path and the index build stamp, so the caller can ground a workflow in what the community actually wrote and knows how fresh that knowledge is. Call corpus_status() to see which sources the index covers; use search_docs for documentation-only search.

search_docsA

Search the documentation corpus: the dapi user guide, the ds-workflows book, SimCenter quoFEM docs, and reference manuals.

Grounding only, never the source of orchestration code; snippets remain the only source an agent may compose runs from. Results carry source and index stamp. Backend today is a local index over live-fetched docs; the Ask AI knowledge graph replaces it later behind this same tool.

corpus_statusA

What the grounding index covers and where it came from: each logical source (UW notebooks, dapi, the ds-workflows book), how it resolved (local checkout, fetched cache, or absent), how many passages it contributes, and when the index was built. An absent source means degraded grounding; say so rather than answering from partial knowledge, and fetch_corpus() can fill the gap live.

reindexA

Rebuild the index after mirroring new notebooks or references.

fetch_corpusA

Fetch grounding sources live from their canonical GitHub repos into corpus/, for deployments without local checkouts.

source: fetch just one logical source by name; empty fetches every GitHub-backed source. CommunityData is not fetched here (needs Tapis auth; see corpus_status for the command). Run reindex after.

opensees_matrixA

Which OpenSees to use when: the decision matrix from the training deck.

Returns the variant table (variant -> app_id -> when), the full scope x platform x interface matrix with its legend, and the path of the original slide image for display to the user.

describe_appC

The app's real interface from Tapis: inputs, parameters, defaults.

stage_inputsB

Upload a local folder once and return the tapis:// URI to run from.

build_job_requestA

Build a complete Tapis job request from the app definition.

Mirrors ds.jobs.generate; returns the dict for inspection. Nothing is submitted. SimCenter apps (quoFEM) take no script_filename; dapi wires scInput.json and the driver automatically.

validate_jobB

Schema and sanity checks plus input existence, before any SU is spent.

estimate_costA

Estimated SU cost: nodes x hours, per the DesignSafe job-resources guidance.

approve_submissionA

Record human approval for exactly this job request; returns the token submit_job requires. The calling harness must show the trust summary (snippet, versions, cost, outputs) to a human before calling this.

submit_jobA

Submit a validated job. Refuses without the approval token minted by approve_submission for this exact request.

job_statusC

Current Tapis status for a submitted job.

get_resultsC

List the job archive, or return a small text file's content.

build_workflow_previewA

Compile a DAG of job requests without running it.

tasks: [{"task_id", "job", "depends_on": [...], "input_from": {"task_id", "suffix"} (optional)}] Returns the compiled pipeline: deterministic archives, resolved edges.

write_manifestA

Emit the provenance manifest that makes the run reproducible.

Refuses incomplete provenance: the job must be a fully built request (app, name, resources, inputs) and the uuid must belong to a job this server submitted. A manifest that cannot reproduce the run is worse than none.

list_my_jobsA

List jobs with optional filtering.

Fetches jobs from Tapis ordered by creation date (newest first). Filters are applied client-side.

Args: app_id (str, optional): Filter by application ID. status (str, optional): Filter by job status (e.g., "FINISHED"). Case-insensitive. limit (int, optional): Maximum jobs to fetch. Defaults to 100. output (str, optional): Output format. "df" for pandas DataFrame (default), "list" for list of dicts, "raw" for TapisResult objects. verbose (bool, optional): Print job count. Defaults to False. list_type (str, optional): "MY_JOBS" (default) for jobs you own, "SHARED_JOBS" for jobs shared with you, "ALL_JOBS" for both.

Returns: Depends on output: DataFrame, list of dicts, or list of TapisResult objects.

Raises: JobMonitorError: If the Tapis API call fails.

Example: >>> df = ds.jobs.list(app_id="matlab-r2023a", status="FINISHED") >>> jobs = ds.jobs.list(output="list") >>> raw = ds.jobs.list(limit=10, output="raw")

[schema introspected from dapi 0.6.1 (jobs.list); this tool is generated, not maintained by hand]

list_queuesA

List batch queues available on a Tapis execution system.

Args: system_id (str): The ID of the execution system (e.g., "stampede3"). output (str, optional): "df" for DataFrame (default), "raw" for Tapis objects.

Returns: DataFrame or List: Queues with name, maxNodes, maxMinutes, etc.

Example: >>> ds.systems.queues("stampede3")

[schema introspected from dapi 0.6.1 (systems.queues); this tool is generated, not maintained by hand]

list_systemsA

List Tapis systems you have access to.

Filters out internal and project-specific systems by default.

Args: category (str, optional): "hpc" for execution systems, "storage" for storage systems, "all" for everything, None for HPC + storage (default). output (str, optional): "df" for DataFrame (default), "list" for dicts.

Returns: DataFrame or List[Dict]: Systems with id, host, category, authn, credentials.

Example: >>> ds.systems.list() # HPC + storage >>> ds.systems.list("hpc") # HPC only with credential status >>> ds.systems.list("storage") # Storage only >>> ds.systems.list("all") # Everything including internal

[schema introspected from dapi 0.6.1 (systems.list); this tool is generated, not maintained by hand]

list_app_templatesB

Names of the app templates that ship with dapi.

[schema introspected from dapi 0.6.1 (apps.templates); this tool is generated, not maintained by hand]

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
opensees_matrix_imageThe training deck's OpenSees decision matrix, as shown to humans.
resource_flowchart_imageWhich DesignSafe resource to use: the deck's decision flowchart.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kks32/designsafe-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server