6강. VS Code 연동

0. 학습 목표
→ 1~5강에서 사용한 터미널 중심의 Claude Code 실행 방식을 VS Code 통합 환경으로 전환하고, 7강부터 이어질 다중 파일 Python 구현을 준비합니다.
0.1 학습 목적과 선수 조건
1~5강에서는 소스코드 에디터, 쉘 프롬프트, MySQL 프롬프트, Claude Code 대화창을 각각 분리된 화면으로 사용했습니다. 이 방식은 SQL 파일 작성과 문서 생성 중심의 1~5강에서는 충분했습니다.
7강부터는 app/db.py, inventory_repository.py, inventory_service.py, 테스트 파일처럼
여러 Python 파일을 동시에 다루고, Claude Code가 만든 코드를 파일 단위로 검토해야 합니다.
이 강의의 목적은 새 기능을 구현하는 것이 아니라, VS Code 안에서 편집기·통합 터미널·Claude Code를 하나의 화면으로 연결하여 이후 강의에서 파일 변경을 놓치지 않고 검토할 수 있는 상태를 만드는 것입니다.
이 강의는 다음 상태에서 시작합니다.
- 5강에서
docs/database의 문서 네 개와CLAUDE.md의 데이터베이스 작업 규칙 일곱 개가 등록되어 있습니다. inventoryDB에products8건,stock_logs16건,operation_requests0건이 존재합니다.- 터미널에서
claude명령으로 Claude Code를 실행하고mysql-inventoryMCP에 연결한 경험이 있습니다. - VS Code가 설치되어 있습니다. 설치되어 있지 않으면 이 강의를 진행하기 전에 먼저 설치합니다.
0.2 진행 순서
실습은 다음 순서로 진행합니다.
5강 실습 상태 확인
↓
VS Code로 프로젝트 열기
↓
VS Code에 연결된 Claude Code로 전환하기
↓
권한 모드 이해하고 선택하기
↓
VS Code에서 변경 내용 검토하기
0.3 이 강의에서 바뀌는 것과 바뀌지 않는 것
| 구분 | 1~5강 | 6강부터 |
| 코드·문서 편집 | 별도의 소스코드 에디터 | VS Code 편집기 |
| 명령 실행 | 별도의 쉘 프롬프트 | VS Code 통합 터미널 |
| Claude Code 실행 위치 | 터미널에서 claude 실행 |
VS Code 사이드바의 Claude Code 세션 |
| 코드 변경 검토 | 채팅 응답의 텍스트로 확인 | VS Code의 변경 전후 diff 화면으로 확인 |
| MySQL 접속 | mysql> 프롬프트 |
동일 (VS Code 통합 터미널 안의 mysql> 프롬프트) |
| MCP 연결 계정과 권한 | inventory_reader, 읽기 전용 |
동일 (변경 없음) |
바뀌는 것은 작업 화면의 배치이지, MCP 연결 계정이나 권한 원칙이 아닙니다. inventory_reader는 이 강의 이후에도 읽기 전용이며, 데이터 변경은 여전히 프로그램의 MySQL Driver 코드에서만 실행합니다.
0.4 학습 목표
6강을 마치면 다음 작업을 수행할 수 있습니다.
- 프로젝트 폴더를 VS Code로 열고 통합 터미널의 위치를 확인할 수 있습니다.
- VS Code에 연결된 Claude Code 세션에서 기존 MCP 연결과 프로젝트 문서를 다시 확인할 수 있습니다.
- 세 가지 권한 모드의 차이를 설명하고 작업 성격에 맞는 모드를 선택할 수 있습니다.
- Claude Code가 제안한 파일 변경을 VS Code의 diff 화면으로 검토하고 승인 또는 거부할 수 있습니다.
1. 5강 실습 상태 확인
→ 데이터베이스 문서 네 종류와 MCP 연결, 기준 데이터 8 / 16 / 0을 터미널 환경에서 마지막으로 확인합니다.
1.1 데이터베이스 문서와 CLAUDE.md 확인하기
쉘 프롬프트에서 5강까지의 결과물을 확인합니다.

