CodexPro: 허용한 저장소만 ChatGPT에 열어 주는 로컬 MCP 서버 (≠ 사용량 우회 도구)

CodexPro 소개

ChatGPT 웹 화면에서 코드를 다루려면 보통 파일을 붙여 넣고, 답을 받아 다시 편집기에 옮기고, 결과를 확인해 또 붙여 넣는 왕복이 생깁니다. 저장소가 조금만 커져도 어떤 파일을 얼마나 붙여 넣어야 하는지부터 판단이 어려워지고, 대화가 길어지면 앞서 붙인 내용과 지금 디스크에 있는 내용이 어긋나기 시작합니다. 모델 컨텍스트 프로토콜(MCP, Model Context Protocol)이 이러한 왕복을 줄이는 표준으로 자리를 잡았지만, 이번에는 반대 방향의 걱정이 생깁니다. 모델에게 내 디스크를 열어 주는 순간, 어디까지 열렸는지를 내가 알 수 있어야 합니다.

CodexPro는 그 경계를 사용자가 미리 정해 두는 방식으로 접근한 로컬 MCP 서버입니다. 내 컴퓨터에서 프로세스를 하나 띄우고, 명시적으로 허용한 저장소 경로만 ChatGPT 세션에 노출합니다. 허용된 뿌리 경로 밖으로 나가려는 접근은 경로 해석 단계에서 거부되고, 심볼릭 링크를 타고 나가는 경로와 차단 글롭(glob)에 걸리는 경로도 함께 막힙니다. 그 안에서 ChatGPT는 파일을 읽고 검색하고 편집하고, 허용 목록에 있는 검사 명령을 실행하고, 변경 사항의 diff를 확인하고, 인계용 계획 문서를 씁니다.

이름 때문에 오해하기 쉬운 부분을 프로젝트가 먼저 밝혀 두었습니다. CodexPro는 호스팅 SaaS 제품도, 모델 프록시도, 사용량 우회 도구도, 계정 풀도, 원격 셸 서비스도 아닙니다. 저장소의 SECURITY.md는 ChatGPT와 Codex와 OpenAI, 그리고 연결하는 서드파티 모델 제공자의 한도와 약관을 우회하거나 모아 쓰거나 재판매하도록 설계되지 않았다고 명시하면서, 사용자가 각자 자기 ChatGPT 계정을 연결해 그 계정에 허용된 제품 표면만 쓰라고 권고하고 있습니다. 이 프로젝트는 MCP 규격을 따르는 서버이고, 모델을 대신 호출해 주는 중개자가 아닙니다.

CodexPro 설치와 ChatGPT 연결

설치에는 Node.js 20 이상, 커스텀 MCP 플러그인을 만들 수 있는 ChatGPT 계정, 그리고 ChatGPT 웹에서 내 컴퓨터로 닿을 HTTPS 주소가 필요합니다. 설치 자체는 전역 npm 패키지 하나입니다:

npm install -g codexpro
cd /path/to/your/repo
codexpro setup

codexpro setup 이 만들어 주는 서버 URL을 ChatGPT의 플러그인 설정에 넣으면 연결이 끝납니다. 프로젝트가 안내하는 절차는 개발자 모드를 켜고 플러그인을 새로 만드는 순서입니다:

설정 -> 보안 및 로그인 에서 개발자 모드를 켜되 콘텐츠 보안 정책(CSP, Content Security Policy) 적용은 그대로 두고, 설정 -> 플러그인 에서 CodexPro 라는 이름의 플러그인을 만든 뒤 서버 URL을 붙여 넣습니다. 인증 방식은 없음으로 지정하는데, 폼이 기본으로 OAuth를 고르는 경우가 있어 이 부분만 바꿔 주면 됩니다. CodexPro의 인증은 그 URL 안에 이미 들어 있는 토큰이므로, URL 자체를 공유하지 말라는 것이 프로젝트의 안내입니다. 이후 같은 저장소에서 매일 쓸 때는 codexpro start 한 줄로 끝나고, 플러그인 생성이 실패하면 codexpro connection-test 로 ChatGPT의 요청이 로컬 서버까지 닿는지 확인할 수 있습니다.

ChatGPT 웹은 HTTPS 주소를 요구하므로 터널 방식을 골라야 합니다. 프로젝트는 데모용으로 매번 주소가 바뀌는 Cloudflare 빠른 터널, 고정 호스트명을 쓰는 ngrok과 Tailscale, 그리고 터널 없이 로컬만 쓰는 선택지를 함께 제공합니다:

