ChatGPT Remote MCP: 내 PC와 서버를 안전하게 제어하는 셀프호스팅 개발 환경
메뉴

Open Source

ChatGPT Remote MCP: 내 PC와 서버를 안전하게 제어하는 방법

브라우저나 데스크톱 ChatGPT에서 안전한 터널과 OAuth 2.0으로 로컬 및 원격 개발 환경을 직접 다루는 구조를 살펴봅니다.

ChatGPT Remote MCP: 내 PC와 서버를 안전하게 제어하는 방법 hero image
Markdown약 2405 tokens

대화형 AI를 코딩 보조로 활용할 때 가장 아쉬운 순간 중 하나는 모델이 내 실제 작업 환경의 맥락을 모른다는 점입니다. 브라우저 창에서 코드를 복사해 붙여넣고, 수정된 결과를 다시 로컬 편집기에 옮겨 적은 뒤 터미널에서 빌드 에러를 확인하고 다시 프롬프트로 전송하는 흐름은 생산성을 떨어뜨립니다.

이 문제를 풀기 위해 등장한 표준 규격이 Model Context Protocol(MCP)입니다. 하지만 기존의 수많은 MCP 서버는 로컬 데스크톱 애플리케이션 안에서 stdio 기반 프로세스로만 실행되는 경우가 많습니다. 만약 외부에서 노트북으로 작업하거나, 웹 브라우저의 ChatGPT를 사용하거나, 별도의 고성능 데스크톱 워크스테이션을 원격 개발 머신으로 두고 싶다면 어떻게 해야 할까요?

오픈소스 프로젝트 chatgpt-remote-mcp는 바로 이 지점을 해결하기 위해 설계된 셀프호스팅 개발 서버입니다. Windows PC나 Linux 서버에서 Docker Compose로 구동되며, Cloudflare Tunnel과 완전한 OAuth 2.0 인증 체계, 21종의 풍부한 개발 도구, 프로세스 관리 기능을 결합해 원격에서도 안전하게 내 머신을 조작할 수 있도록 돕습니다.

접근 방식접속 가능 위치공유기 포트 개방인증 및 권한 체계백그라운드 프로세스
기존 stdio MCP로컬 데스크톱 앱 내부 한정불필요로컬 프로세스 신뢰단발성 명령 실행 위주
포트포워딩 HTTP MCP어디서나 접속 가능필수 (공인 IP 및 포트 노출)Basic Auth / 단순 키타임아웃 발생 시 단절
chatgpt-remote-mcp웹, 모바일, 어디서나 가능불필요 (아웃바운드 터널)정식 OAuth 2.0 + 승인 키링 버퍼 기반 스트리밍 모니터링

원격 MCP 서버 구축 시 마주치는 세 가지 난제

단순한 HTTP 기반 MCP 서버를 만들어서 로컬 포트로 띄우는 것은 어렵지 않습니다. 하지만 이를 실제 ChatGPT에 연결해 외부에서 쓰려고 하면 곧바로 현실적인 장벽에 부딪힙니다.

첫째는 공인 IP와 포트 개방의 위험입니다. 가정용 인터넷이나 사내망에 있는 PC에 접속하기 위해 공유기 포트를 열거나 DDNS를 설정하는 것은 보안상 큰 위협이 됩니다. 인증되지 않은 스캐너와 악성 봇의 타깃이 되기 쉽습니다.

둘째는 ChatGPT의 엄격한 연결 규격입니다. OpenAI의 커스텀 MCP 연결 인터페이스는 일반 API 키 방식 외에도 안전한 권한 위임을 위한 OAuth 2.0 플로우를 강력하게 요구합니다. 표준적인 토큰 엔드포인트와 인가 엔드포인트를 제대로 갖추지 못하면 ChatGPT 클라이언트 등록 단계에서 거부됩니다.