cd ~/projects/inventory-mysql-app
ls docs/database/
# schema_descriptions.yaml schema.md schema_snapshot.json table_spec.xlsx
cat CLAUDE.md
# ## 데이터베이스 작업 규칙 (7개 항목)이 보여야 합니다.
이 중 하나라도 없으면 5강으로 돌아가 문서 생성을 먼저 완료합니다.
1.2 기존 방식으로 MCP 연결과 기준 데이터 확인하기
지금까지 해 온 방식대로 터미널에서 Claude Code를 실행하고 연결 상태를 확인합니다. 이 확인은 6강 이후 화면 배치가 바뀌어도 연결 자체는 그대로 이어진다는 것을 보여주기 위한 마지막 터미널 실행입니다.
claude
/mcp
클로드 코드 프롬프트에 다음과 같이 요청하여 기준 데이터를 확인한 뒤 /exit로 세션을 종료합니다.

inventory DB의 products, stock_logs, operation_requests의 행 수를 확인해줘.
조건:
- 실행할 SELECT SQL을 먼저 보여준다.
- 확인하지 못한 값은 추측하지 않는다.
내가 SQL을 검토하고 승인하기 전에는 실행하지 마.
/exit
▶ 지금 해보세요
docs/database의 네 파일과CLAUDE.md의 규칙을 확인합니다.- 터미널에서 Claude Code를 실행하고
/mcp와 기준 데이터를 확인합니다. - 확인이 끝나면
/exit로 세션을 종료합니다.
✔ 확인 기준:
· docs/database에 문서 네 개가 존재합니다.
· mysql-inventory MCP가 연결 상태로 표시됩니다.
· 세 테이블의 행 수가 8 / 16 / 0입니다.
2. VS Code로 프로젝트 열기
→ code . 명령으로 프로젝트를 열고, 통합 터미널에서 위치와 가상환경을 확인합니다.
2.1 VS Code 설치 확인하기
쉘 프롬프트에서 VS Code의 명령줄 도구가 등록되어 있는지 확인합니다.

code --version
버전 번호 세 줄(버전, 커밋 해시, 아키텍처)이 출력되어야 합니다. command not found가 나오면 VS Code를 설치하고, 설치 중 PATH에 추가(Add to PATH) 옵션을 선택합니다.
2.2 프로젝트 폴더를 VS Code로 열고 신뢰하기
프로젝트 폴더 안에서 다음 명령을 실행합니다. 마침표(.)는 현재 폴더를 뜻합니다.

cd ~/projects/inventory-mysql-app
code .

처음 여는 폴더이면 신뢰 여부를 묻는 대화상자가 나타납니다. 경로가 실습 프로젝트 폴더인지 확인한 뒤 신뢰(Trust the authors)를 선택합니다.

- 용어: 작업 영역 신뢰(Workspace Trust) — VS Code가 처음 여는 폴더에서 자동 실행 스크립트나 확장 기능을 제한적으로 실행할지 물어보는 보안 기능입니다. 실습 프로젝트처럼 직접 만든 폴더는 신뢰해도 됩니다.
2.3 통합 터미널에서 위치와 가상환경 확인하기
상단 메뉴에서 터미널(Terminal) → 새 터미널(New Terminal)을 선택합니다. 지금부터 별도의 터미널 창 대신 이 VS Code 통합 터미널을 사용합니다.


