Run Multiple MCP Servers with Docker and Windsurf

여러 MCP 서버를 Docker 및 Windsurf로 실행하기

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

Docker와 MCP(Machine Context Protocol) 서버를 사용하여 모델 실행, LAN 공유, 프록시 설정을 필요한 백엔드 개발자 및 DevOps 엔지니어

난이도: 중급 (Docker 기본 지식 필요)

핵심 요약

  • MCP 서버 유형:
  • Local / stdio: Docker로 쉽게 실행 (예: docker run ghcr.io/github/github-mcp-server)
  • Remote / SSE: HTTP(S)로 접근 가능 (예: supergateway로 브리징)
  • 보안 관리:
  • --env-file 또는 .env 파일 사용, GITHUB_PERSONAL_ACCESS_TOKEN 직접 입력 금지
  • 도구 활용:
  • supergateway: 로컬 Docker 서버를 SSE로 노출
  • Smithery.ai: MCP 서버 및 플러그인의 디렉토리 및 CLI 관리

섹션별 세부 요약

1. MCP 서버 유형 및 설정

  • Local / stdio:
  • GitHub MCP 서버: docker run ghcr.io/github/github-mcp-server 명령어로 실행
  • --rm 옵션으로 컨테이너 자동 종료
  • Remote / SSE:
  • supergatewaystdio 서버를 /sse 경로로 노출 (예: --ssePath /sse)
  • npx를 사용한 서버 실행 (예: npx -y @upstash/context7-mcp)

2. 보안 및 환경 설정

  • 토큰 관리:
  • docker run 명령어에 직접 토큰 입력은 위험 → .env 파일 또는 --env-file 사용
  • export GITHUB_PERSONAL_ACCESS_TOKEN=…으로 환경 변수 설정
  • Windsurf 설정:
  • mcp_config.json에 서버 URL 및 포트 설정 (예: "serverUrl": "http://localhost:9000")

3. 도구 및 플랫폼 활용

  • supergateway:
  • 로컬 Docker 서버를 LAN 또는 공유 서버로 연결 (예: --port 8000, --ssePath /sse)
  • 파일 시스템 MCP: -v $(pwd):/projects:ro로 로컬 디렉토리 마운트
  • Smithery.ai:
  • MCP 서버/플러그인 설치 및 관리 (예: npx -y @smithery/cli install mcp-proxy)
  • CLI로 클라이언트(예: Claude, Windsurf)에 직접 설치

4. macOS 및 네트워크 문제 해결

  • 네트워크 샌드박스:
  • macOS에서 localhost 외 IP 접근 시 "no route to host" 오류 발생 → socat 사용 (예: socat TCP-LISTEN:9000 TCP:192.168.1.95:8010)
  • Windsurf 설정:
  • --no-sandbox 옵션으로 샌드박스 우회 (Linux 지원)

결론

  • 보안을 위해 .env 파일 또는 --env-file 사용, GITHUB_PERSONAL_ACCESS_TOKEN 직접 입력 금지
  • macOS에서 socat으로 LAN 서버와의 연결 문제 해결
  • Smithery.ai를 통해 MCP 서버 및 플러그인을 쉽게 설치, 관리 가능 (예: npx -y @smithery/cli install mcp-proxy)