셋째는 장기 실행 프로세스와 세션 관리입니다. 코딩 작업은 단순한 파일 읽기에서 끝나지 않습니다. 의존성 패키지를 설치하거나, 빌드를 실행하거나, 테스트 러너를 백그라운드에 띄워두고 실시간 출력 로그를 확인해야 합니다. 단순 단발성 명령 실행기(exec)로는 이러한 상호작용을 처리할 수 없습니다.

핵심 아키텍처와 주요 기능

chatgpt-remote-mcp의 구성 요소는 크게 터널 레이어, 역방향 프록시 레이어, 인증 및 MCP 애플리케이션 레이어로 나뉩니다.

  1. subgraph
  2. CG
  3. end
  4. CFT
  5. CFD
  6. NG
  7. APP
  8. FS
  9. PM
핵심 구성 요소기술 스택주요 역할 및 보호 수준
엣지 터널Cloudflare Tunnel (cloudflared)포트 개방 없는 양방향 암호화 터널, DDoS 차단
경계 프록시Nginx Reverse Proxy클라이언트 원본 IP 정규화, 헤더 위변조 차단, Rate Limit 집계
인가 프레임워크Express OAuth 2.0 ServerChatGPT 커스텀 MCP 규격 준수, 마스터 승인 키 기반 토큰 발급
도구 실행기21종 MCP Tool Handlers파일 I/O 조작, 배치 읽기, 샌드박스 명령 실행, 링 버퍼 수명주기

1. 포트 개방 없는 Cloudflare Tunnel 연동

서버가 실행되면 내부의 cloudflared 컨테이너가 Cloudflare 엣지 네트워크로 직접 아웃바운드 연결을 맺습니다. 외부에서 들어오는 인바운드 포트를 열 필요가 전혀 없으며, Cloudflare의 고품질 SSL 인증서와 DDoS 방어망을 그대로 누릴 수 있습니다. 사용자는 Zero Trust 대시보드에서 발급받은 터널 토큰만 .env 파일에 기재하면 됩니다.

2. 승인 키 기반의 안전한 OAuth 2.0 서버

chatgpt-remote-mcp는 Express 기반으로 완전한 OAuth 2.0 인가 프레임워크를 내장하고 있습니다. ChatGPT가 /oauth/authorize로 클라이언트 등록 및 승인을 요청하면, 사전에 생성된 마스터 승인 키(Approval Key)가 있어야만 최종 인가 토큰이 발급됩니다.

  • 승인 키 기반 승인: 관리자가 발급한 보안 키를 입력해야 토큰이 발급되므로 임의의 제3자가 내 터널 주소를 알아내도 접속할 수 없습니다.
  • 클라이언트 용량 제한: MCP_OAUTH_MAX_REGISTERED_CLIENTS 기본값(256개)을 두어 메모리 고갈 공격을 방지하고 오래된 미사용 클라이언트를 안전하게 정리합니다.
  • 토큰 라이프사이클: Access Token(1시간)과 Refresh Token(30일) 구조를 채택하여 세션 보안과 편의성을 균형 있게 유지합니다.

3. Nginx 경계와 IP 정규화

컨테이너 내부 전면에는 경량화된 Nginx가 배치되어 있습니다. Cloudflare 엣지에서 전달되는 실제 클라이언트 IP를 신뢰 경계에서 단일 정규화 주소로 캡슐화합니다. 이를 통해 Express 앱 계층에서는 정확한 원본 IP를 기반으로 외부 클라이언트별 Rate Limit을 독립적으로 집계합니다.

4. 21종의 풍부한 도구 세트

chatgpt-remote-mcp는 파일 입출력부터 고급 프로세스 모니터링까지 21종의 세분화된 도구를 제공합니다.

