Introduction
AI 애플리케이션을 업무에 활용하는 사례가 늘고 있으나, 대부분은 대화창 안에서 답변을 받는 데 그친다. MCP(Model Context Protocol)는 AI가 사용자의 PC에 설치된 프로그램과 데이터에 직접 접근할 수 있도록 하는 표준 프로토콜로, 이를 활용하면 AI가 방법을 알려주는 수준을 넘어 실제 작업을 수행하도록 할 수 있다. PyAnsys™는 Python 환경에서 Ansys 제품군을 제어할 수 있게 해주지만, 사용자가 직접 스크립트를 작성해야 한다는 부담이 있다. 본 호에서는 MCP를 이용해 Claude와 Ansys Mechanical™, Ansys Fluent®를 연동하고, 자연어 지시만으로 전처리부터 해석, 후처리까지 맡기는 과정을 소개한다.
■ MCP란?
MCP는 Model Context Protocol의 약어로, AI가 외부 도구 및 데이터에 접근할 수 있도록 만들어주는 개방형 표준 프로토콜이다. 기존에는 AI를 외부 애플리케이션에 연결하려면 애플리케이션마다 개별적인 방식으로 연동해야 했으나, MCP는 이를 표준화된 단일 방식으로 통일한다. 자물쇠마다 다른 열쇠를 만들던 방식에서, 하나의 규격으로 연결하는 방식으로 바뀐 셈이다.
MCP는 세 가지 요소로 구성된다. MCP Host는 Claude, Gemini와 같은 AI 애플리케이션 자체를 가리키며, 사용자와 상호작용하고 LLM을 구동하며 여러 Client를 관리하는 MCP 통신의 중심이다. MCP Server는 외부 애플리케이션을 표준 방식으로 연결하는 주체로, 실행 가능한 기능을 도구(Tool) 형태로 노출한다. MCP Client는 Host 내부에서 MCP Server 하나와 1:1로 연결을 담당하는 커넥터다. 연결할 외부 애플리케이션이 늘어나면 Server와 Client의 쌍이 그만큼 추가된다.

[그림 1] MCP 구성요소
■ MCP와 Ansys의 연동 구조
MCP는 AI 애플리케이션과 외부 애플리케이션을 잇는 다리 역할을 한다. Ansys 제품군을 연결할 때는 MCP Server가 PyAnsys를 호출하도록 구성한다. PyAnsys는 Python 환경에서 Ansys 제품군을 제어할 수 있도록 하는 라이브러리 에코시스템으로 PyMAPDL, PyMechanical, PyWorkbench, PyFluent, PyAEDT, PyTwin, PyPrimeMesh, PyDPF 등이 포함되며, 본 원고에서는 PyWorkbench, PyMechanical, PyFluent를 사용한다.
동작 순서는 다음과 같다. 사용자가 자연어로 작업을 요청하면 Host의 LLM이 필요한 도구를 판단하고, MCP Client를 통해 MCP Server의 도구를 호출한다. MCP Server는 전달받은 요청을 PyAnsys 스크립트로 변환하여 실행하고, 그 결과를 다시 Host로 반환한다. LLM은 반환된 결과를 바탕으로 다음 작업을 이어서 수행하므로, 사용자는 스크립트를 직접 작성하지 않는다. 또한 MCP는 여러 AI 모델이 공통으로 지원하는 프로토콜이므로, 한 번 구축한 MCP Server를 Claude Desktop 외의 애플리케이션에서도 그대로 사용할 수 있다.

