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

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

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