Skip to main content
Glama
kimlnw

openfoam-mcp

by kimlnw

OpenFOAM MCP — 모든 MCP 클라이언트를 위한 CFD 코-파일럿

openfoam-mcp는 AI 어시스턴트(Claude Desktop 및 다른 MCP 클라이언트)를 OpenFOAM 설정·디버깅 코-파일럿으로 변환하는 Model Context Protocol 서버입니다. 실행 가능한 케이스를 생성하고, dictionary를 안전하게 편집하며, 벽 근접 메시 크기를 산정하고, 입구 난류 값을 계산하며, 솔버 로그를 읽어 실행이 수렴했는지 발산했는지를 알려줍니다 — 모두 채팅을 떠나지 않고 처리됩니다.

대부분의 도구는 순수 Python이며 OpenFOAM 설치가 필요 없기 때문에 어디서나 동작합니다. OpenFOAM 유틸리티(예: blockMesh, checkMesh)를 호출하는 소수의 도구는 환경을 감지하고, 해당 환경이 없을 때는 부드럽게 기능을 제한합니다.

왜 유용한가

CFD 케이스를 설정하는 것은 번거로운 관리 작업입니다. 올바른 y+, 메시와 모든 0/ 필드 사이에서 경계 패치를 일치시키기, 선택한 모델에 적합한 일관된 난류 필드, 안정적인 Courant 수, 그리고 수렴 여부를 알아보기 위한 여러 페이지의 잔차 출력입니다. 이 서버는 자연어로 그런 관리 작업을 처리합니다.

도구

Tool

하는 일

list_solvers

스캐폴드 가능한 솔버 템플릿(simpleFoam, pimpleFoam, icoFoam)을 나열합니다.

flow_regime

레이놀즈 수, 층류/난류 판정, 난류 모델 추천을 제공합니다.

first_cell_height

목표 y+에 대한 첫 번째 셀 높이(평편평 상관식)를 계산합니다.

y_plus_from_height_f

역산: 셀 높이에서 y+를 예측하고 유동 구간 경고를 제공합니다.

inlet_turbulence

강도와 길이 스케일로부터 입구 k, epsilon, omega, nut 값을 계산합니다.

time_step_from_cfl

목표 Courant 수에서 비정상 시간 스텝을 계산합니다.

scaffold_case

솔버에 대해 실행 가능한 케이스 트리(system/또는, constant/또는, 0/또는)를 작성합니다.

read_dict

foamDictionary를 통해 dictionary 파일이나 항목 하나를 읽습니다.

set_dict_entry

dictionary의 키를 설정합니다(foamDictionary로 중첩 접근, 텍스트 대체 가능).

set_boundary_condition

0/ 필드에서 패치의 boundaryField 항목을 설정하거나 삽입합니다.

check_case

케이스를 검증합니다: 파일 존재, 난류 소 필드, 메시-패치 대응 여부 등.

analyze_residuals

솔버 로그를 파싱 → 각 필드의 잔차 감소 및 수렴 판정.

run_openfoam_command

케이스 내에서 허용 목록(whitelist)에 등록된 OpenFOAM 유틸리티를 실행합니다(설치된 경우).

설치 및 실행

서버는 PyPI 패키지 형태로 콘솔 진입점을 제공하므로, 일반적인 제로-설치 실행기는 ``입니다:

uvx openfoam-mcp

또는 환경에 설치할 수도 있습니다:

pip install openfoam-mcp
openfoam-mcp

Claude Desktop 구성

claude_desktop_config.json에 다음을 추가하세요 (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

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

Claude Desktop을 재부팅하면 OpenFOAM 도구가 도구 메뉴에 나타납니다.

예시 프롬프트

  • "0.5 m 시드(chord)에 30m/s의 공기가 흐릅니다. 이 경우의 레이놀즈 수는 무엇이며, y+ = 1에 필요한 첫 번째 셀 높이는 얼마나 되나요?"

  • "SimpleFOAM case를 ./duct에서 정상 상태로 만들고 12 m/s로 실행하도록 배치한 후 점검해 주세요."

  • "./duct에서 endTime을 3000으로 설정해 주세요."

  • "./duct/log.simpleFoam을 읽고 수렴되었는지 말해 주세요."

솔버 템플릿

템플릿

물리

일반적인 사용

simpleFoam

정상상태 비압축성 RANS (k-ω SST)

덕트, 외부 공력해석, 일반 정상 통상 흐름

pimpleFoam

비정상상태 비압축성 RANS (k-ω SST)

와류 방출(vortex shedding), 비정상 흐름

icoFoam

비정상상태 비압축성 층류

저-레이놀즈 교육용 케이스(캐비티, 저-Re 단관)

이 템플릿들은 OpenFOAM foundation v9 – v12 / ESI v2306+ 튜토리얼 스타일(transportProperties 및 momentumTransport)을 따르며, 생성된 박스 메쉬에는 inlet, outlet, walls, frontAndBack 패치가 있습니다.

개발

pip install -e ".[dev]"
pytest

라이선스

MIT License © 2026 Tanawat Manokieng

Related MCP Connectors