본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 24. 09:18

Docker로 안전하게 MCP 서버 사용하기

요약

AI 에이전트가 로컬 파일에 접근할 때 발생할 수 있는 보안 위험을 방지하기 위해 MCP 서버를 Docker로 샌드박스화하는 방법을 소개합니다. Docker MCP Toolkit을 사용하여 클릭 몇 번으로 안전한 실행 환경을 구축할 수 있습니다.

핵심 포인트

  • MCP 서버를 Docker 컨테이너로 격리하여 파일 시스템 접근 권한을 제한함
  • Docker를 통한 이중 잠금 방식으로 AI 오작동 및 보안 결함에 대응
  • Docker MCP Toolkit을 활용한 간편한 MCP 서버 및 클라이언트 프로파일 설정
  • LM Studio, Claude Desktop 등 다양한 AI 클라이언트와 연동 가능

서론

AI에게 PC 내부의 파일(로컬 파일)을 다루게 하려고 하면, "AI가 실수로 데이터를 삭제해 버렸다"와 같은 사건이 걱정됩니다. 최악의 경우, PC가 부팅되지 않을 수준의 파괴가 일어날 가능성도 있습니다.

MCP를 이용할 경우 로컬 파일은 MCP 서버에 의해 읽고 쓰여지므로, MCP 서버를 Docker로 샌드박스(Sandbox)화 함으로써 읽고 쓸 수 있는 파일을 제한합니다.

이미지

개요를 그림으로 나타내면 다음과 같습니다.

AI에게 여행 계획을 세우게 하는 경우, 실제로 PC 내부의 여행 자료를 읽고 쓰는 것은 Filesystem MCP Server 등의 MCP 서버이므로, 이를 Docker 내부에 가둡니다.

Docker 설정에서 Windows 측(호스트 측)의 접근 가능한 폴더를 여행 자료로 한정함으로써, 그 외의 파일에는 접근할 수 없게 됩니다.

물론 MCP 서버에도 폴더 설정이 있으며, 통상적으로는 그것으로 충분합니다. 하지만 AI의 오작동이나 MCP 서버의 결함 등으로 인해 폴더 설정이 변경되거나 무시될 가능성이 있습니다. Docker라는 "우리"로 이중 잠금을 하는 이미지입니다.

간단한 방법

Docker MCP Catalog와 Docker MCP Toolkit을 사용하면, 마우스 클릭만으로 위 내용을 간단히 구현할 수 있습니다.

Docker Desktop을 실행하고, 설정 화면의 "Beta features"에서 "Enable Docker MCP Toolkit"을 활성화합니다.

Docker Desktop의 사이드바에 "MCP Toolkit"이 나타나므로 클릭한 뒤, "Catalog" 탭을 클릭합니다.

이 화면에서 도입할 MCP 서버(를 Docker 컨테이너로 실행할 수 있도록 패키지화한 것)를 찾을 수 있습니다.

여기서는 PC 내부의 파일에 접근하기 위한 "Filesystem (Reference)"(이후 "Filesystem")를 검색합니다. 찾은 카탈로그의 체크박스를 활성화하면 "Add to" 버튼이 표시되므로, "New profile"을 클릭합니다.

프로파일 생성 화면이 됩니다. 프로파일은,

  • 사용하는 MCP 서버
  • 사용하는 AI 앱(클라이언트)

를 하나로 묶는 것입니다.

MCP 서버는 방금 Filesystem을 지정했으므로(약간 알아보기 어렵지만, Select servers 아래에 FILESYSTEM 태그가 붙어 있습니다), 클라이언트만 지정합니다.

LM Studio를 사용하는 경우에는 LM Studio를 검색한 뒤 오른쪽의 "+" 버튼(Add client 버튼)을 클릭합니다. 그 외에도 각종 클라이언트(Claude Desktop, Codex 등)가 준비되어 있으므로, 본인이 사용 중인 클라이언트를 추가해 주세요. Create 버튼을 누르면 프로파일이 생성됩니다.

생성된 프로파일은 "Filesystem"란에 "CONFIGURATION REQUIRED"라고 표시되어 설정이 완료되지 않았으므로, 톱니바퀴 버튼을 클릭하여 설정합니다.

Filesystem의 설정 항목은 접근을 허용할 폴더 지정뿐입니다. AI가 접근하게 하고 싶은 폴더를 입력하고, Save 합니다.

이상으로 설정이 완료되었습니다.

실행

LM Studio를 실행하면 오른쪽의 망치 모양 아이콘에 "mcp/mcp-docker"가 추가되어 있으므로, 이를 활성화합니다.

이 상태에서 AI와 채팅하면, 필요에 따라 PC 내부의 파일을 읽고 써주지만, 접근은 Filesystem에서 지정한 폴더로만 제한됩니다.

채팅 예시)

  • 폴더에 있는 파일을 알려줘

  • 지정한 폴더에 있는 파일을 나열해 줍니다.

  • 100자 정도의 임의의 문장을 작성하여 "test.txt"라는 이름으로 저장해 줘

  • 요청에 따른 파일이 폴더 내에 생성됩니다.

궁금한 점

mcp.json에 다음과 같은 설정이 되어 있습니다.

"env": {
"LOCALAPPDATA": "C:\\Users\\사용자명\\AppData\\Local",
"ProgramData": "C:\\ProgramData",
...

Filesystem의 허용 폴더 목록에는 표시되지 않으므로 (list_allowed_directories를 확인하면 사용자가 지정한 폴더만 나타납니다), 보통은 문제가 없을 것이라고 생각합니다.

하지만 만약 Docker 실행 시 이러한 폴더들이 볼륨 (Volume)으로 마운트되어 있다면, AI가 오작동하는 등의 상황에서 문제가 발생할 수도 있습니다. 만약을 위해 필자는 이러한 설정값들을 유효하지 않은 폴더로 덮어쓰기 하여 사용하고 있습니다.

다른 방법과의 비교

예기치 않은 오삭제에 대한 대책으로는 Docker 샌드박스 (Sandbox) 외에도 "인간의 승인을 필수화하기", "AI에게 자기 검증을 시키기" 등 다양한 수법이 있을 것이라 생각합니다.

Docker 샌드박스 방식의 장점으로는 "경계가 명확하다"는 점을 꼽을 수 있습니다. MCP 서버보다 상위 계층에서 액세스를 제한하고 있기 때문에, 설령 AI가 오작동하여 다른 폴더로의 액세스를 지시하더라도 MCP 서버를 통해서는 액세스할 수 없습니다.

반면, 액세스를 허용한 폴더에 대해서는 오삭제가 발생할 수 있으므로 다른 대책을 실시해야 합니다.

만일의 사태가 발생했을 때, 일반적인 이용 범위에서는 피해 범위를 지정된 폴더 내로 한정할 수 있다는 점은 안심할 수 있는 요소가 됩니다.

수동 구축

다양한 이유로 Docker MCP Catalog를 사용하지 않고 직접 Docker 샌드박스를 구축하고 싶은 경우도 있을 것입니다.

그에 대해서는 별도로 정리하도록 하겠습니다.

확인 환경

항목환경
OSWindows 11 Pro 25H2 (x64)
...

참고 자료

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0