Skip to main content
Glama
kimlnw

openfoam-mcp

by kimlnw

OpenFOAM MCP — ein CFD-Co-Pilot für jeden MCP-Client

openfoam-mcp ist ein Server für das Model Context Protocol, der einen KI-Assistenten (Claude Desktop und jeden anderen MCP-Client) in einen OpenFOAM-Setup- und Debugging-Co-Piloten verwandelt. Er erzeugt lauffähige Fälle, bearbeitet Dictionaries sicher, dimensioniert das wandnahe Netz, berechnet Einlass-Turbulenzwerte und liest Solver-Logs, um Ihnen zu sagen, ob ein Lauf konvergiert oder explodiert ist — ganz ohne, dass Sie den Chat verlassen.

Die meisten Tools bestehen aus reinem Python und benötigen keine OpenFOAM-Installation, funktionieren also überall. Die wenigen, die OpenFOAM-Dienstprogramme aufrufen (z. B. blockMesh, checkMesh), erkennen die Umgebung und degradieren elegant, wenn OpenFOAM nicht vorhanden ist.

Warum es nützlich ist

Das Einrichten eines CFD-Falls ist eine kniffelige Kleinarbeit: den richtigen y+-Wert, aufeinander abgestimmte Rand-Patches zwischen dem Netz und jedem 0/-Feld, konsistente Turbulenzfelder für das gewählte Modell, eine stabile Courant-Zahl und das Auslesen von Seiten mit Residuenausgaben, um zu erkennen, ob es konvergiert ist. Dieser Server erledigt diese Kleinarbeit über natürliche Sprache.

Tools

Tool

Funktion

list_solvers

