Model Context Protocol Use Cases 1: Docker

이전 글에서 MCP가 어떤 개념이고 왜 사용하는지에 대해 알아봤습니다.
이번 글에서는 MCP의 구체적인 use case에 대해 알아봅시다. 특히 Docker와 MCP를 결합하여 개발 생산성을 높일 수 있는지를 중점적으로 보겠습니다.
Docker
이번 글에서는 Docker를 사용합니다.
따라서 Docker에 대한 기초 지식이 필요합니다. 하지만 기초 지식이 없다고 해도 글 전체를 읽어가면서 이런식으로 사용될 수도 있겠구나 라는 대략적인 감은 잡을 수 있습니다.
또한 로컬 컴퓨터에 Docker와 Docker Desktop이 설치되어 있어야 합니다.
Docker.com에서 OS에 맞는 설치 파일을 다운로드 받아서 설치하시기 바랍니다.
MCP server docker
Docker와 MCP server를 결합한 시도는 꽤 많이 있습니다. 그 중에서 제가 흥미롭게 사용해본 것이 바로 mcp-server-docker 입니다.
이 MCP server를 활용하면 자연어 기반으로 여러가지 Docker 관련 작업들을 할 수 있습니다. 어떤 Docker 작업을 자연어로 할 수 있는지 실제로 MCP server docker를 설치해서 사용해보겠습니다.
- Github repo를 로컬에 clone 합니다.
git clone https://github.com/ckreiling/mcp-server-docker
- clone한 디렉토리로 진입한 후에 Docker build 명령어를 실행합니다
docker build -t mcp-server-docker .
mcp-server-docker
라는 이름의 docker image가 빌드되었을 것입니다
- MCP client로서 Claude desktop을 사용할 것이기 때문에
claude_desktop_config.json
파일에 아래 내용을 추가합니다
{
"mcpServers": {
"mcp-server-docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/var/run/docker.sock:/var/run/docker.sock",
"mcp-server-docker:latest"
]
}
}
}
- Claude desktop을 실행시킵니다. 만약 기존에 실행중이었다면 종료 후에 다시 시작해야 합니다.
여기까지 설정이 잘 완료되었다면 Claude desktop에서 총 19개의 Tool을 볼 수 있습니다.

자, 모든 설정이 끝났습니다. 이제 자연어로 Docker 작업을 해봅시다. 몇가지 예제를 통해 실제 사례에 대해 감을 잡아봅시다.
예제 시나리오 1: 로컬에 redis 서버를 실행하는데 Alpine Linux 기반의 7점대 버전을 사용해야 하는 경우
Let's start a Redis server. It should be version 7 based on Alpine Linux.

- 총 3개의 Tool이 사용됩니다. (
pull_image
,run_container
,start_container
)