도구 분류제공 도구 이름주요 역할 및 특징
파일 탐색 및 검사list_directory, stat_path, hash_file재귀 디렉토리 탐색, 파일 상세 메타데이터 및 해시 계산
파일 읽기 및 배치read_file, read_files단일 파일 읽기 및 여러 파일을 단일 턴에 묶어 읽는 배치 기능
파일 조작 및 편집write_file, replace_in_file, apply_patch파일 생성, 특정 문자열 치환, 통일 diff 패치 적용
디렉토리 및 관리make_directory, copy_path, move_path, remove_path, chmod_path파일/폴더 이동, 복사, 삭제, 권한 설정
전송 도구upload_file, download_filebase64 인코딩 기반의 안전한 원격 파일 업로드 및 다운로드
명령 실행exec_command, run_script단기 쉘 명령 및 스크립트 파일 실행
프로세스 수명주기write_stdin, read_process, terminate_process, list_processes백그라운드 프로세스 생성, 표준입력 전달, 출력 버퍼 읽기, 강제 종료

특히 read_files는 한 번의 도구 호출로 연관된 여러 소스 파일을 일괄 수집할 수 있어, 모델과 도구 간의 왕복 지연 시간과 토큰 낭비를 획기적으로 줄여줍니다.

5. 장기 실행 프로세스 버퍼 관리

테스트 실행이나 빌드처럼 시간이 오래 걸리는 작업은 단일 타임아웃으로 끊어지면 안 됩니다. chatgpt-remote-mcp의 프로세스 관리자는 프로세스를 비동기로 분리하고 내부 링 버퍼에 표준 출력(stdout)과 표준 에러(stderr)를 차곡차곡 누적합니다. ChatGPT는 read_process 도구로 누적된 로그를 단계별로 읽고, 필요한 경우 write_stdin으로 추가 입력을 보낼 수 있습니다.

5분 만에 끝내는 설치 및 설정 가이드

chatgpt-remote-mcp는 Windows 환경과 PowerShell 7 이상을 기본 타깃으로 최적화된 스크립트를 제공하지만, Docker Compose가 구동되는 리눅스 환경에서도 동일하게 작동합니다.

1단계: 저장소 클론 및 기본 설정

먼저 터미널에서 저장소를 복제합니다.

git clone https://github.com/munlucky/chatgpt-remote-mcp.gitcd chatgpt-remote-mcp

보안 키를 자동으로 생성해 주는 셋업 스크립트를 실행합니다.

.\scripts\setup-keys.ps1

이 스크립트는 .env.example을 기반으로 새 .env 파일을 구성하며, 독립적인 OAuth 승인 키와 내부 헬스 프로브용 비밀 키를 안전한 난수로 생성하여 채워 넣습니다.

2단계: 환경 변수 편집

생성된 .env 파일을 텍스트 편집기로 열어 내 환경에 맞게 값을 수정합니다.

# 공개 도메인 설정 (Cloudflare에 연결된 도메인)PUBLIC_DOMAIN=mcp.yourdomain.com # Cloudflare Zero Trust 대시보드에서 생성한 터널 토큰CLOUDFLARE_TUNNEL_TOKEN=eyJhIjoi... # ChatGPT와 공유할 내 PC의 작업 디렉토리 경로 (Windows 경로 예시)HOST_WORKSPACE_PATH=C:\dev\my-project # 컨테이너 내부 마운트 이름 (기본값 권장)CONTAINER_WORKSPACE_PATH=/workspace

3단계: 사전 검증 및 컨테이너 구동

도커 환경과 파일 경로 설정이 올바른지 진단 스크립트로 확인합니다.

.\scripts\verify-env.ps1

모든 항목이 정상(OK)으로 확인되면 서버를 시작합니다.

.\scripts\start.ps1

PowerShell 스크립트가 Docker Compose 빌드와 실행을 자동으로 수행하며, 컨테이너 헬스체크가 통과할 때까지 상태를 모니터링합니다.

4단계: OAuth 승인 키 확인

ChatGPT와 연동할 때 입력해야 하는 승인 키를 확인합니다.

.\scripts\get-approval-key.ps1

화면에 출력된 키 문자열을 안전한 곳에 복사해 둡니다.

5단계: ChatGPT에서 MCP 연결 등록

