반응형
개발하다 보면 이런 상황이 반복돼요.
나: "기획서에서 API 스펙 찾아줘"
Claude: "Notion에 접근할 수 없어요. 내용을 복사해서 붙여넣어주세요."
나: "Q1 매출 데이터 분석해줘"
Claude: "스프레드시트에 접근할 수 없어요. 데이터를 공유해주세요."
MCP 연동하면 이렇게 바뀌어요.
나: "기획서에서 결제 API 스펙 찾아서 코드 만들어줘"
Claude: (Notion 검색) → 기획서 읽기 → 코드 생성까지 자동
나: "Q1 매출 데이터 분석해줘"
Claude: (Sheets 읽기) → 분석 → 인사이트까지 바로
Part 1 — Notion MCP 연동
방법 1: Notion 공식 MCP (제일 간단)
Notion이 공식 MCP 서버를 직접 제공해요. OAuth로 연결하면 돼요.
# Claude Code에 등록
claude mcp add notion-official \
npx @notionhq/notion-mcp-server
처음 실행하면 브라우저가 열리면서 Notion OAuth 인증 페이지가 나와요. 로그인 후 승인하면 끝이에요.
확인:
# 연결 확인
claude mcp list
# 출력:
# notion-official: npx @notionhq/notion-mcp-server (connected)
방법 2: API 토큰으로 연결 (팀 공유용)
# 1. Notion 인테그레이션 생성
# https://www.notion.so/my-integrations 접속
# → New integration → 이름 입력 → Submit
# → Internal Integration Token 복사 (ntn_으로 시작)
# 2. Claude Code에 등록
claude mcp add notion \
--env NOTION_API_KEY=ntn_your_token_here \
npx @notionhq/notion-mcp-server
중요: 토큰만 등록하면 아무것도 안 읽혀요. Notion에서 페이지마다 직접 공유 설정을 해줘야 해요.
Notion 페이지 열기
→ 우상단 ••• 메뉴
→ Connections
→ 내 인테그레이션 선택
→ Confirm
공유된 페이지만 Claude가 읽을 수 있어요. 보안상 이게 맞아요.
프로젝트 설정 파일로 관리
// .claude/mcp.json
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["@notionhq/notion-mcp-server"],
"env": {
"NOTION_API_KEY": "${NOTION_API_KEY}"
}
}
}
}
.env 파일에 토큰 저장하고 .gitignore에 추가해요.
# .env
NOTION_API_KEY=ntn_your_token_here
실제 사용 예시
기획서 찾아서 코드 만들기:
나: "결제 API 기획서 찾아서 FastAPI 엔드포인트 만들어줘"
Claude:
(Notion 검색: "결제 API 기획서")
→ 기획서 내용:
- POST /payments
- 요청: userId, amount, method
- 응답: paymentId, status, createdAt
- 실패 시 에러 코드: 4001(잔액부족), 4002(카드오류)
(코드 자동 생성)
→ @router.post("/payments")
async def create_payment(data: PaymentRequest):
...
회의록에서 액션 아이템 추출:
나: "지난주 기획 회의록에서 내 액션 아이템 뽑아줘"
Claude:
(Notion 검색: "기획 회의 4월")
→ 회의록 읽기
→ "cell님 액션 아이템:
1. 결제 API 에러 처리 추가 (금요일까지)
2. 테스트 코드 작성 (다음주 월요일까지)"
기술 문서 업데이트:
나: "방금 만든 API 스펙을 Notion 기술 문서에 업데이트해줘"
Claude:
(API 스펙 정리)
→ (Notion에서 "API 기술 문서" 페이지 찾기)
→ (페이지 업데이트)
→ "✅ Notion 기술 문서 업데이트 완료"
Part 2 — Google Sheets MCP 연동
설치
# uv 설치 (없으면)
curl -LsSf https://astral.sh/uv/install.sh | sh
# Google Sheets MCP 설치 및 등록
claude mcp add google-sheets \
uvx mcp-google-sheets@latest
Google Cloud 인증 설정
두 가지 방법이 있어요.
방법 1: 서비스 계정 (서버/팀 환경 권장)
# 1. Google Cloud Console에서
# → IAM & Admin → Service Accounts
# → Create Service Account
# → JSON 키 다운로드
# 2. 환경변수 설정
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account.json"
# 3. 공유 설정
# 서비스 계정 이메일을 Sheets에 공유 (편집자 권한)
# your-service-account@project.iam.gserviceaccount.com
방법 2: OAuth (개인 사용 권장)
# gcloud CLI 설치 후
gcloud auth application-default login
# 브라우저에서 Google 계정 로그인
# → Claude가 내 Google Sheets 전체 접근 가능
프로젝트 설정
// .claude/mcp.json
{
"mcpServers": {
"notion": {
"command": "npx",
"args": ["@notionhq/notion-mcp-server"],
"env": {
"NOTION_API_KEY": "${NOTION_API_KEY}"
}
},
"google-sheets": {
"command": "uvx",
"args": ["mcp-google-sheets@latest"],
"env": {
"GOOGLE_APPLICATION_CREDENTIALS": "${GOOGLE_CREDS_PATH}"
}
}
}
}
실제 사용 예시
데이터 읽고 분석:
나: "Q1 매출 스프레드시트에서 월별 매출 분석해줘"
Claude:
(Sheets에서 "Q1 매출" 검색)
→ 데이터 읽기 (A1:D100)
→ 분석:
"1월: 4,200만원
2월: 3,800만원 (전월 대비 -9.5%)
3월: 5,100만원 (전월 대비 +34.2%)
Q1 합계: 13,100만원
월평균: 4,367만원
가장 높은 카테고리: 의류 (38%)"
데이터 자동 입력:
나: "오늘 배포한 버전 정보를 릴리즈 로그 시트에 추가해줘
버전: v2.3.1, 날짜: 오늘, 변경사항: 결제 취소 API 추가"
Claude:
(Sheets에서 "릴리즈 로그" 찾기)
→ 마지막 행 다음에 데이터 추가
→ "✅ 릴리즈 로그 업데이트 완료
추가된 행: 2026-04-14 | v2.3.1 | 결제 취소 API 추가"
버그 리포트 → 시트 자동 정리:
나: "GitHub 이슈에서 Critical 버그들 뽑아서 버그 트래킹 시트에 정리해줘"
Claude:
(GitHub MCP로 Critical 이슈 조회)
→ 이슈 5개 발견
→ (Sheets에 자동 입력)
| 이슈 번호 | 제목 | 심각도 | 담당자 | 상태 |
| #47 | 결제 null 에러 | Critical | cell | Open |
| #45 | 로그인 500 | Critical | - | Open |
...
→ "✅ 버그 트래킹 시트 업데이트 완료 (5건)"
Notion + Sheets 동시 활용
두 MCP를 같이 쓰면 더 강력해져요.
나: "이번 스프린트 기획서(Notion)에서 작업 목록 뽑아서
스프린트 트래킹 시트(Sheets)에 정리해줘"
Claude:
1. (Notion에서 "스프린트 23 기획서" 검색)
2. 작업 목록 추출:
- 결제 취소 API (3일)
- 쿠폰 적용 (2일)
- 테스트 코드 (1일)
3. (Sheets "스프린트 트래킹" 찾기)
4. 데이터 자동 입력:
| 작업 | 예상 기간 | 상태 | 담당자 |
| 결제 취소 API | 3일 | TODO | |
| 쿠폰 적용 | 2일 | TODO | |
| 테스트 코드 | 1일 | TODO | |
→ "✅ 스프린트 트래킹 시트 업데이트 완료 (3건)"
복붙 노가다가 없어져요.
자주 발생하는 문제
# Notion - "object not found" 에러
→ 해당 페이지에 인테그레이션 공유 안 한 것
→ 페이지 → ••• → Connections → 인테그레이션 추가
# Sheets - "권한 없음" 에러
→ 서비스 계정 이메일을 해당 스프레드시트에 공유 안 한 것
→ Sheets → 공유 → 서비스 계정 이메일 추가
# MCP 서버 연결 안 됨
→ claude mcp list로 상태 확인
→ claude mcp remove 서버명 후 다시 추가
반응형
'MCP' 카테고리의 다른 글
| MCP 서버 팀 배포 가이드 — 로컬에서 서버로 올려서 팀 전체가 쓰기 (0) | 2026.04.14 |
|---|---|
| MCP 서버 보안 설정 완전 가이드 — 인증, 권한 제한, 위험 차단 (0) | 2026.04.14 |
| 여러 MCP 조합하기 — DB + Slack + GitHub 연동으로 자동화 파이프라인 만들기 (0) | 2026.04.14 |
| GitHub MCP 연동 실전 가이드 — 이슈 분석부터 PR 생성까지 자동화 (1) | 2026.04.14 |
| MCP 서버 직접 만들기 — 내 서비스를 Claude에 연동하는 법 (1) | 2026.04.14 |