본문 바로가기

MCP

Notion + Google Sheets MCP 연동 실전 가이드 — Claude Code로 문서/데이터 자동화

반응형

개발하다 보면 이런 상황이 반복돼요.

나: "기획서에서 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 서버명 후 다시 추가

 

반응형