pwd
# /home/사용자명/projects/inventory-mysql-app 이 출력되어야 합니다.
가상환경이 생성되었다면, 2~3초 내에 가상환경이 자동으로 활성화됩니다. 아니면, 아래 명령으로 활성화합니다.
source .venv/bin/activate
# 프롬프트 앞에 (.venv)가 표시되어야 합니다.
▶ 지금 해보세요
code --version으로 설치를 확인합니다.code .으로 프로젝트를 열고 폴더를 신뢰합니다.- 통합 터미널을 열고
pwd와 가상환경 활성화를 확인합니다.
✔ 확인 기준: VS Code 탐색기와 통합 터미널이 모두 같은 inventory-mysql-app 경로를 가리키고, 가상환경이 활성화되어 있습니다.
3. VS Code에 연결된 Claude Code로 전환하기
→ VS Code 사이드바에서 새 세션을 열고, 기존 MCP 연결과 프로젝트 문서가 그대로 유지되는지 확인합니다.
3.1 Claude Code 확장 실행하기
VS Code 왼쪽 활동 표시줄에서 Claude Code 아이콘을 선택합니다. 확장이 설치되어 있지 않으면 3강에서 사용한 claude 명령줄 도구와 별도로 VS Code 확장을 설치해야 합니다.

3.2 새 세션에서 프로젝트 문맥과 MCP 연결 재확인하기
사이드바에서 New Session을 시작합니다.
이 세션은 1.2에서 종료한 터미널 세션과 대화 기록을 공유하지 않지만, 같은 프로젝트 폴더를 열었으므로 CLAUDE.md와 .mcp.json 등 프로젝트 설정은 동일하게 적용됩니다.
MCP 연결이 이 화면에서도 유지되는지 확인합니다.

/mcp
이어서 프로젝트 문서를 인식하는지 확인합니다.

docs/database/schema.md에 등록된 테이블 이름을 모두 알려줘.
조건:
- 문서에 실제로 적힌 이름만 답한다.
- 문서에 없는 테이블은 만들어 내지 않는다.
응답에 products, operation_requests, stock_logs 세 테이블이 모두 포함되어야 합니다.
▶ 지금 해보세요
- VS Code 사이드바에서 Claude Code 세션을 엽니다.
/mcp로 연결 상태를 확인합니다.schema.md의 테이블 이름을 질문하여 문서 인식을 확인합니다.
✔ 확인 기준:
· VS Code 세션에서도 mysql-inventory가 연결 상태로 표시됩니다.
· 응답에 세 테이블 이름이 모두 포함되고, 다른 테이블을 만들어 내지 않습니다.
4. 권한 모드 이해하고 선택하기
→ 세 가지 권한 모드의 차이를 비교하고, 이 강의부터 기본으로 사용할 모드를 정합니다.
4.1 세 가지 권한 모드 비교하기
Claude Code 입력창 아래에는 현재 권한 모드가 표시되고, 이 표시를 선택하면 모드를 바꿀 수 있습니다.