[그림 2] MCP Server를 통한 Ansys 제품군 제어 구조
[영상 1] Fluent 배관 내 열유동 해석 예시 (* 이미지를 클릭 시 전체 영상을 확인하실 수 있습니다.)
■ MCP 환경 구축 개요
환경 구축은 네 단계로 이루어진다. 먼저 Python을 설치하고 가상환경을 생성한다. 이어서 해당 가상환경에 PyAnsys 라이브러리를 설치하고, PyAnsys와 연동되는 MCP Server를 구축한 뒤, 마지막으로 Claude Desktop에 MCP Server를 등록한다. MCP Server는 가상환경 안에서 실행되며, Claude Desktop은 그 가상환경의 Python 실행 파일을 직접 호출하는 형태로 연결된다.
※ 다만 본 원고의 방식은 MCP Server가 사용자 PC에서 직접 실행되고 Ansys 역시 해당 PC에 설치되어 있어야 하므로 데스크톱 애플리케이션에서만 사용할 수 있으며, 웹 브라우저에서 접속하는 환경에서는 이러한 로컬 MCP Server를 등록할 수 없다.
※ 본 원고는 유료 계정 기준이며, 무료 계정에서는 사용량 제한 등으로 동일한 작업이 어려울 수 있다.
■ MCP 환경 구축 (1) - 가상환경 생성
가상환경은 Python 실행 환경을 프로젝트 단위로 독립되게 관리하기 위한 것이며, 생성이 필수는 아니지만 전역 환경의 오염을 방지하고 배포 및 협업에 유리하므로 생성하는 것을 권장한다. 본 원고에서는 Ansys Python Manager를 사용하여 생성했으며, 해당 내용은 ANZINE 70호의 “Ansys Python Manager로 시작하는 PyFluent”를 참고할 수 있다.
Install Python 탭에서 Python 버전을 선택하여 설치한 뒤(본 원고는 3.11 설치), Create virtual environments 탭에서 가상환경의 이름을 입력하고 Create 버튼을 클릭한다. 가상환경이 생성되는 경로는 File → Configure(Ctrl + D)에서 변경할 수 있으며, 본 원고에서는 "D:\venv"에 "myenv"라는 이름으로 생성했다.
[그림 3] Ansys Python Manager를 이용한 가상환경 생성
■ MCP 환경 구축 (2) - PyAnsys 라이브러리 설치
Manage Python environments 탭에서 앞서 생성한 가상환경을 선택한 뒤, PyAnsys package management 영역에서 필요한 라이브러리와 버전을 선택하고 Install 버튼을 클릭한다. PyWorkbench를 설치하고 Mechanical을 사용할 경우 PyMechanical을, Fluent를 사용할 경우 PyFluent를 설치한다.
[그림 4] PyAnsys 라이브러리 설치
■ MCP 환경 구축 (3) - MCP Server 구축
동일한 화면의 Launch console 버튼을 클릭하면 해당 가상환경이 활성화된 콘솔이 실행된다. 아래 명령으로 MCP 라이브러리를 설치한다.
pip install mcp==1.29.0

[그림 5] MCP 라이브러리 설치
MCP Server는 Python 스크립트로 작성한다. FastMCP를 사용하면 함수에 데코레이터(@)를 붙이는 것만으로 도구를 정의할 수 있다. 아래는 Mechanical에 스크립트를 전달하는 도구를 정의한 최소 형태의 예시다.
from mcp.server.fastmcp import FastMCP
from ansys.mechanical.core import launch_mechanical
mcp = FastMCP("ansys-mechanical")
_session = None
@mcp.tool()
def run_mechanical_script(script: str) -> str:
global _session
if _session is None:
_session = launch_mechanical(batch=False)
return _session.run_python_script(script)
if __name__ == "__main__":
mcp.run()
작성 시 도구의 반환 값에는 다음 판단에 필요한 최소한의 정보만 담는 것이 좋다. 전체 로그나 대용량 결과표를 그대로 반환하면 대화 맥락이 빠르게 소모되므로, 상세 결과는 파일로 저장하고 경로만 반환하는 방식이 효율적이다.
작성한 스크립트는 가상환경이 위치한 경로에 둔다. 본 원고에서는 "D:\venv\myenv" 경로에 ansys_mechanical_mcp.py와 ansys_fluent_mcp.py를 두었다.
■ MCP 환경 구축 (4) – Claude Desktop에 MCP Server 등록
Claude Desktop에서 설정 → 개발자 → 구성 편집을 클릭하면 claude_desktop_config.json 파일을 확인할 수 있다. 이 파일의 mcpServers 항목에 MCP Server의 이름, 가상환경에 있는 python.exe의 경로, 앞서 작성한 스크립트의 경로를 입력한다. 경로를 입력할 때 역슬래시는 두 개(\\)로 작성하며, 들여쓰기에 유의한다. 기존에 작성되어 있던 내용은 PC마다 다르므로 그대로 유지한다.