codexpro start --tunnel cloudflare          # quick demo URL (changes)
codexpro ngrok --hostname your.ngrok-free.dev
codexpro stable --hostname codexpro.example.com --tunnel-name codexpro
codexpro tailscale --hostname your-device.your-tailnet.ts.net
codexpro start --tunnel none                # local only

고정 호스트명을 쓸 때는 토큰도 고정해 두는 것이 편하고, 프로젝트는 openssl 로 32바이트를 생성해 권한 600으로 저장하는 방법을 안내합니다. MCP 클라이언트가 헤더를 지원한다면 URL 질의 문자열보다 Authorization: Bearer <token> 쪽을 권장하며, ?codexpro_token= 형태는 호환성을 위한 대체 수단으로 남겨 두었습니다.

CodexPro가 ChatGPT에 허용하는 작업

워크스페이스 쓰기 모드에서 ChatGPT가 할 수 있는 일은 저장소 읽기와 검색, write 와 edit 와 가드가 붙은 apply_patch 를 통한 편집, import_file 로 ChatGPT 첨부 파일 가져오기, 허용 목록에 있는 검사 명령의 bash 실행, show_changes 로 diff 검토, .ai-bridge 아래에 계획 문서 쓰기, 그리고 도구를 호출할 수 없는 대화를 위한 컨텍스트 묶음 내보내기입니다.

노출 범위는 모드로 조절합니다. --no-bash 는 셸을 통째로 끄고, --tool-mode minimal 과 full 은 도구 집합의 폭을 정하며, --mode handoff 와 --mode pro 는 일반적인 쓰기 도구를 아예 광고하지 않고 .ai-bridge 파일만 쓰는 제한된 인계 도구로 바꿉니다. --headless 는 브라우저 온보딩 없이 띄우는 모드입니다. 저장소를 여러 개 허용해 하나의 프로세스로 운영할 수도 있습니다:

codexpro settings set --project ~/code/web --project ~/code/api
codexpro settings show
codexpro start

이렇게 등록하면 ChatGPT에게 허용된 프로젝트 중 하나를 open_workspace 로 열게 하고, open_current_workspace 로 처음 띄운 저장소로 돌아오게 할 수 있습니다. ChatGPT 계정이 둘이거나 완전한 격리가 필요하면 포트와 서버 URL을 달리해 프로세스를 두 개 띄우라는 것이 프로젝트의 안내입니다.

CodexPro의 안전 기본값

로컬 디스크를 여는 도구이므로 기본값이 어디에 맞춰져 있는지가 도입 판단의 핵심입니다. 프로젝트가 밝힌 기본값은 공개 터널에는 최소 24바이트의 CodexPro HTTP 토큰이 반드시 필요하고, 쓰기 도구는 쓰기 모드가 workspace 가 아니면 광고 자체가 되지 않으며, bash 는 안전 모드가 기본이고, .env 와 키 파일과 .git 과 빌드 캐시 같은 경로는 차단 목록에 들어간다는 것입니다. 첨부 파일 가져오기는 승인된 HTTPS 출처에서 온 ChatGPT Apps SDK 파일 객체만 받고, 모델이 임의로 만들어 낸 URL은 받지 않습니다.

SECURITY.md 는 여기서 한 걸음 더 나아가 실패 모드와 기대되는 통제를 표로 짝지어 두었습니다. 유지보수자가 릴리즈 전에 점검하는 항목이라 도입하는 쪽에서도 그대로 검토 목록으로 쓸 수 있습니다. 몇 가지를 옮기면 다음과 같습니다:

실패 모드 기대되는 통제
공개 터널이 비밀 없이 닿음 토큰이 없으면 공개 및 비루프백 HTTP는 실패로 닫힘
ChatGPT가 의도한 저장소 밖을 고침 허용 뿌리는 명시적이고, 경로 이탈과 차단 글롭, 그리고 심볼릭 링크를 따라 밖으로 나가는 접근을 거부
ChatGPT가 기본 상태에서 임의 셸을 실행 bash 는 안전 모드가 기본이고 끌 수 있으며, 전체 모드는 신뢰된 로컬 전용 선택
공개 토큰을 반복 추측 24바이트 미만 토큰을 거부하고 클라이언트 주소별로 실패 시도를 제한
URL 토큰이 브라우저 기록에 남음 온보딩이 토큰 파라미터를 URL에서 제거하고 no-store 및 no-referrer 헤더를 보냄
시간 초과된 bash 의 자식 프로세스가 남음 POSIX는 전용 프로세스 그룹, Windows는 taskkill /t 로 프로세스 트리를 종료

