README.md•4.54 kB
# Docker Build MCP TypeScript Server
이 프로젝트는 MCP(modelcontextprotocol) 표준을 완벽히 따르는 Docker Build MCP 서버입니다.
## 주요 특징
- **MCP 표준 완벽 지원**: Cursor, Claude 등 MCP 클라이언트에서 tool discovery/실행 100% 호환
- **도커 이미지 관리 자동화**: build, run, stop, rm, rmi, push 등 도커 CLI의 주요 기능을 API로 제공
- **SSE(Server-Sent Events) 및 stdio 모드 지원**
- **확장성 높은 구조**: 각 도커 명령이 독립적인 tool로 구현되어 유지보수 및 확장 용이
- **실행 명령어 및 결과 로그**: 모든 도커 명령 실행 시 콘솔에 명령어와 결과가 출력됨
## 디렉토리 구조
```
./
├── dist/ # 빌드 결과물
├── node_modules/ # 의존성 모듈
├── src/
│ ├── config/ # 서버 및 도구 설정
│ ├── models/ # 타입/스키마 정의
│ ├── prompts/ # MCP 프롬프트 핸들러
│ ├── resources/ # 리소스 핸들러
│ ├── tools/ # 도커 관련 MCP 도구 (build, run, stop, rm, rmi 등)
│ ├── utils/ # 유틸리티 함수
│ ├── http-server.ts # HTTP 서버 진입점
│ └── index.ts # MCP 서버 진입점
├── tests/ # 테스트 코드
├── package.json # 프로젝트 메타/스크립트
├── tsconfig.json # 타입스크립트 설정
└── vitest.config.ts # 테스트 설정
```
## 주요 기능 및 지원 도구
- **docker_build**: 여러 파일을 context로 받아 Docker 이미지를 빌드
- **docker_run**: 원하는 옵션으로 컨테이너 생성 및 실행
- **docker_ps**: 실행 중/전체 컨테이너 목록 조회 (all 옵션 지원)
- **docker_stop, docker_stop_multi**: 컨테이너(들) 중지
- **docker_rm, docker_rm_multi**: 컨테이너(들) 삭제 (삭제 전 자동 중지)
- **docker_images**: 로컬 이미지 목록 조회
- **docker_rmi, docker_rmi_multi**: 이미지(들) 삭제
- **docker_push**: 태그된 이미지를 레지스트리로 푸시
- **docker_login**: 도커 레지스트리 로그인
- **docker-inspect**: 컨테이너/이미지 상세 정보 조회
- **docker-container-prune, docker-image-prune, docker-network-prune, docker-volume-prune**: 불필요한 리소스 일괄 정리
## 설치 및 실행 방법
1. 의존성 설치
```bash
npm install
```
2. 개발 서버 실행 (SSE 모드)
```bash
ENABLE_UNSAFE_SSE_TRANSPORT=1 npm run dev
```
3. 빌드 및 배포 실행
```bash
npm run build
npm start
```
## 예시: MCP 툴 사용
- MCP 클라이언트에서 tool discovery를 통해 위 도구들을 자동 인식/실행 가능
- 각 도구는 child_process로 docker CLI를 직접 호출하여 실제 도커 환경과 동일하게 동작
## 테스트
- `tests/` 디렉토리 내에 각 도구별 테스트 코드 포함
- vitest 기반 테스트 지원
## 기여 및 문의
- 이 프로젝트는 확장/기여를 환영합니다.
- MCP 표준, 도커 자동화, 추가 기능 문의는 언제든 이슈/PR로 남겨주세요.
---
실제 build/push/run 등은 child_process로 docker CLI를 호출합니다.
---
## 🐳 DinD(Docker-in-Docker) 완전 분리형 MCP 서버 실전 배포 가이드
### 1. 최신 이미지 빌드 및 도커허브 푸시
```bash
docker build -t ekdh600/build-mcp:latest .
docker push ekdh600/build-mcp:latest
```
### 2. 최신 코드 git 커밋/푸시
```bash
cd docker-build-mcp-ts
git add .
git commit -m "docs: DinD 구조 및 쿠버네티스 대응 최신화"
git push
```
### 3. DinD 기반 완전 분리형 컨테이너 구동(쿠버네티스 대응)
- **호스트 도커 소켓 마운트 없이, 내부 dockerd만 사용**
- 쿠버네티스 환경에서도 동일하게 동작
```bash
docker run --privileged --name build-mcp -d -p 3000:3000 ekdh600/build-mcp:latest
```
- 내부 dockerd가 자동으로 기동되고 MCP 서버가 0.0.0.0:3000에서 listen
- MCP 툴(docker_ps, docker_run 등)은 컨테이너 내부 도커 환경만 제어(호스트와 완전 분리)
- 커서/클라우드/쿠버네티스 환경에서도 동일하게 MCP 서버로 등록하여 사용 가능
### 4. MCP 툴 실전 사용 예시(커서/클라우드)
- MCP 서버 주소: `http://<호스트IP>:3000`
- 커서에서 MCP 서버 등록 후 docker_ps, docker_run 등 사용
- 생성/조회되는 컨테이너는 모두 DinD 내부 환경에만 존재
---