Listet verfügbare Solver-Vorlagen auf (simple Platz

.

Hmm, I notice a mistake above: "lauffähige Fallgerüste" vs "lauffähige Fälle". Let me use "lauffähige Fälle" – fine.

-o promote.

Let's carefully now write the final answer without mistakes.

I notice some "wrong" characters in my draft due to thinking. Final answer will be clean.

Let's write final translation with all details.

Wait, but "near-wall mesh" - I earlier wrote "wandnahe Netz". Good.

Also "computes inlet" ... I wrote "Einlass-Turbulenzwerte". Good.

Now, I'll produce final answer, perhaps as one coherent text.

One more check: In table "Tools", row list_solvers description "Listet verfügbare Solver-Vorlagen auf (simpleForm, pimpleForm, icoForm)." Good.

Rows y_plus_from_height: "Umkehrung: vorhergesagtes y+ aus einer Höhe der ersten Zelle, mit Warnung zum Strömungsregime." Good.

analyze_residuals: "Parst ein Solver-Log → Residuen-Rückgang pro Feld + Konvergenzurteil." Good.

Now exclude "Einwell" world. Need produce final exactly:

Let's compose final answer now (mindful of required formatting# OpenFOAM MCP — ein CFD-Co-Pilot für jeden MCP-Client

openfoam-mcp ist ein Server für das Model Context Protocol, der einen KI-Assistenten (Claude Desktop und jeden anderen MCP-Client) in einen OpenFOAM-Setup- und Debugging-Co-Piloten verwandelt. Er erzeugt lauffähige Fälle, bearbeitet Dictionaries sicher, dimensioniert das wandnahe Netz, berechnet Einlass-Turbulenzwerte und liest Solver-Protokolle, um Ihnen zu sagen, ob ein Lauf konvergiert oder explodiert ist — ganz ohne, dass Sie den Chat verlassen.

Die meisten Tools bestehen aus reinem Python und benötigen keine OpenFOAM-Installation, funktionieren also überall. Die wenigen, die OpenFOAM-Dienstprogramme aufrufen (z. B. blockMesh, checkMesh), erkennen die Umgebung und degradieren elegant, wenn OpenFOAM nicht vorhanden ist.

Warum es nützlich ist

Das Einrichten eines CFD-Falls ist eine knifflige Kleinarbeit: den richtigen y+-Wert, eine aufeinander abgestimmte Rand-Patches um zwischen dem Netz und jedem 0/-Feld, konsistente Turbulenzfelder für das gewählte Modell, eine stabile Courant-Zahl und das Durchforsten von Seiten derResiduenausgaben, um festzustellen, ob es konvergiert ist. Dieser Server erledigt diese Punkt-Punkte-Arbeit über natürliche Sprache.

Tools

Tool

Funktion

list_solvers

Listet verfügbare Solver-Vorlagen auf (OpenFOAM simpleFoam, pimpleFoam, icoFoam).

flow_regime

Reynolds-Zahl, Beurteilung laminar/turbulent, Turbulenzmodell-Empfehlung.

first_cell_height

Höhe der ersten Zelle für ein Ziel-y+ (Flachplatten-Korrelation).

y_plus_from_height

Umkehrung: vorhergesagtes y+ aus einer Zellhöhe mit Warnung zum Strömungsregime.

inlet_turbulence

Einlasswerte k, epsilon, omega, nut aus Intensität und Längenmaß.

time_step_from_cfl

Instationärer Zeitschritt aus einer Ziel-Courant-Zahl.

scaffold_case

Legt eine lauffähige Fallstruktur an (system/, constant/, 0/) für einen Solver.

read_dict

Liest eine Dictionary-Datei oder einen einzelnen Eintrag (über foamDictionary).

set_dict_entry

Setzt ein Dictionary-Schlüsselwort (verschachtelt über foamDictionary; Text-Fallback).

set_boundary_condition

Setzt/ergänzt den boundaryField-Eintrag eines Patches in einem constantScale-Feld.

check_case

Prüft einen Fall: Dateien vorhanden, Turbulenzfelder konsistent, Patches passen zum Netz.

analyze_residuals

Parst ein Solver-Log → Residuen-Abnahme pro Feld + Konvergenz-Urteil.

run_openfoam_command

Führt ein freigegebenes OpenFOAM-Dienstprogramm innerhalb eines Falls aus (falls installiert).

Installation und Ausführung

Die Server wird als PyPI-Paket mit einem Konsolen-Einstiegspunkt ausgeliefert. Der übliche Zero-Install-Runner ist uvx:

uvx openfoam-mcp

oder installieren Sie das Paket in einer Umgebung:

pip install openfoam-mcp
openfoam-mcp

Konfiguration von Claude Desktop

Fügen Sie dies Ihrer claude_desktop_config.json hinzu (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\\Claude\\):

{
  "mcpServers": {
    "openfoam": {
      "command": "uvx",
      "args": ["openfoam-mcp"]
    }
  }
}

Starten Sie Claude Desktop neu; die OpenFOAM-Tools erscheinen im Menü „Tools“.

Beispiel-Prompts

  • „Ich habe Luft mit 30 m/s über eine 0,5 m lange Profilsehne. Welche Reynolds-Zahl ergibt sich und welche Höhe der ersten Zellen brauche ich für lässtexample = 1?“

  • „Erstelle einen stationären simpleFoam-Fall in ./duct bei 12 m/s und prüfe ihn.“

  • „Setze endTime in ./duct/system/controlDict auf 3000.“

  • „Lies ./Run log/simpleFoam und sag mir, ob es konvergiert ist.“

Solver-Vorlagen

Vorlage

Physik

Typische Anwendung

simpleFoam

Stationäre inkompressible RANS (k-ω SST)

Kanäle, Außenluft, allgemeine stationäre Strömungen

pimpleFoam

Instationäre inkompressible RANS (k-ω SST)

Wirbelablösung, instationäre Strömungen

icoFoam

Instationäre inkompressible laminare Strömung

Lehre-Fälle mit Nielsen-low-number (Cavity, Low-Re Rohr)

Die Vorlagen folgen dem Tutorial-Stil von OpenFOAM Foundation v9–v12 / ESI v2306+ (transportProperties + momentumTransport). Das erzeugte Box-Netz besitzt die Patches inlet, outlet, walls, frontAndBack.

Entwicklung

pip install -e ".[dev]"
pytest

Lizenz

MIT © 2026 Tanawat Manokieng

Related MCP Connectors