Skip to main content
Glama
kimlnw

openfoam-mcp

by kimlnw

OpenFOAM MCP — un copiloto de CFD para cualquier cliente MCP

openfoam-mcp es un servidor de Model Context Protocol que convierte a un asistente de IA (Claude Desktop y cualquier otro cliente MCP) en un copiloto de configuración y depuración de OpenFOAM. Genera la estructura de casos ejecutables, edita diccionarios de forma segura, dimensiona la malla cercana a la pared, calcula los valores de turbulencia de entrada y lee los registros de los solvers para saber si una ejecución convergió o divergió, todo sin que tengas que salir del chat.

La mayoría de las herramientas son Python puro y no necesitan instalación de OpenFOAM, por lo que funcionan en cualquier sitio. Las pocas que llaman a utilidades de OpenFOAM (p. ej., blockMesh, checkMesh) detectan el entorno y degradan con elegancia cuando OpenFOAM no está instalado.

Por qué es útil

Configurar un caso de CFD es una tarea de registro minuciosa: el y+ correcto, parches de contorno coincidentes entre la malla y cada campo de 0/, campos de turbulencia coherentes con el modelo elegido, un número de Courant estable y leer páginas de residuales para ver si convergió. Este servidor hace ese trabajo de registro mediante lenguaje natural.

Herramientas

Herramienta

Qué hace

list_solvers

Lista plantillas de solver para generar casos (simpleFoam, pimpleFoam, icoFoam).

flow_regime

Número de Reynolds, veredicto laminar/turbulento y recomendación de modelo de turbulencia.

first_cell_height

Altura de la primera celda para un y+ objetivo (correlación de placa plana).

y_plus_from_height

Inverso: y+ previsto a partir de una altura de celda, con aviso de régimen.

inlet_turbulence

k, epsilon, omega, nut de entrada a partir de intensidad y escala de longitud.

time_step_from_cfl

Paso de tiempo transitorio para un número de Courant objetivo.

scaffold_case

Escribe una estructura de caso ejecutable (system/, constant/, 0/) para un solver.

read_dict

Lee un archivo de diccionario o una sola entrada (a través de foamDictionary).

set_dict_entry

Establece una clave de diccionario (anidada mediante dictionary; respaldo en texto).

set_boundary_condition

Establece o inserta la entrada boundaryField de un parche en un campo de 0/.

check_case

Valida un caso: fitxers presentes, campos de turbulencia coherentes y parches que coinciden con la malla.

analyze_residuals

Analiza el registro del solver → caída de los residuales por campo + veredicto de convergencia.

run_openfoam_command

Ejecuta una utilidad de OpenFOAM de la lista blanca dentro de un caso (si está instalada).

Instalación y ejecución

El servidor se distribuye como paquete PyPI con un puntero de entrada de consola, por lo que el ejecutor habitual de instalación cero es uvx:

uvx openfoam-mcp

o instálalo en un entorno:

pip install openfoam-mcp
openfoam-mcp

Configuración de Claude Desktop

Añade esto a claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

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

Reinicia Claude Desktop; las herramientas de OpenFOAM aparecen en el menú de herramientas.

Ejemplos de prompts

  • "Tengo aire a 30 m/s sobre una cuerda de 0,5 m. ¿Qué número de Reynolds es ese y qué altura de primera celda necesito para y+ = 1?"

  • "Genera un caso simpleFoam estacionario en ./ducteo a 12 m/s y compruébalo."

  • "Establece endTime en 3000 en ./ducte/system/controlDict."

  • "Lee ./ducte/log.simpleFoam y dime si convergió."

Plantillas de solver

Template

Física

Uso típico

simpleFoam

RANS incompresible estacionario (k-ω SST)

Conductos, aerodinámica exterior, flujo estacionario general

pimpleFoam

RANS incompresineto transitorio (k-ω SST)

Desprendimiento de vórtices, flujos transitorios

icoFoam

Laminar incompresineto transitorio

Casos didácticos a bajo Re (cavidad, tubería a bajo Re)

Las plantillas siguen el estilo de tutoriales de OpenFOAM Foundation v9–v12 / ESI v2306+ (transportProperties + momentumTransport). La malla de caja generada tiene los parches inlet, outer, walls, frontAndBack.

Desarrollo

pip install -e ".[dev]"
pytest

Licencia

MIT © 2026 Tanawat Manokieng

Related MCP Connectors