[그림 6] claude_desktop_config.json 작성 예시
작성이 끝나면 Claude Desktop을 완전히 종료한 뒤 다시 실행한다. 설정 → 개발자 화면에서 등록한 MCP Server가 running 상태로 표시되면 환경 구축이 완료된 것이다.
[그림 7] MCP Server 등록 확인
■ 사용해 보기 - 학습 자료 등록
본격적인 작업에 앞서 프로젝트를 생성하고 강의 자료, 가이드 자료, 예제 파일 등을 등록해 두면 해당 내용을 참고하여 작업을 수행하므로 결과의 품질을 높일 수 있다. 아래 예시에서는 Mechanical과 Fluent용 프로젝트를 각각 생성하고, 교육 자료를 등록했다.
[그림 8] 프로젝트에 학습 자료 등록
■ 사용해보기 - Mechanical
"Ansys Mechanical을 실행하고, E:\Cap_fillets.stp 형상 파일을 가져와 줘"와 같이 요청하면 MCP Server가 Mechanical 세션을 열고 형상을 불러온다. 작업이 끝나면 가져온 파트와 바디의 수를 요약하여 알려주고, 다음 단계를 제안한다.
[그림 9] Mechanical 실행 및 형상 가져오기
이어서 "Static Structural 시스템을 생성하고 4개의 구멍에 Fixed Support 정의 및 +Z 방향 중력 조건 정의해줘"라고 지시하면, 형상의 원통면을 탐색하여 구멍을 식별한 뒤 경계조건을 정의한다. 격자는 "격자 생성해 줘"로 시작하되, 생성에 실패하거나 절점 수가 과다한 경우 "격자 개수가 너무 많아. Nodes 개수를 5만개 이하가 되도록 해줘"와 같이 추가로 요청하며 조정한다. 이 과정에서 요소 크기와 요소 차수를 스스로 변경하여 목표를 맞추는 모습을 확인할 수 있다.

[그림 10] 격자 생성
마지막으로 "해석 수행하고 변형량 결과를 분석해 줘"라고 요청하면 해석을 수행하고 최대·최소 변형량과 그 발생 위치를 정리하여 제시한다. 다만 이때 제시되는 해석 결과의 물리적 타당성은 사용자가 직접 검토해야 한다.
[그림 11] 해석 수행 및 변형량 결과 확인
■ 사용해 보기 - Fluent
Fluent도 동일한 방식으로 사용할 수 있다. "Fluent Meshing을 4코어로 실행하고 D:\heat_sink.dsco 형상을 불러와 줘"와 같이 요청하여 세션을 시작한다.
[그림 12] Fluent Meshing 실행 및 형상 불러오기
경계조건을 그림으로 전달하는 것도 가능하다. 경계조건을 표시한 이미지를 첨부하고 "첨부한 이미지와 같이 heat sink에 경계조건을 정의할거야. 이를 위해 적합한 격자를 생성해줘. inlet, outlet이 열려있기 때문에 닫아야 해"라고 요청하면 열린 면을 capping 처리한 뒤 격자를 생성한다. 이후 Fluent Solution으로 전환하고, "조금 전 첨부한 이미지처럼 경계조건을 정의해줘"로 경계조건을 설정한다.
[그림 13] 경계조건 정의
해석과 후처리도 마찬가지다. "해석 수행해 줘"로 계산을 진행한 뒤 "YZ 평면 중심에서 온도 결과를 플롯 해줘", "Vector로 Velocity Magnitude 플롯 해줘"와 같이 요청하면 절단면 및 벡터 플롯을 생성한다. 참고 이미지를 제시하고 "이런 형태로 플롯 해줘"라고 요청하면 Scene 기능을 이용해 유사한 화면을 구성한다.