- redis-server container가 의도한 버전으로 실행중인 것을 확인할 수 있습니다.
예제 시나리오 2: 로컬에 Wordpress를 실행해야 하는 상황. 이 때 DB로 MySQL을 연결 해야 하고 Wordpress는 9000번 포트를 사용
deploy a WordPress container and a supporting MySQL container, exposing Wordpress on port 9000
이번에는 영상으로 녹화해봤습니다. 결과를 확인해보시죠.
- 영상 초반부를 보면 왼쪽에 Claude desktop이, 오른쪽에 Docker desktop이 실행중입니다
- claude_desktop_config.json 파일 설정에 따라서
mcp-server-docker
이미지가 실행된 것을 볼 수 있습니다
- claude_desktop_config.json 파일 설정에 따라서
- 채팅창에 위 자연어 문장을 입력하고 엔터를 누르면 Claude에 등록된 MCP server(이 경우엔 mcp-server-docker)의 Tool 중에 적절한 것들을 선택하여 호출합니다
- 가장 첫번째로
create_network
tool을 호출합니다. 이것은 WordPress와 MySQL을 연결시키기 위한 docker network을 만드는 작업입니다.wordpress-network
이 생성됩니다 - 그 다음으로 mysql:8.0 이미지를 통해
wordpress-db
container를 만들고 실행합니다. 이 때 방금 전 만들었던 wordpress-network을 사용합니다 - 그리고는 wordpress:latest 이미지를 통해
wordpress
container를 만들고 실행합니다. 역시 마찬가지로 wordpress-network을 사용합니다
- 가장 첫번째로
- 모든 MCP server 호출이 끝나고 나면 Claude는 친절하게도 테스트하는 방법까지 알려줍니다 (영상의 44초)
- 브라우저를 열어 http://localhost:9000 에 접속하면 Wordpress 설정 페이지를 볼 수 있습니다
여기까지 잘 따라오셨나요?
자연어로 Docker 작업을 한다는 것이 어떤 것인지 감을 잡으셨나요? 이 프로젝트의 공식 Github repo를 보면 총 19개의 Tool을 지원합니다(2025년 3월 말 기준). 이 글에서 제시한 2가지 예제뿐만 아니라 더 다양한 상황에도 적용해볼 수 있을 듯 합니다.
Docker desktop extension
이번에는 Docker에서 공식으로 지원하는 labs-ai-tools-for-devs
라는 프로젝트를 살펴보겠습니다. 공식 Github 주소는 이곳 입니다.
방금 전의 MCP server docker
가 Container를 실행하는 등의 Docker 작업 자체를 도와주는 MCP server 였다면 이번 labs-ai-tools-for-devs
는 Docker를 매개로 하여 다른 여러가지 작업을 자연어로 할 수 있게 해주는 프로젝트입니다.
기술 문서인 이 곳을 보면 좀 더 명확한 설명이 나와있습니다.
The mcp/docker container is an mcp server that can be extended with new container-based tools, and prompts. Existing containers, like curl or ffmpeg, can now be exposed as MCP servers without having to wrap each tool in an mcp server.
즉, 기존에 존재하는 각종 도구들(curl, ffmpeg)을 MCP server로 만들기 위해서는 특별한 wrapper가 필요했지만 이 프로젝트를 통해 그렇게 할 필요 없이 곧바로 MCP server로 만들 수 있다는 의미입니다.
Docker가 가진 장점은 이미 수많은 개발자들이 만들어놓은 (그리고 앞으로도 만들) 온갖 종류의 프로그램일 것입니다. 이것들을 모두 MCP server로 만들고 LLM에 연결시킬 수 있다면 어떨까요? 이 프로젝트가 존재하는 이유가 바로 이것이라고 할 수 있겠습니다.
그러면 이제, 직접 설치하고 사용해보겠습니다
- 가장 먼저 Docker desktop extension을 설치해야 합니다.

- 이 링크 Docker Labs AI Tools for Devs를 클릭하여 설치하세요

- Docker desktop의 Extensions > Manage 메뉴에 방금 설치한 extension이 제대로 보이면 설치가 성공적으로 끝난 것입니다
- 그 다음으로 방금 설치한 extension과 Claude desktop을 연결시켜야 합니다

AI Tool Catalog
를 클릭하고 조금 기다리면 위 이미지와 같은 페이지가 나올텐데요. 여기서 오른쪽에 있는 톱니바퀴를 클릭하세요

- MCP Clients 메뉴에서
Claude Desktop
항목에 있는Connect
버튼을 클릭하세요

- Connect 버튼 클릭 후 조금 기다리면
CONNECTED
로 상태가 변경됩니다 - 이 작업은 claude_desktop_config.json 파일을 자동으로 수정합니다
여기까지 문제없이 진행되었다면 설치 및 설정은 모두 완료된 것입니다. 자, 그러면 이제 테스트를 해봅시다. 2가지 예제 시나리오를 통해 어떤 방식으로 사용될 수 있는지 구체적으로 알아볼 것입니다.
예제 시나리오 1: 특정 기술 문서 웹 페이지를 요약해야 하는 상황.
우리가 지금 테스트 해보고 있는 프로젝트의 공식 Github의 README.md 웹 페이지를 요약해보려고 합니다. 일단 Tool 없이 오로지 순수하게 Claude에게 자연어로 질의하는 경우 어떻게 되는지 봅시다.

- 아무런 Tool이 없는 상태에서는 웹 페이지에 접속할 수 없기 때문에 Claude는 답변을 거부합니다
- 이것은 Claude 라는 LLM 자체로는 웹 페이지에 접속할 수 있는 방법이 없기 때문입니다
그러면 이제 Tool을 사용했을 때는 어떻게 되는지 보겠습니다.