안전 모드라도 저장소의 패키지 스크립트는 실행할 수 있으므로 신뢰하지 않는 저장소에는 --no-bash 를 쓰라는 단서를 함께 적어 두었습니다. 프로젝트가 꼽은 가장 큰 위험 두 가지는 신뢰하지 않는 MCP 클라이언트를 연결하는 것과 인증 없이 공개 터널로 서버를 노출하는 것입니다.

비슷한 문제를 다루는 다른 프로젝트와 비교

ChatGPT를 로컬 코드에 붙이는 문제는 PyTorchKR에서도 여러 번 다뤄졌고, 접근 방식이 서로 다릅니다. DevSpace (:pytorch::kr: DevSpace: ChatGPT를 내 컴퓨터의 로컬 코드에 연결하는 자체 호스팅 MCP 서버)는 같은 자리를 자체 호스팅 MCP 서버로 채우고, OpenAI가 직접 내놓은 Secure MCP Tunnel (:pytorch::kr: OpenAI Secure MCP Tunnel: 사설 MCP 서버를 공개하지 않고 ChatGPT와 Codex에 연결하는 프로젝트)은 사설 MCP 서버를 공개 주소 없이 ChatGPT와 Codex에 연결하는 터널 계층을 제공합니다. CodexPro가 이 둘과 다른 지점은 접근 범위를 저장소 뿌리 단위로 사용자가 선언하고, 그 선언을 도구 광고 단계에서부터 반영한다는 점입니다. 쓰기 모드가 아니면 편집 도구가 목록에 아예 나타나지 않으므로, 모델이 쓰기를 시도하고 거부되는 흐름이 생기지 않습니다.

터널 계층만 보면 Secure MCP Tunnel과 역할이 겹치는 부분이 있고, CodexPro도 Cloudflare와 ngrok과 Tailscale을 함께 지원하므로 이미 쓰는 터널이 있다면 그쪽을 유지하면서 CodexPro를 로컬 서버로만 쓰는 조합도 가능합니다.

CodexPro는 누구에게 맞는가

Codex CLI나 Claude Code 같은 터미널 에이전트 대신 ChatGPT 웹 화면에서 대화하는 습관이 굳어 있고, 그 대화에서 저장소를 직접 다루고 싶다면 잘 맞습니다. 특히 저장소를 여러 개 오가며 작업하거나, 신뢰 수준이 다른 저장소를 구분해 열고 싶은 경우에 모드와 허용 목록이 실제로 쓰입니다. 계획만 받아 로컬에서 직접 실행하는 습관이라면 --mode handoff 로 쓰기 도구를 빼고 .ai-bridge 계획 문서만 받는 구성이 안전합니다.

반대로 터미널 코딩 에이전트로 이미 작업 흐름이 굳어 있는 팀에게는 CodexPro가 얻는 것이 적습니다. 이 프로젝트가 메우는 것은 ChatGPT 웹과 로컬 디스크 사이의 간극인데, 그 자리를 이미 로컬 에이전트가 차지하고 있으면 터널과 플러그인 등록이라는 운영 비용만 늘어납니다. 또한 현재 버전은 0.30.0으로 1.0.0 이전이고, 프로젝트는 그 시점까지 보안 수정이 최신 배포 버전만 대상이라고 명시하고 있으므로, 오래된 버전을 고정해 두고 쓰는 운영은 권장되지 않습니다.

CodexPro의 라이선스

CodexPro는 MIT 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:books: CodexPro 문서 사이트

:github: CodexPro 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 초안을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 댓글로 알려주시기를 부탁드립니다. :hugs:

이 도구를 직접 설치해 사용해보셨다면, :pytorch:파이토치 한국 사용자 모임:south_korea: 회원들을 위해 경험이나 팁을 댓글로 남겨주세요! :folded_hands:

저도 사실 개인적으로 4월달 말에 이 프로젝트보다 먼저 비슷한 툴을 깃허브에 풀었습니다. 참고로 제 프로젝트는

이겁니다.
4월달에 만들고 현재 개선을 많이 해놔서 사용하기 편하실 거예요. 설치 할 때 ngrok을 이용하는 방식이라 좀 까다로운데 클라우드플레어 도메인이 있으신분들은 자기 도메인에 연결해서 사용하시면 됩니다.