cluster-tools MCP Server
clt — COMSOL-Jobs mit einem Befehl auf dem Harvard FASRC-Cluster
Führen Sie einen COMSOL-Batch-Job auf dem Cluster direkt von Ihrem Mac aus mit einer Zeile aus:
cluster file3.mphwas (Touch-ID-Abfrage →) file3.mph von der Windows-Maschine holt, sich bei FASRC mit Ihrem Passwort + automatisch generiertem 2FA-Code anmeldet, die Datei hochlädt, einen asynchronen Slurm-Job einreicht und Ihnen eine Job-ID zurückgibt. Später:
cluster status # queue overview
cluster logs # tail the COMSOL batch log of the latest job
cluster fetch # download out.mph + batch.log when it's done
cluster shell # drop into an interactive shell (no re-login)
cluster code # print the current 2FA code, e.g. for a manual loginAlles ist ein einziges abhängigkeitsfreies Node-Skript (cluster.js) plus macOS-Bordmittel: ssh, scp, expect, security (Schlüsselbund). Keine npm-Pakete.
Wie es funktioniert
Mac (cluster.js)
├─ Touch ID gate (optional tiny Swift helper, compiled once)
├─ Keychain → FASRC password + TOTP seed
├─ TOTP in Node crypto → the same 6-digit codes as the OpenAuth Java app
├─ ssh ControlMaster → authenticate ONCE, reuse the session ~8h,
│ so scp/ssh/sbatch below run with zero prompts
├─ scp winbox → Mac (over an AnyDesk TCP tunnel or LAN, key auth)
├─ scp Mac → cluster (over the shared session)
└─ ssh sbatch → COMSOL batch job runs asynchronously on SlurmDer entscheidende Punkt ist, dass die FASRC-„Java-2FA-App“ (OpenAuth/JAuth) einfaches TOTP ist — derselbe Algorithmus wie Google Authenticator. Sobald Sie den Base32-Seed haben, generieren ~15 Zeilen Node crypto gültige Codes, und expect gibt das Passwort und den Code bei der ersten Anmeldung des Tages in die ssh-Eingabeaufforderungen ein. ControlMaster hält diese Sitzung am Leben, sodass nichts anderes jemals nachfragt.
Einmalige Einrichtung
0. Voraussetzungen
macOS mit Node ≥ 18 (
brew install nodeoder nodejs.org)Ein FASRC-Konto mit OpenAuth-2FA
Optionales Touch-ID-Gate: Xcode-Befehlszeilentools (
xcode-select --install)
1. Befehl installieren
cd clt
npm link # or: alias cluster="node /path/to/clt/cluster.js" in ~/.zshrcOptionales Touch-ID-Gate (überspringen Sie es, und das Skript fragt einfach nicht):
swiftc -O touchid.swift -o touchid2. ssh-Konfiguration (erforderlich)
Fügen Sie zu ~/.ssh/config hinzu (erstellen Sie es bei Bedarf) und führen Sie mkdir -p ~/.ssh/sockets aus:
Host fasrc
HostName login.rc.fas.harvard.edu
User YOUR_FASRC_USERNAME
ControlMaster auto
ControlPath ~/.ssh/sockets/%r@%h-%p
ControlPersist 8h
ServerAliveInterval 60
Host winbox
HostName 127.0.0.1 # via the AnyDesk TCP tunnel; or the LAN IP of the PC
Port 2222 # the tunnel's local port (drop this line if using LAN IP)
User YOUR_WINDOWS_USERNAMEDer ControlMaster-Block macht alles schnell — ohne ihn würde jedes scp/ssh ein neues Passwort + OTP verlangen, und das Tool weigert sich zu laufen.
3. Holen Sie sich Ihren OpenAuth-TOTP-Seed
Die OpenAuth-Java-App wird mit einem Base32-Geheimnis gesät. Zwei Möglichkeiten, es zu erhalten:
Melden Sie sich auf der FASRC-OpenAuth-Self-Service-Seite an und stellen Sie Ihren Token (erneut) bereit. Neben dem Java-App-Download wird ein QR-Code/Geheimnis zur Verwendung mit Telefon-Authentifikator-Apps angeboten — kopieren Sie diesen Base32-String.
Oder schauen Sie in das bereits heruntergeladene OpenAuth-Bundle: Der Seed wird in der Konfigurationsdatei der App neben dem Jar gespeichert.
Hinweis: Wenn Sie den Token erneut bereitstellen, funktionieren die Codes der alten Java-App nicht mehr — der neue Seed ist dann der einzig wahre Seed (verwenden Sie cluster code als Generator oder laden Sie ihn auch in eine Telefon-App).
4. Windows-Maschine: Integrierter OpenSSH-Server
AnyDesk selbst hat keine skriptbare Dateiübertragung, daher ziehen wir Dateien mit scp vom integrierten OpenSSH-Server von Windows (Windows 10/11 optionale Funktion — keine Drittanbieter-Software). Führen Sie in einer Administrator-PowerShell auf der Windows-Maschine aus:
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
Start-Service sshd
Set-Service -Name sshd -StartupType AutomaticInstallieren Sie dann den öffentlichen Schlüssel Ihres Macs, damit scp kein Passwort benötigt (cat ~/.ssh/id_ed25519.pub auf dem Mac; ssh-keygen -t ed25519 zuerst, wenn Sie keinen haben). Achtung: Wenn Ihr Windows-Konto ein Administrator ist, werden Schlüssel in einer speziellen Datei abgelegt:
Add-Content -Path C:\ProgramData\ssh\administrators_authorized_keys -Value "ssh-ed25519 AAAA...your key..."
icacls C:\ProgramData\ssh\administrators_authorized_keys /inheritance:r /grant "Administrators:F" /grant "SYSTEM:F"(Für Nicht-Administrator-Konten ist es das übliche C:\Users\ihrname\.ssh\authorized_keys.)
5. Von Mac auf Windows zugreifen
Wählen Sie eine Option:
AnyDesk-TCP-Tunnel (entspricht Ihrem aktuellen Workflow): Öffnen Sie in AnyDesk auf dem Mac die Sitzungseinstellungen für den Windows-PC → TCP-Tunneling → lokaler Port
2222→ remote127.0.0.1:22. Der Tunnel existiert nur, während die AnyDesk-Sitzung verbunden ist — in Ordnung, wenn Sie sowieso per AnyDesk verbunden sind. Überprüfen Sie, ob Ihre AnyDesk-Lizenz TCP-Tunneling beinhaltet.Gleiches Netzwerk / VPN: Setzen Sie
HostNameauf die IP des PCs imwinbox-Block und löschen Sie die ZeilePort 2222. Am einfachsten, wenn die Labormaschinen ein Netzwerk teilen.Windows komplett überspringen: Legen Sie den COMSOL-Ordner in OneDrive ab (Harvard stellt es zur Verfügung) und lassen Sie es auf den Mac synchronisieren — dann verwendet
cluster ~/OneDrive/.../file3.mphdie lokale Kopie und berührt nie den PC.
Test: ssh winbox sollte Sie ohne Passwortabfrage auf dem PC anmelden.
6. Geheimnisse speichern und konfigurieren
cluster setupFragt nach Host-Aliasnamen, Slurm-Standardwerten, Ihrem FASRC-Passwort und dem TOTP-Seed. Geheimnisse werden im macOS-Schlüsselbund gespeichert (niemals auf der Festplatte, niemals in diesem Repository). Die Einrichtung endet mit der Ausgabe eines generierten 2FA-Codes — überprüfen Sie, ob er mit dem übereinstimmt, was die Java-App anzeigt, bevor Sie ihm vertrauen.
Bestätigen Sie dann auf dem Cluster (einmalig, über cluster shell):
module avail comsol— setzen Sie den genauen Modulnamen in~/.config/clt/config.jsonIhre Gruppe hat COMSOL-Lizenzplätze, und wählen Sie die richtige Partition für Ihr Labor
Verwendung
cluster file3.mph # fetch from Windows, upload, submit
cluster ./local/file3.mph # a file that exists locally skips the Windows fetch
cluster file3.mph -study std2 # extra args are passed to `comsol batch`
cluster status # your whole queue
cluster status 12345678 # one job, incl. finished (sacct)
cluster logs file3 # tail batch.log
cluster fetch file3 # → ./file3-out.mph + ./file3-batch.logJob-Dateien landen auf dem Cluster in ~/comsol_jobs/<name>-<timestamp>/ (in.mph, out.mph, batch.log, slurm-<id>.log). Legen Sie eine E-Mail-Adresse in cluster setup fest, um eine Nachricht zu erhalten, wenn Jobs abgeschlossen sind. Die Buchhaltung für eingereichte Jobs befindet sich in ~/.config/clt/jobs.json.
MCP-Server (KI-gesteuertes COMSOL)
mcp/server.mjs stellt die gesamte Pipeline als MCP-Tools bereit, sodass Claude (oder jeder MCP-Client) COMSOL Ende-zu-Ende ausführen kann: run_code (generiertes Java = vollständige COMSOL-API), run_model, job_status, job_log, wait_for_job, fetch_artifacts, cancel_job, lab_fairshare. Projektweit über .mcp.json registriert — öffnen Sie eine Claude-Code-Sitzung in diesem Repository, und die Tools sind verfügbar.
Schutzmaßnahmen werden im Server durchgesetzt (max. 4 gleichzeitige Jobs, ≤16 CPUs, ≤64 GB, ≤48 h, zugelassene Partitionen), und lab_fairshare gibt ein healthy-Flag zurück, das die KI zu respektieren angewiesen ist. Überprüfen Sie alles mit node mcp/smoke.mjs — es führt ein Hallo-Welt-Modell durch die Tools aus und überprüft die Physik gegen die analytische Antwort. Modellbau-Idiome und bekannte COMSOL-API-Fallen befinden sich in references/.
Forking für Labormitglieder
Das Repository enthält keine persönlichen Daten: Die Konfiguration befindet sich in ~/.config/clt/, Geheimnisse im Schlüsselbund jeder Person. Ein Laborkollege klont einfach, führt npm link aus, fügt die beiden ssh-Konfigurationsblöcke hinzu und führt cluster setup mit seinen eigenen Anmeldeinformationen aus. Geben Sie niemals Ihren TOTP-Seed weiter oder committen Sie ihn irgendwo.
Schnellstart für einen frischen Klon:
git clone <this repo> && cd clt
npm install # MCP server deps (the CLI itself needs none)
npm link # provides the `cluster` command
swiftc -O touchid.swift -o touchid # optional Touch ID gate
cluster setup # host aliases, Slurm defaults, secrets -> Keychain
cluster login # verify; then `cluster help`Forschungsdaten aus dem Repository heraushalten
references/lab/ ist gitignoriert und ist der Ort, an den COMSOL-Modellexporte gehören. Exporte enthalten unveröffentlichte Geometrie und Physik sowie absolute Pfade mit echten Namen, daher dürfen sie nicht veröffentlicht werden. Die verfolgten Dateien in references/ sind generische, veröffentlichbare Beispiele (HelloBox, SweepBox, Inspect) plus CONVENTIONS.md, das angesammelte COMSOL-API-Wissen, das generierte Modelle zum Funktionieren bringt. Überprüfen Sie vor dem Pushen git status auf verirrte .mph-, .java-Exporte oder Ergebnis-CSVs.
Sicherheitshinweise, ehrlich
Das Speichern des TOTP-Seeds neben dem Passwort auf demselben Mac reduziert 2FA auf „Besitz Ihres entsperrten Macs“. Das schützt vor remoteem Diebstahl von Anmeldeinformationen, aber nicht vor jemandem an Ihrer Tastatur. Lassen Sie FileVault eingeschaltet.
Das Touch-ID-Gate ist ein praktisches Schloss für dieses Skript, keine Verschlüsselung — Geheimnisse werden vom Schlüsselbund geschützt. Um bei jedem Lesen eines Geheimnisses einen macOS-Bestätigungsdialog zu erzwingen, erstellen Sie die Elemente ohne vertraute App neu:
security add-generic-password -U -T "" -a $USER -s clt-cluster-password -wÜberprüfen Sie, ob die Automatisierung Ihres eigenen OTP innerhalb der akzeptablen Nutzungsrichtlinie von FASRC liegt; dies ist eine persönliche Komfortautomatisierung, und der Seed muss persönlich bleiben.
Fehlerbehebung
login failed— führen Siessh fasrcmanuell aus, um die tatsächlichen Eingabeaufforderungen zu sehen, und vergleichen Siecluster codemit der Java-App. Wenn die Uhr Ihres Macs falsch geht, sind TOTP-Codes falsch (Systemeinstellungen → Allgemein → Datum & Uhrzeit → automatisch einstellen).no ControlMaster socket— dieControlMaster-Zeilen fehlen imHost fasrc-Block, oder~/.ssh/socketsexistiert nicht.Windows-Fetch schlägt fehl — Ist die AnyDesk-Sitzung (und der Tunnel) aktiv? Funktioniert
ssh winbox? Leerzeichen in.mph-Dateinamen werden nicht unterstützt — umbenennen.Job stirbt sofort —
cluster logszeigt normalerweise einen Lizenz- oder Modulfehler; überprüfen Sie den Modulnamen und die COMSOL-Lizenz Ihrer Gruppe.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-callable calculators and engineering models with real formulas. No hallucinated math.
LLM chat, text summarization and AI image generation
Run, build, and validate firmware on virtual hardware from your AI agent. Hardware knowledge corpus.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ckuzmick/cluster-tools'
If you have feedback or need assistance with the MCP directory API, please join our Discord server