10. MCP 환경 점검

→ inventory_reader 계정으로 MySQL MCP를 등록하고, Claude Code와 Python 소스 코드의 DB 접근 경로 차이를 확인합니다.

더보기

10.1 Claude CodePython 프로그램의 DB 접근 경로 구분하기

 

이번 과정에서 MySQL에 접근하는 주요 경로는 다음과 같습니다.

Claude Code
  → MySQL MCP 서버
  → inventory_reader
  → MySQL

Python 실행 하니스
  → MySQL Driver
  → inventory_operator
  → MySQL

PySide6 애플리케이션
  → MySQL Driver
  → inventory_app
  → MySQL

 

구분 사용하는 목적 연결 계정 이번 강의
MySQL MCP Claude Code가 스키마와 데이터를 조회하고 SQL 초안을 검증 inventory_reader 연결하고 조회·차단 검증
Python 실행 하니스의 Driver 승인된 DB 변경을 반복 가능한 코드로 실행 inventory_operator 계정만 준비
PySide6 앱의 Driver 앱 실행 중 조회와 승인된 기능 수행 inventory_app 읽기 전용 계정만 준비

MCP는 Claude Code가 외부 DB 도구를 사용하기 위한 연결 방식입니다. Python 프로그램의 소스 코드가 MySQL에 연결할 때는 MCP가 아니라 MySQL Driver를 사용합니다. 1강에서는 계정과 연결 경로의 대응 관계까지만 확인합니다. 어떤 작업을 MCP, 실행 하니스, 앱 중 어디에서 수행할지 판단하는 기준은 3강에서 자세히 다룹니다.

 

 

 

10.2 MCP 연결 전에 inventory_reader 직접 접속 다시 확인하기

 

MCP 문제와 DB 계정 문제를 분리하기 위해 inventory_reader로 먼저 직접 접속합니다.

mysql \
  -h 127.0.0.1 \
  -u inventory_reader \
  -p \
  inventory

 

MySQL 입력창에서 기준 건수를 확인합니다.

[화면 캡처: inventory_reader로 접속해 세 테이블 건수를 확인한 화면]
SELECT COUNT(*) AS products_count
FROM products;

SELECT COUNT(*) AS stock_logs_count
FROM stock_logs;

SELECT COUNT(*) AS operation_requests_count
FROM operation_requests;

 

기대 결과는 8 / 16 / 0입니다. 이 단계가 성공하면 이후 MCP 연결 오류가 발생했을 때 DB와 계정 자체는 정상이고 MCP 설정을 확인해야 한다고 판단할 수 있습니다.

 

11. Claude Code에 읽기 전용 MySQL MCP 연결

→ inventory_reader 계정으로 MySQL MCP를 등록하고, Claude Code와 Python 소스 코드의 DB 접근 경로 차이를 확인합니다.

더보기

11.1 MCP 설정 범위 선택하기

 

Claude Code의 MCP 등록 범위는 다음과 같습니다.

범위 적용 위치 공유 여부 이번 강의
local 현재 프로젝트의 개인 설정 공유하지 않음 사용
project 현재 프로젝트의 .mcp.json 프로젝트 구성원과 공유 사용하지 않음
user 사용자 전체 프로젝트 개인 환경 전체에 적용 사용하지 않음

이번 MCP 설정에는 DB 접속 정보가 포함되므로 현재 프로젝트에서만 사용하는 local 범위를 선택합니다.

 

 

 

11.2 읽기 전용 MySQL MCP 등록하기

 

다음 명령은 @benborla29/mcp-server-mysql을 사용하는 구현안입니다. 터미널에서 CHANGE_ME_READER_PASSWORDinventory_reader의 수업용 비밀번호로 바꿔 실행합니다.