이제 ChatGPT에서 내 서버를 등록할 차례입니다.

  1. ChatGPT 웹 또는 데스크톱 앱에서 설정(Settings) 메뉴로 이동합니다.
  2. Developer 또는 Model Context Protocol 설정에서 Add MCP Server를 선택합니다.
  3. 서버 URL에 Cloudflare 터널로 연결된 주소를 입력합니다: https://mcp.yourdomain.com/mcp
  4. 인증 방식에서 OAuth 2.0을 선택하고 안내되는 승인 창에서 앞서 복사한 Approval Key를 입력합니다.
  5. 연결이 완료되면 21개의 도구 목록이 활성화됩니다.

실무 활용 시나리오

실제로 ChatGPT와 대화하면서 어떻게 활용할 수 있는지 몇 가지 구체적인 프롬프트 예를 살펴봅니다.

1. 코드베이스 파악 및 빠른 패치

프롬프트:"현재 작업 디렉토리의 package.json과 src/index.ts 파일을 읽고,Express 라우터에 새로 추가해야 할 /health 엔드포인트를 제안한 뒤 직접 파일에 패치해줘."

ChatGPT는 먼저 read_files 도구를 호출해 두 파일의 내용을 한 번에 읽어옵니다. 그 후 apply_patchreplace_in_file 도구를 사용해 정확한 변경 사항을 로컬 파일에 즉시 반영합니다.

2. 백그라운드 테스트 실행 및 에러 디버깅

프롬프트:"npm test 명령을 백그라운드로 실행하고, 실행된 프로세스의 로그를 확인해서실패한 테스트 케이스가 있는지 분석해줘."

ChatGPT는 exec_command 또는 백그라운드 프로세스 등록을 통해 테스트 러너를 실행하고, 반환된 출력 내용을 토대로 깨진 테스트의 원인을 진단해 줍니다.

3. 일일 사용량 및 감사 로그 확인

관리자는 호스트 터미널에서 간편하게 지난 24시간 동안 실행된 도구 통계를 확인할 수 있습니다.

.\scripts\usage-report.ps1 -Hours 24

이 스크립트는 단순 헬스 프로브 호출을 제외하고, 실제로 모델이 호출한 유의미한 파일 수정, 프로세스 실행 기록만을 깔끔하게 요약해 보여줍니다.

운영 및 보안 체크리스트

원격 환경에 머신을 노출할 때는 항상 최소 권한 원칙을 지켜야 합니다.

  • 마운트 범위 제한: 반드시 해당 작업에 필요한 프로젝트 경로만 바인드 마운트합니다.
  • 토큰 및 환경변수 보호: .env 파일은 절대로 깃 저장소에 커밋되지 않도록 .gitignore에 유지합니다.
  • 승인 키 정기 교체: 필요 시 scripts/setup-keys.ps1을 다시 실행해 승인 키를 갱신할 수 있습니다. 기존 연결된 세션은 즉시 무효화됩니다.
  • 모니터링: 장시간 미사용 시 docker compose down 명령으로 컨테이너를 안전하게 종료합니다.

마치며

chatgpt-remote-mcp는 데스크톱 로컬 프로세스에 갇혀 있던 MCP 도구들을 안전한 웹 및 원격 클라우드 환경으로 확장해 주는 훌륭한 다리입니다. Cloudflare Tunnel의 무포트 터널링과 내장 OAuth 2.0 승인 체계 덕분에, 보안을 해치지 않으면서도 내 PC의 풍부한 개발 도구를 ChatGPT의 두뇌와 결합할 수 있습니다.

원격 개발 환경이나 집 안의 데스크톱을 나만의 프라이빗 AI 코딩 에이전트 인프라로 바꾸고 싶다면, chatgpt-remote-mcp 저장소를 클론해 직접 구동해 보시길 권합니다.

댓글

GitHub 계정으로 로그인하면 댓글을 남길 수 있습니다. 댓글은 GitHub Discussions를 통해 운영됩니다.

TOP