| 화면 표시 | 동작 | 이 과정에서 사용하는 시점 |
| Manual (Ask before edits) |
파일 수정이나 명령 실행 전마다 변경 내용을 보여주고 승인을 기다립니다. 일부 버전에서는 Manual로 표시됩니다. |
이 강의와 7강 이후 파일 변경을 하나씩 검토할 때 |
| Plan mode | 코드를 바로 수정하지 않고 프로젝트를 읽어 작업 계획만 문서로 제안합니다. 계획을 승인해야 다음 모드로 넘어갑니다. |
7강 이후 여러 파일을 만들기 전에 전체 순서를 검토할 때 |
| Auto (Edit automatically) |
작업 폴더 안의 파일 편집을 자동으로 승인합니다. 데이터베이스 변경이나 외부 명령은 여전히 별도 승인이 필요할 수 있습니다. | 이 과정에서는 사용하지 않습니다. |
4.2 이 강의부터 사용할 기본 모드 정하기
이 과정에서는 Ask before edits(Manual)를 기본 모드로 사용합니다.
학습자가 파일 변경 내용을 직접 확인하고 승인하는 과정 자체가 실습의 일부이기 때문입니다.
Edit automatically는 검토 없이 파일이 바뀌므로 이 과정에서는 사용하지 않습니다.
💡 팁: 권한 모드는 채팅 문장으로 요청해서 바꾸는 것이 아니라 입력창 아래의 모드 선택기에서 직접 변경합니다. 세션 도중에도 바꿀 수 있습니다.
▶ 지금 해보세요
- 권한 모드 선택기에서 세 모드의 설명을 각각 읽어 봅니다.
- 현재 모드를
Ask before edits(Manual)로 맞춥니다.
✔ 확인 기준: 세 모드의 차이를 각각 한 문장으로 설명할 수 있고, 현재 세션의 모드가 Ask before edits(Manual)로 표시됩니다.
5. VS Code에서 변경 내용 검토하기
→ CLAUDE.md에 짧은 항목을 추가하도록 요청하고, diff 화면으로 변경 내용을 검토한 뒤 승인합니다.
5.1 diff 화면으로 파일 변경 확인하기
지금까지는 채팅창에 표시된 텍스트만 보고 코드 변경을 확인했습니다.
VS Code에서는 Claude Code가 파일을 수정하기 전에 변경 전후를 나란히 비교하는 diff 화면을 보여줍니다.
이 강의에서는 낮은 위험도의 문서 파일로 이 화면을 먼저 연습합니다.
Manual(Ask before edits) 모드인지 확인한 뒤, 다음과 같이 요청합니다.

CLAUDE.md 맨 아래에 다음 항목을 그대로 추가해줘.
## 개발 환경
6강부터는 VS Code에서 편집, 통합 터미널, Claude Code 세션을 함께 사용한다.
MCP 연결 계정과 권한 범위는 3~4강에서 정한 대로 유지한다.
조건:
- 기존 내용은 한 글자도 수정하지 않는다.
- 위 두 줄 외의 내용을 추가하지 않는다.
변경 전에 diff를 먼저 보여주고, 내가 승인하기 전에는 저장하지 마.

