MDEngine

MD workbench for agents: 13 analysis tools, renders, hosted GPU runs; LAMMPS + OpenMM.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
98%
Vollständigkeit des Schemas
93%
Qualität der Benennung
90%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (1)

  • LOWTool 'account' description lacks action verbin account

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~2,068Tokens (Tool-Definitionen)
~865 BTypische Antwortgröße
Mittlere Auswirkung auf die Aufmerksamkeit (1.62% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "mdengine": {
      "url": "https://api.forcefieldsilicon.com/mcp"
    }
  }
}

Remote-Endpunkte

https://api.forcefieldsilicon.com/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (12)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢account

Balance in USD, how jobs are priced (`pricing.mode` job = the deck's own work in atom-steps at per-class prices, capped at wall_limit_s x rate; metered = per second of pod time), the rate table, and the key id of the API key in use.

Eingabe-Schema

{
  "type": "object",
  "properties": {}
}
🟡submit_job(input, label, gpu, wall_limit_s, estimate_s, ...)

One call: create a hosted GPU job, upload the deck given INLINE as {relative_path: text}, and queue it. Total inline size <= 8 MB; for larger decks use create_job, PUT the tarball to upload_url, then start_job. Billing starts at the first heartbeat (state running) and stops at done/failed/cancelled. The deck is executed as a program on an isolated GPU pod.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "Relative path of the LAMMPS (or runner) input script inside the deck, e.g. in.lmp"
    },
    "label": {
      "type": "string",
      "description": "Free text <= 120 chars shown in job lists"
    },
    "gpu": {
      "type": "string",
      "description": "GPU class; call account for the offered classes and how jobs are priced. Default any = cheapest available"
    },
    "wall_limit_s": {
      "type": "integer",
      "description": "Hard cap in seconds (default 14400, max 86400); the job fails at the cap and is billed to it"
    },
    "estimate_s": {
      "type": "integer",
      "description": "Your runtime guess in seconds; only used for the balance pre-check (min 900 s at the rate)"
    },
    "runner": {
      "type": "string",
      "description": "Runner flavour: lammps (default) or openmm (beta)"
    },
    "launch": {
      "type": "string",
      "description": "Launch template; omit for the default KOKKOS/CUDA LAMMPS command line"
    },
    "files": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Deck contents: {\"in.lmp\": \"...\", \"data.al\": \"...\"}; paths relative, no '..'; must include `input`"
    }
  },
  "required": [
    "input",
    "files"
  ]
}
🟡create_job(input, label, gpu, wall_limit_s, estimate_s, ...)

Step 1 of the two-step path for big decks: validates the spec, reserves a job id, returns a presigned upload_url. PUT the deck as a .tar.gz (<= 2 GB, relative paths, input at `input`) to upload_url, then call start_job.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "Relative path of the LAMMPS (or runner) input script inside the deck, e.g. in.lmp"
    },
    "label": {
      "type": "string",
      "description": "Free text <= 120 chars shown in job lists"
    },
    "gpu": {
      "type": "string",
      "description": "GPU class; call account for the offered classes and how jobs are priced. Default any = cheapest available"
    },
    "wall_limit_s": {
      "type": "integer",
      "description": "Hard cap in seconds (default 14400, max 86400); the job fails at the cap and is billed to it"
    },
    "estimate_s": {
      "type": "integer",
      "description": "Your runtime guess in seconds; only used for the balance pre-check (min 900 s at the rate)"
    },
    "runner": {
      "type": "string",
      "description": "Runner flavour: lammps (default) or openmm (beta)"
    },
    "launch": {
      "type": "string",
      "description": "Launch template; omit for the default KOKKOS/CUDA LAMMPS command line"
    }
  },
  "required": [
    "input"
  ]
}
⚪start_job(id)

Step 2: queue a job whose deck tarball has been uploaded. A GPU pod is launched; billing starts when it reports running.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Job id, e.g. MDJOB-20260907-3F200C"
    }
  },
  "required": [
    "id"
  ]
}
🟢job_status(id)

State (created|uploaded|queued|launching|running|uploading|done|failed|cancelled), GPU, rate, billed seconds, cost so far, exit code, error, last thermo lines.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Job id, e.g. MDJOB-20260907-3F200C"
    }
  },
  "required": [
    "id"
  ]
}
🟢job_log(id)

The last <= 20 thermo/log lines the running pod reported (30 s heartbeat). Full log.lammps is in the results tarball.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Job id, e.g. MDJOB-20260907-3F200C"
    }
  },
  "required": [
    "id"
  ]
}
🟢job_results(id)

For a done/failed job: a presigned download_url (valid ~7 days) for the results tarball (work/, log.lammps, exitcode). Results are deleted 30 days after the run.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Job id, e.g. MDJOB-20260907-3F200C"
    }
  },
  "required": [
    "id"
  ]
}
🟢list_jobs(limit, full)

Jobs of this API key, newest first. Compact rows (id, state, label, created, finished, gpu, cost_usd, error) unless full=true.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "description": "1..200, default 20"
    },
    "full": {
      "type": "boolean",
      "description": "Return the complete status object per job (default false)"
    }
  }
}
🔴delete_results(id)

For a finished job: delete its deck and results tarballs immediately instead of at the automatic 30-day purge. Metadata and billing records are kept; results can no longer be downloaded.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Job id, e.g. MDJOB-20260907-3F200C"
    }
  },
  "required": [
    "id"
  ]
}
🟢capabilities(runner, full)

Capability manifest of the hosted runners: LAMMPS version, installed packages, and every style by category with gpu=true (KOKKOS-accelerated) or gpu=false (exists, but runs on the pod's CPU cores at the GPU rate). Default = compact summary; runner=lammps&full=true returns the whole style table. Use preflight_deck to check a specific deck.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "runner": {
      "type": "string",
      "description": "lammps | openmm; omit for all"
    },
    "full": {
      "type": "boolean",
      "description": "Include the full style table (large)"
    }
  }
}
🟢preflight_deck(input, files)

Dry run of the check submit_job performs: which styles the deck asks for are MISSING on every hosted LAMMPS image (the run would exit at startup), which are CPU-only, whether its pair style will use the GPU at all, and which image (`runner`) the job will be routed to — decks needing packages beyond the fast default image run on lammps-full automatically. Nothing is created or billed.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "input": {
      "type": "string",
      "description": "Relative path of the LAMMPS (or runner) input script inside the deck, e.g. in.lmp"
    },
    "files": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Deck contents {path: text}, must include `input`"
    }
  },
  "required": [
    "input",
    "files"
  ]
}
🔴cancel_job(id)

Cancel a job that is not finished. A running job is billed up to the cancel time; its pod is terminated.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "Job id, e.g. MDJOB-20260907-3F200C"
    }
  },
  "required": [
    "id"
  ]
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet12 Tools
verifiziertVersion nicht aufgezeichnet12 Tools