Ubuntu MySQL을 ChatGPT에 연결하기: Python MCP 서버 설치부터 조회·수정·SSH 승인까지

By | 2026년 10월 30일

대상: Ubuntu 24.04 LTS / MySQL 8.x / Python 3.12 / Python MCP SDK v2. 조회뿐 아니라 INSERT·UPDATE·DELETE를 지원하되, 모든 변경은 서버 관리자 SSH 승인 이후에만 실행합니다. 운영 DB에 바로 적용하지 말고 테스트 DB에서 충분히 검증하세요.

1. 구성과 보안 원칙

ChatGPT → Secure MCP Tunnel(HTTPS 443 아웃바운드) → Ubuntu의 Python MCP(127.0.0.1:8000/mcp) → MySQL(127.0.0.1:3306). MySQL 포트는 외부에 공개하지 않습니다. 테이블·컬럼 허용 목록, 단일 행 변경, 5분 만료 승인, 트랜잭션, 중복 실행 방지 로그를 적용합니다.

2. Ubuntu 설치

3. 테스트 MySQL 스키마 및 권한

MySQL 관리자에서 아래 SQL을 실행합니다. 샘플 DB의 계정 비밀번호는 반드시 변경하고, 운영 테이블에는 테이블 단위 GRANT를 따로 설정합니다.

4. 허용 테이블·컬럼 정책

파일 /opt/mysql-mcp/policy.json을 생성합니다. 삭제가 불필요하다면 delete를 false로 유지합니다. 정수형 자동증가 기본키, 단일 행 작업만 지원하는 샘플입니다.

5. 서버 코드: server.py

/opt/mysql-mcp/server.py에 아래 코드를 저장합니다. list_tables, describe_table, list_rows, get_row, prepare_change, apply_change의 6개 도구를 제공합니다.

6. Ubuntu 관리자 승인 코드: approve.py

이 파일은 MCP 도구로 제공하지 않습니다. 관리자가 SSH에서 요청 ID와 변경 전 값을 직접 확인해야 합니다.

7. 환경 파일·권한·systemd

8. 로컬 조회 및 UPDATE 테스트

SDK의 세션/프로토콜 버전에 따라 헤더가 달라질 수 있으므로 MCP Inspector 사용도 권장합니다. 로컬 CLI 테스트 예시는 다음과 같습니다.

UPDATE 예: prepare_change에 {"action":"update","table":"mcp_demo_items","row_id":1,"values":{"price":32000}} 전달 → 반환된 request_id를 기록 → SSH에서 승인 → apply_change(request_id) 호출 → SELECT로 결과 확인.

9. Secure MCP Tunnel · ChatGPT 등록

OpenAI Platform에서 tunnel_id와 Runtime API Key 발급 → tunnel-client 최신 실행 파일 설치 → 다음과 같이 HTTP MCP 프로필을 초기화합니다. tunnel-client CLI 인자는 공식 문서를 최신 기준으로 확인하세요.

ChatGPT → Plugins → + → Add custom MCP server → Connection: Tunnel에서 터널을 선택하고 도구를 확인합니다. 조직별 연결 권한이 필요하며, 2026년 10월 기준 사용자 지정 MCP 쓰기/수정 기능은 Business·Enterprise·Edu에서 베타 제공됩니다. 개인 Plus에서는 동일한 쓰기 연결 기능이 제공된다고 보장할 수 없습니다.

10. 운영 시 주의사항

이 코드는 학습·테스트용 구현 예제이며 실제 서버에서 빌드·통합 검증하지 않았습니다. 운영 반영 전 DB 백업, 개인정보 컬럼 제거, OAuth/워크스페이스 권한 설정, 쿼리 타임아웃·요청 제한, 변경 로그 모니터링, 트리거·외래키 연쇄 작업 확인이 필요합니다. DB 사용자에게 CREATE/ALTER/DROP/GRANT 권한을 주지 마세요.

공식 참고 문서