[화면 캡처: claude mcp add 명령 실행 후 등록 완료 메시지가 표시된 터미널 화면]
claude mcp add \
  --transport stdio \
  --env MYSQL_HOST=127.0.0.1 \
  --env MYSQL_PORT=3306 \
  --env MYSQL_USER=inventory_reader \
  --env MYSQL_PASS=CHANGE_ME_READER_PASSWORD \ -- ✏️ inventory_reader 비밀번호 입력
  --env MYSQL_DB=inventory \
  --env ALLOW_INSERT_OPERATION=false \
  --env ALLOW_UPDATE_OPERATION=false \
  --env ALLOW_DELETE_OPERATION=false \
  --env ALLOW_DDL_OPERATION=false \
  --scope local \
  mysql-inventory \
  -- npx -y @benborla29/mcp-server-mysql

 

이 설정에는 두 개의 읽기 전용 제한이 적용됩니다.

 

제한 위치 적용 내용
MySQL 계정 권한 inventory_readerSELECT만 허용
MCP 서버 설정 INSERT, UPDATE, DELETE, DDL 비활성화
⚠ 주의: 등록시 / 백슬러시 앞뒤로 공백이 입력되면 MCP 등록 거부됩니다.

⚠ 주의: 이 MCP 서버는 Anthropic 공식 패키지가 아닌 공개 저장소 구현입니다. 수업용 로컬 DB와 읽기 전용 계정으로만 사용합니다. 비밀번호가 명령 기록과 로컬 MCP 설정에 남을 수 있으므로 화면을 캡처하거나 과제를 제출할 때 접속 정보가 보이지 않게 하고, 수업 후 계정을 삭제하거나 비밀번호를 변경합니다.

✔ 확인 기준: mysql-inventory가 local 범위로 등록되고, 연결 계정이 inventory_reader입니다.

 

 

 

11.3 MCP 등록 정보와 연결 상태 확인하기

 

터미널에서 등록 정보를 확인합니다.

[화면 캡처: claude mcp list와 claude mcp get 실행 결과 화면]
claude mcp list
claude mcp get mysql-inventory

💡 팁: 하단에 연결된 MCP 제거 명령이 있습니다. 문제가 생기면 MCP 제거 후 다시 연결하세요.

 

 

 

프로젝트 폴더에서 Claude Code를 시작합니다.

claude

 

Claude Code 대화 입력창에서 다음 명령을 실행합니다.

[화면 캡처: /mcp 실행 결과에서 mysql-inventory 연결 상태와 도구 목록이 보이는 화면]
/mcp

 

첫 실행에서는 npx가 MCP 서버 패키지를 내려받으므로 시간이 걸릴 수 있습니다.

 

 

 

이 단계에서 작성된 내용은 inventory DB 테이블과 Data 입니다.

inventory-mysql-app/  # ✅ 프로젝트 구조 생성
├── db/
│   ├── schema.sql    # ✅ 테이블 설계
│   └── roles.sql     # ✅ 계정 설계
├── harness/          # ✅ (빈 폴더)
└── app/              # ✅ (빈 폴더)

inventory DB                     # ✅ DB 구현
├── products                 8건 # ✅ 테이블과 데이터 구현 
├── stock_logs              16건 # ✅ 테이블과 데이터 구현
└── operation_requests       0건 # ✅ 테이블과 데이터 구현

DB 접근 경로와 계정
├── Claude Code MCP  ───── inventory_reader   # ☑️ ✏️ 계정 구현 + MCP 연동
├── Python 하니스    ───── inventory_operator  # ✅ 계정만 구현 + 연동X
└── PySide6 앱       ───── inventory_app       # ✅ 계정만 구현 + 연동X

 

  

▶ 지금 해보세요

  1. Claude Code, Python 실행 하니스, PySide6 앱의 DB 접근 경로를 계정과 연결합니다.
  2. inventory_reader 직접 접속에서 8 / 16 / 0을 확인합니다.
  3. local 범위로 mysql-inventory MCP 서버를 등록합니다.
  4. claude mcp list, claude mcp get, /mcp로 상태를 확인합니다.

✔ 확인 기준: MCP와 Python 소스 코드의 DB 접근 경로를 구분할 수 있고, mysql-inventory가 현재 프로젝트의 local 범위에 등록되었으며, 연결 상태가 정상으로 표시되고 MySQL 조회 도구가 Claude Code에 표시되며, MCP 연결 계정이 inventory_reader입니다.