5.2 변경 승인·거부 연습하기
diff 화면에서 다음을 확인합니다.
- 추가되는 줄만 표시되고 기존 줄이 빨간색(삭제)으로 표시되지 않는가?
- 추가된 내용이 요청한 두 줄과 같은가?
- 파일 상단의 "데이터베이스 작업 규칙" 일곱 개 항목이 그대로 남아 있는가?
세 조건을 모두 만족하면 diff 화면의 승인 버튼으로 변경을 적용합니다. 연습 삼아 한 번은 거부(Reject) 버튼도 눌러 봅니다. 거부하면 파일이 요청 이전 상태로 남아 있어야 합니다.
거부한 뒤에는 같은 요청을 다시 보내 이번에는 승인하고, 최종적으로 CLAUDE.md에 ## 개발 환경 항목이 남아 있는 상태로 마무리합니다.
✔ 핵심: 채팅 텍스트를 읽는 것과 diff 화면에서 변경 범위를 확인하는 것은 다른 검토입니다. 7강부터는 한 번의 요청이 여러 파일을 만들 수 있으므로, 파일마다 diff를 확인하는 습관을 이 강의에서 만듭니다.
▶ 지금 해보세요
CLAUDE.md수정을 요청하고 diff 화면을 확인합니다.- 한 번은 거부하고 파일이 그대로인지 확인합니다.
- 다시 요청하여 이번에는 승인하고 파일에 반영되었는지 확인합니다.
✔ 확인 기준:
· diff 화면에 추가되는 두 줄만 초록색으로 표시되었습니다.
· 거부했을 때 CLAUDE.md가 바뀌지 않았습니다.
· 승인 후 CLAUDE.md에 기존 일곱 개 규칙과 ## 개발 환경 항목이 함께 존재합니다.
6. 개발 환경 전환 오류 해결하기
→ VS Code 연동 과정에서 자주 발생하는 문제의 원인을 좁히는 순서를 정리합니다.
문제가 생기면 다음 순서로 원인을 좁힙니다. 확장을 지웠다 다시 설치하는 것으로 바로 넘어가지 않습니다.
code 명령의 PATH 등록 여부
↓
VS Code로 연 폴더 경로
↓
작업 영역 신뢰(Trust) 여부
↓
Claude Code 확장의 로그인 상태
↓
VS Code 세션의 /mcp 연결 상태
↓
CLAUDE.md와 프로젝트 문서 인식 여부
| 증상 | 먼저 확인할 항목 | 해결 방향 |
code: command not found |
VS Code 설치 시 PATH 등록 여부 | VS Code를 다시 실행해 명령 팔레트에서 "Shell Command: Install 'code' command in PATH" 실행 |
| 탐색기에 폴더 구조가 비어 보임 | code .을 실행한 위치 |
통합 터미널에서 pwd로 위치 확인 후 프로젝트 루트에서 다시 실행 |
| Claude Code 사이드바에 아이콘이 없음 | 확장 설치와 로그인 상태 | 확장 마켓플레이스에서 설치 상태 확인 후 계정으로 다시 로그인 |
VS Code 세션의 /mcp에 mysql-inventory가 없음 |
VS Code로 연 폴더가 3강에서 MCP를 등록한 프로젝트 루트인지 | 올바른 프로젝트 루트에서 다시 열고 확인 |
schema.md의 테이블 이름을 물었을 때 응답이 비어 있거나 다른 이름이 나옴 |
VS Code로 연 폴더와 docs/database의 실제 위치 |
프로젝트 루트 폴더가 맞는지 확인 후 재질문 |
| diff 화면 없이 파일이 바로 바뀜 | 현재 권한 모드가 Edit automatically로 바뀌어 있는지 |
모드 선택기에서 Ask before edits로 되돌리기 |
✔ 보안 원칙: 연결 문제를 해결하기 위해 관리자 계정을 MCP 설정에 연결하거나 inventory_reader의 권한을 넓히지 않습니다. 이 강의에서 바뀌는 것은 화면 배치이며, 3~4강에서 정한 계정과 권한 범위는 그대로 유지합니다.
7. 이번 강의 완료 기준
→ 체크리스트로 6강 완료 상태를 점검하고, 7강으로 넘기는 상태를 확인합니다.
7.1 최종 체크리스트
다음 항목을 모두 확인합니다.
- ☐ 5강 문서 네 개와
CLAUDE.md규칙, 기준 데이터8 / 16 / 0을 확인했습니다. - ☐
code .으로 프로젝트를 열고 작업 영역을 신뢰했습니다. - ☐ VS Code 통합 터미널에서 프로젝트 경로와 가상환경 활성화를 확인했습니다.
- ☐ VS Code 사이드바의 Claude Code 세션에서
/mcp연결과schema.md의 테이블 이름 인식을 확인했습니다. - ☐ 세 가지 권한 모드의 차이를 설명할 수 있고, 현재 모드가
Ask before edits(Manual)입니다. - ☐
CLAUDE.md수정 요청에서 diff 화면을 확인하고, 거부와 승인을 각각 실행해 보았습니다. - ☐
CLAUDE.md에 기존 일곱 개 규칙과## 개발 환경항목이 함께 존재합니다.
7.2 완성 구조
inventory-mysql-app/
├── CLAUDE.md # ✅ "## 개발 환경" 항목 추가
├── db/
├── docs/
│ └── database/ # ✅ 5강 산출물 유지 (변경 없음)
├── harness/
└── app/
작업 환경
├── VS Code # ✅ 프로젝트 폴더 열기·신뢰 완료
├── VS Code 통합 터미널 # ✅ 명령 실행 위치로 전환
└── VS Code Claude Code 세션 # ✅ MCP 연결·문서 인식 확인
inventory DB (변경 없음)
├── products 8건
├── stock_logs 16건
└── operation_requests 0건
7.3 이번 강의에서 아직 하지 않는 작업
- Python 재고 조회 기능 구현 (7강)
- 여러 파일을 한 번에 만드는 작업에서 Plan mode 실제 사용 (7강 이후)
inventory_operator,inventory_app계정을 사용한 데이터 변경 (8강 이후)- MCP 계정이나 권한 범위 변경 (이 과정에서 다루지 않습니다)
이번 강의에서 실제로 변경한 파일은 CLAUDE.md 한 개이며, 추가한 내용은 화면 배치를 설명하는 두 줄뿐입니다. 데이터베이스와 계정 권한은 변경하지 않았습니다.
7.4 참고 문서
공식 문서: Claude Code IDE 통합 공식 문서
Use Claude Code in VS Code - Claude Code Docs
Install and configure the Claude Code extension for VS Code. Get AI coding assistance with inline diffs, @-mentions, plan review, and keyboard shortcuts.
code.claude.com
그 밖에 VS Code 작업 영역 신뢰 공식 문서를 참고하세요.
→ 다음 강의 (7강): 이 강의에서 전환한 VS Code 환경에서, 자연어 요구사항을 입력값·조건·정렬·반환값으로 구체화하고 재주문 대상 조회 기능을 구현합니다. 이때부터 Claude Code가 만든 파일마다 diff 화면으로 검토합니다.
8. 실습 과제
→ 화면 대응표 작성, 거부 시나리오 재현, 환경 전환 기록 제출로 6강 내용을 스스로 점검합니다.
8.1 이전 화면과 VS Code 화면 대응표 작성하기
1강의 "실습 화면 구성"에서 사용한 네 가지 화면과, 이 강의에서 VS Code 안의 대응 위치를 짝지어 작성합니다.
| 1~5강의 화면 | VS Code 안의 대응 위치 |
| 소스코드 에디터 | |
| 쉘 프롬프트 | |
| MySQL 프롬프트 | |
터미널의 claude 대화창 |
✔ 완료 기준:
· 네 가지 대응 위치를 모두 채웠습니다.
· MySQL 프롬프트가 여전히 mysql> 화면이며 도구 자체는 바뀌지 않았다는 점을 반영했습니다.
8.2 잘못된 변경을 거부하는 시나리오 재현하기
이번에는 조건을 지키지 않는 요청을 의도적으로 보내 diff 화면에서 문제를 발견하고 거부하는 과정을 재현합니다.
CLAUDE.md의 "데이터베이스 작업 규칙" 제목을
"DB 규칙"으로 바꾸고, 4번 항목을 삭제해줘.
변경 전에 diff를 먼저 보여주고, 내가 승인하기 전에는 저장하지 마.
diff 화면에서 제목 변경과 항목 삭제가 보이면, 5.2에서 정리한 승인 기준(기존 내용 삭제 금지)에 어긋난다는 점을 근거로 거부합니다.
✔ 완료 기준:
· diff 화면에서 삭제되는 줄(빨간색)을 실제로 확인했습니다.
· 변경을 거부했고, CLAUDE.md의 일곱 개 규칙과 제목이 그대로 남아 있습니다.
8.3 환경 전환 기록 제출하기
다음 결과를 캡처하거나 텍스트로 기록합니다.
- VS Code 탐색기와 통합 터미널이 같은 경로를 가리키는 화면
- VS Code 세션의
/mcp연결 결과 - 5.1의 정상 승인 diff 화면과 8.2의 거부 diff 화면
- 최종
CLAUDE.md에서## 개발 환경항목이 반영된 부분
✔ 완료 기준:
· 네 가지 결과가 모두 포함되어 있습니다.
· 승인한 변경과 거부한 변경이 구분되어 기록되어 있습니다.
· 이 과정에서 데이터베이스나 계정 권한은 변경되지 않았습니다.