- Docker desktop의
Tool Catalog
메뉴를 보면 수십가지의 Tool이 등록되어 있습니다. 일단 여기서Curl
를 활성화해서 사용해보겠습니다. 토글 버튼을 클릭하세요

- Claude desktop을 실행하면 2개의 Tool이 등록된 것을 확인할 수 있습니다.
curl
,curl-manual
입니다.

- 동일한 자연어 질의를 하게 되면, Claude는
curl
tool을 활용하여 해당 웹 페이지 문서를 읽어온 후에 요약문을 출력합니다 - 긴 문서를 요약할 수 있을 뿐만 아니라, 문서 기반의 Q&A도 가능해집니다
- 하나의 웹 페이지 뿐만 아니라 여러 개의 웹 페이지를 읽어와서 비교하여 공통점과 차이점을 찾아 분석하는 작업도 가능합니다
이 예제를 통해 웹 페이지 기술 문서를 쉽게 읽을 수 있게 되었습니다. 또한 영문으로 된 문서를 한국어나 일본어로 바로 번역하는 것도 가능하기 때문에 기술 문서를 읽고 이해하는 데 소요되는 시간을 크게 줄일 수 있게 됩니다.
그러면 이제 다음 시나리오로 넘어가보겠습니다
예제 시나리오 2: 로컬 또는 원격 Database에 접속하여 테이블 정보를 조회하고 성능 분석 수행
개발자로서 빈번하게 맞이하는 상황입니다. 주로 IDE(IntelliJ, Visual Code)의 Database 접속 extension을 활용하여 어떤 테이블이 있는지 그리고 스키마는 어떻게 되는지 확인하게 됩니다. 이 작업을 Claude + MCP server(Tool) 조합으로 할 수 있는지 확인해봅시다.

Tool Catalog
메뉴에서postgres
로 검색해보면 2개 Tool을 볼 수 있습니다. 여기서Postgres
를 활성화 합니다

- Claude desktop을 재시작하게 되면 총 22개의 postgres 관련 Tool을 볼 수 있습니다

- Supabase에서 운영 중인 PostgreSQL DB 경로를 알려주고 전체 테이블 스키마를 출력해달라고 요청했습니다
- Claude desktop은
get_schema_info
Tool을 활용하여 총 5개 테이블의 스키마를 정리해서 출력합니다
테이블 스키마를 확인했으니 성능 분석을 해보면 좋을 것 같습니다. (Let's analyze the above tables from a performance perspective.
)


- 하나의 대화 세션에서 계속 대화를 진행하는 것이기 때문에 Claude는 이미 DB 정보를 알고 있습니다. 그래서 동일한 DB에 대한 성능 분석을 진행합니다
- Claude는 이번에
monitor_database
라는 Tool을 통해 테이블과 DB의 성능 분석을 수행합니다 - 어떤 postgres 명령어를 수행해야 하는지, 그리고 명령어 수행 결과를 어떻게 해석해야 하는지를 개발자 입장에서 고민할 필요가 없어졌습니다. 개발자는 단지 텍스트를 읽고 이해하면 됩니다
지금까지 curl
과 postgres
를 사용해봤습니다.
curl과 postgres 각각 모두 docker image를 기반으로 하여 labs-ai-tools-for-devs
를 통해 사용합니다.
이 프로젝트를 통해 내가 직접 Tool을 만들어서 등록할 수도 있습니다. 프로젝트가 아직 초기 단계이기 때문에 현재까지 등록된 33개의 Tool만 사용해볼 수 있습니다. 아마도 시간이 지나면서 더 많은 Tool 들이 등록될 것이라 예상합니다.
Docker와 MCP server를 활용한 실제 사례에 대해 살펴봤습니다. 특히 개발자 관점에서 Docker를 2가지 서로 다른 방식으로 활용할 수 있었습니다.
- Docker 작업 자체를 자연어로 할 수 있음
- Docker image를 활용하여 다른 일반적인 작업을 자연어로 할 수 있음
다음 글에서는 Cursor IDE와 MCP server를 결합하여 개발 생산성을 높일 수 있는 방법에 대해 공유할 예정입니다.
그러면 끝까지 읽어주셔서 감사합니다!
Comments (0)
Checking login status...
No comments yet. Be the first to comment!