[그림 14] 후처리 결과
■ 부록 - 프롬프트로 MCP 환경 구축하기
앞서 소개한 절차를 따라가다 보면 자연스럽게 드는 의문이 있다. 결국 이 과정도 파일을 만들고 명령을 실행하는 일인데, 이것 역시 AI에게 맡길 수는 없을까?
가능하다. Claude Desktop의 '채팅'에서는 MCP Server를 통해서만 외부 작업을 수행하지만, 파일 편집과 명령 실행이 기본으로 제공되는 도구를 사용하면 이야기가 달라진다. Claude Code가 그러한 도구이며, 같은 Claude Desktop의 'Code'에서 별도 설치 없이 바로 사용할 수 있고 터미널이나 VS Code 확장 형태로도 제공된다. 여기에서는 Python 설치부터 가상환경 생성, 스크립트 작성, 서버 등록까지 대화만으로 처리할 수 있다. Antigravity(Google)나 Codex(OpenAI)와 같은 다른 에이전트형 개발 환경도 동일한 방식으로 활용할 수 있다. 지시를 단계별로 나눌 필요도 없다. "Ansys를 AI로 제어하고 싶으니 필요한 환경을 구축해 줘"와 같이 목적만 전달하면, 무엇이 필요한지 스스로 판단해 순서를 세우고 실행한다. 프로그램 설치나 파일 수정과 같이 시스템을 변경하는 작업은 진행 전에 승인을 요청하므로, 사용자는 요청 내용을 확인하고 허용 여부를 결정하면 된다. 손이 가장 많이 가는 MCP Server 스크립트 작성도 마찬가지이며, 실제로 본 원고에서 사용한 스크립트 역시 Claude가 작성한 것이다.
다만 확인은 여전히 사용자의 몫이다. 설치된 Ansys 버전이나 라이브러리 버전처럼 환경에 따라 달라지는 부분은 짚어주어야 하고, 생성된 코드가 의도대로 작성되었는지 판단하려면 앞 절의 내용을 이해하고 있어야 한다. 구축 과정을 직접 한 번 거쳐 보는 것이 여전히 의미 있는 이유다.
맺음말
본 호에서는 MCP를 이용해 Claude와 Ansys 제품군을 연동하고, 자연어 지시로 해석을 수행하는 과정을 소개했다.
MCP의 강점은 확장성에 있다. 본 원고에서는 Mechanical과 Fluent만 다뤘으나, PyAnsys가 지원하는 제품이라면 동일한 방식으로 MCP Server를 추가할 수 있다. PyMAPDL로 스크립트 기반 해석을, PyPrimeMesh로 격자 생성을, PyDPF로 대용량 결과 후처리를 맡기는 식으로도 가능하다. 또한 MCP Host는 여러 MCP Server를 동시에 연결할 수 있으므로, 파일 탐색기나 사내 문서를 함께 연결해 두면 형상 파일을 찾아 해석을 수행하고 결과를 정리해 보고서 초안까지 작성하는 흐름을 하나의 대화에서 처리할 수 있다.
반복 작업에서도 활용도가 높다. 설계 변수만 바꿔가며 수행하는 파라메트릭 스터디는 조건 목록을 전달하는 것만으로 순차 실행과 결과 정리가 가능하며, 해석이 실패했을 때 오류 메시지를 읽고 격자나 수렴 설정을 조정해 재시도하도록 맡길 수도 있다. 사내의 해석 표준이나 검토 절차를 프로젝트 지식으로 등록해 두면 담당자마다 달랐던 해석 조건을 일정한 기준으로 유지하는 데에도 도움이 된다.
다만 주의할 점도 있다. AI는 그럴듯하게 틀릴 수 있으므로 해석 조건과 결과의 물리적 타당성은 사용자가 직접 검증해야 한다. 또한 AI가 작성한 코드가 사용자 PC에서 실행되어 파일과 시스템에 접근할 수 있으므로, 사내 보안 정책을 사전에 확인할 것을 권장한다. 본 원고는 Claude Desktop을 기준으로 작성했으나, 로컬 MCP Server를 지원하는 다른 AI 애플리케이션에서도 동일한 구성을 사용할 수 있다.
MCP는 강력한 도구이지만, 최종 판단과 책임은 사용자에게 있음을 꼭 유념해야 한다.
■ 참고 자료