포스트

[이제와서 시작하는 Claude AI 마스터하기 #13] MCP로 외부 도구 연결하기

[이제와서 시작하는 Claude AI 마스터하기 #13] MCP로 외부 도구 연결하기

Claude Code가 GitHub, 데이터베이스, Slack에 직접 접근할 수 있다면? MCP(Model Context Protocol)를 통해 Claude Code의 능력을 무한히 확장할 수 있습니다. 외부 도구와 연결하여 진정한 개발 파트너로 만들어봅시다!

완독 시간: 30분 ⭐⭐⭐⭐

🎯 이번에 배울 것

📚 사전 지식


📖 MCP란 무엇인가?

Model Context Protocol

MCP = AI와 외부 도구를 연결하는 표준 프로토콜

flowchart LR
    A[Claude Code] <--> B[MCP Protocol]
    B <--> C[GitHub]
    B <--> D[Database]
    B <--> E[Slack]
    B <--> F[Jira]

Claude Code 혼자서는 할 수 없는 것들:

  • GitHub PR 생성/리뷰
  • 데이터베이스 쿼리 실행
  • Slack 메시지 전송
  • Jira 이슈 관리

MCP 서버를 연결하면 이 모든 것이 가능해집니다!

MCP로 할 수 있는 것들

1
2
3
4
5
6
7
8
9
10
11
# 이슈 트래커에서 기능 구현
"JIRA 이슈 ENG-4521의 기능을 구현하고 GitHub에 PR 만들어줘"

# 모니터링 데이터 분석
"Sentry에서 최근 24시간 에러를 확인해줘"

# 데이터베이스 쿼리
"PostgreSQL에서 최근 가입한 사용자 10명 찾아줘"

# 워크플로우 자동화
"Slack에 배포 완료 메시지 보내줘"

MCP 서버 종류

전송 방식 설명 예시
HTTP 원격 서버 연결 (권장) GitHub, Notion, Sentry
SSE Server-Sent Events (deprecated) 일부 레거시 서버
stdio 로컬 프로세스 실행 커스텀 스크립트, DB 연결

🛠️ MCP 서버 설치하기

설치 명령어 구조

1
claude mcp add [옵션] <서버명> <URL 또는 명령>

Option 1: HTTP 서버 연결 (권장)

클라우드 기반 MCP 서버에 연결하는 가장 간단한 방법입니다.

1
2
3
4
5
6
7
8
9
# 기본 문법
claude mcp add --transport http <이름> <URL>

# 예제: Notion 연결
claude mcp add --transport http notion https://mcp.notion.com/mcp

# 인증이 필요한 경우
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

Option 2: stdio 서버 연결 (로컬 실행)

로컬에서 프로세스를 실행하는 방식입니다.

1
2
3
4
5
6
# 기본 문법
claude mcp add --transport stdio <이름> -- <명령> [인자...]

# 예제: Airtable 서버 추가
claude mcp add --transport stdio --env AIRTABLE_API_KEY=YOUR_KEY airtable \
  -- npx -y airtable-mcp-server

💡 중요: --transport, --env, --scope 등 옵션은 서버 이름 앞에 위치해야 합니다. --는 Claude 옵션과 서버 명령을 구분합니다.

Option 3: SSE 서버 연결 (deprecated)

1
2
# SSE는 deprecated - HTTP 사용 권장
claude mcp add --transport sse <이름> <URL>

🔗 실전 예제: GitHub 연동

Step 1: GitHub MCP 서버 추가

1
claude mcp add --transport http github https://api.githubcopilot.com/mcp/

Step 2: 인증하기

Claude Code 내에서:

1
> /mcp

“Authenticate”를 선택하고 브라우저에서 GitHub 로그인을 완료합니다.

Step 3: GitHub 작업 요청하기

1
2
3
4
5
> PR #456 리뷰해주고 개선점 제안해줘

> 방금 발견한 버그에 대한 이슈 생성해줘

> 나에게 할당된 모든 PR 보여줘

GitHub 연동 활용 예시

flowchart TD
    A[개발자: PR 리뷰해줘] --> B[Claude Code]
    B --> C[GitHub MCP]
    C --> D[PR 내용 가져오기]
    D --> E[코드 분석]
    E --> F[리뷰 코멘트 작성]
    F --> G[PR에 코멘트 추가]

💾 데이터베이스 연결하기

PostgreSQL 연결

1
2
3
4
5
6
7
8
9
10
# 1. 데이터베이스 서버 추가
claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://readonly:[email protected]:5432/analytics"

# 2. 자연어로 쿼리
> 이번 달 총 매출이 얼마야?

> orders 테이블 스키마 보여줘

> 90일간 구매 없는 고객 찾아줘

데이터베이스 연동 장점

  • 자연어 쿼리: SQL 없이도 데이터 조회
  • 스키마 이해: 테이블 구조를 Claude가 파악
  • 안전한 접근: read-only 계정으로 연결 권장

🔐 OAuth 인증

많은 MCP 서버는 OAuth 인증이 필요합니다.

자동 인증 (대부분의 경우)

1
2
3
4
5
6
# 1. 서버 추가
claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

# 2. Claude Code 내에서 인증
> /mcp
# 브라우저에서 로그인 진행

수동 인증 (client ID/secret 필요한 경우)

일부 서버는 미리 OAuth 앱을 등록해야 합니다:

1
2
3
4
5
6
7
# 1. 서버의 개발자 포털에서 OAuth 앱 등록
# 2. client-id와 client-secret 획득

# 3. 서버 추가
claude mcp add --transport http \
  --client-id your-client-id --client-secret --callback-port 8080 \
  my-server https://mcp.example.com/mcp

--client-secret만 지정하면 비밀번호 입력 프롬프트가 나타납니다.


📍 MCP 서버 스코프

서버를 어디서 사용할지 스코프를 지정할 수 있습니다.

Local Scope (기본값)

현재 프로젝트에서만 사용 가능, 개인 설정:

1
2
3
claude mcp add --transport http stripe https://mcp.stripe.com
# 또는 명시적으로
claude mcp add --transport http stripe --scope local https://mcp.stripe.com

Project Scope

팀원과 공유, .mcp.json 파일에 저장:

1
claude mcp add --transport http paypal --scope project https://mcp.paypal.com/mcp

생성되는 .mcp.json:

1
2
3
4
5
6
7
8
{
  "mcpServers": {
    "paypal": {
      "type": "http",
      "url": "https://mcp.paypal.com/mcp"
    }
  }
}

User Scope

모든 프로젝트에서 사용 가능:

1
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

스코프 우선순위

1
Local > Project > User

같은 이름의 서버가 여러 스코프에 있으면 높은 우선순위가 적용됩니다.


🔧 MCP 서버 관리하기

서버 목록 확인

1
2
3
4
5
# 모든 서버 보기
claude mcp list

# Claude Code 내에서
> /mcp

서버 상세 정보

1
claude mcp get github

서버 삭제

1
claude mcp remove github

Claude Desktop에서 가져오기

이미 Claude Desktop에 MCP 서버를 설정했다면:

1
claude mcp add-from-claude-desktop

대화형으로 가져올 서버를 선택할 수 있습니다.


📋 인기 MCP 서버 목록

생산성 도구

서버 용도 설치 명령
GitHub PR, 이슈 관리 claude mcp add --transport http github https://api.githubcopilot.com/mcp/
Notion 문서 관리 claude mcp add --transport http notion https://mcp.notion.com/mcp
Slack 팀 커뮤니케이션 OAuth 인증 필요

개발 도구

서버 용도 설치 명령
Sentry 에러 모니터링 claude mcp add --transport http sentry https://mcp.sentry.dev/mcp
Linear 이슈 트래킹 OAuth 인증 필요
PostgreSQL 데이터베이스 stdio 방식 (위 예제 참조)

⚠️ 주의: 서드파티 MCP 서버는 Anthropic이 검증하지 않았습니다. 신뢰할 수 있는 서버만 설치하세요.


🔄 MCP 리소스 활용하기

MCP 서버는 리소스를 노출할 수 있습니다. @ 멘션으로 참조합니다.

리소스 참조하기

1
2
3
4
5
6
7
8
# GitHub 이슈 참조
> @github:issue://123 분석하고 수정안 제안해줘

# API 문서 참조
> @docs:file://api/authentication 리뷰해줘

# 여러 리소스 비교
> @postgres:schema://users와 @docs:file://database/user-model 비교해줘

MCP 프롬프트 실행

MCP 서버가 제공하는 프롬프트를 명령어처럼 실행할 수 있습니다:

1
2
3
4
5
# GitHub PR 목록 보기
> /mcp__github__list_prs

# PR 리뷰 요청
> /mcp__github__pr_review 456

⚙️ 고급 설정

JSON으로 서버 추가

복잡한 설정이 필요한 경우:

1
2
3
4
5
# HTTP 서버
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

# stdio 서버
claude mcp add-json local-tool '{"type":"stdio","command":"/path/to/server","args":["--config","config.json"]}'

환경 변수 확장

.mcp.json에서 환경 변수를 사용할 수 있습니다:

1
2
3
4
5
6
7
8
9
10
11
{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${API_KEY}"
      }
    }
  }
}

출력 제한 설정

MCP 도구 출력이 클 때:

1
2
3
4
5
6
# 기본 경고 임계값: 10,000 토큰
# 기본 최대값: 25,000 토큰

# 최대값 늘리기
export MAX_MCP_OUTPUT_TOKENS=50000
claude

타임아웃 설정

1
2
# MCP 서버 시작 타임아웃 (밀리초)
MCP_TIMEOUT=10000 claude

🏢 기업용 MCP 관리

managed-mcp.json으로 통합 관리

IT 관리자가 조직 전체 MCP 서버를 관리할 수 있습니다.

배포 위치:

  • macOS: /Library/Application Support/ClaudeCode/managed-mcp.json
  • Linux: /etc/claude-code/managed-mcp.json
  • Windows: C:\Program Files\ClaudeCode\managed-mcp.json
1
2
3
4
5
6
7
8
9
10
11
12
13
{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    },
    "company-internal": {
      "type": "stdio",
      "command": "/usr/local/bin/company-mcp-server",
      "args": ["--config", "/etc/company/mcp-config.json"]
    }
  }
}

허용/차단 목록

1
2
3
4
5
6
7
8
9
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverUrl": "https://mcp.company.com/*" }
  ],
  "deniedMcpServers": [
    { "serverName": "untrusted-server" }
  ]
}

🔍 Tool Search 기능 (자동 모드)

많은 MCP 서버가 연결되어 있으면 Claude가 동적으로 도구를 검색합니다. 기본적으로 자동 모드가 활성화되어 있습니다.

동작 방식

MCP 도구 설명이 컨텍스트 윈도우의 10% 이상을 차지하면, 모든 도구를 한꺼번에 로드하지 않고 MCPSearch 도구를 통해 필요할 때만 검색합니다. 이를 통해 컨텍스트 사용량을 크게 절약할 수 있습니다.

💡 /mcp로 서버별 토큰 비용을 확인할 수 있습니다. 사용하지 않는 서버는 비활성화하세요.

수동 제어

1
2
3
4
5
6
7
8
9
# 커스텀 임계값 (5%)
# auto:N 구문 - N은 컨텍스트 윈도우 퍼센트 (0-100)
ENABLE_TOOL_SEARCH=auto:5 claude

# 항상 활성화
ENABLE_TOOL_SEARCH=true claude

# 비활성화 (settings에서 disallowedTools에 MCPSearch 추가로도 가능)
ENABLE_TOOL_SEARCH=false claude

OAuth 사전 구성 클라이언트

Dynamic Client Registration을 지원하지 않는 서버(예: Slack)용으로 사전 구성된 OAuth 클라이언트 자격 증명을 사용할 수 있습니다:

1
claude mcp add --transport http --client-id <id> --client-secret <secret> slack https://slack.mcp.example.com

🤔 왜 API가 아니라 MCP인가?

우리는 이미 API를 가지고 있습니다. 그런데 왜 굳이 MCP라는 걸 또 써야 할까요?

  • API: 개발자가 코드로 호출해야 함. (AI가 쓰기엔 복잡함)
  • MCP: AI가 “이런 도구가 있구나, 필요할 때 내가 알아서 꺼내 써야지”라고 이해할 수 있는 규격.

즉, MCP는 AI를 위한 API 문서이자 실행 드라이버입니다.


🔒 Local LLM 하이브리드 구성 (Hybrid Security)

“우리 회사의 1급 기밀 문서는 클라우드에 올릴 수 없어.” 그렇다면 로컬 LLM (Local LLM)을 MCP로 연결하여 하이브리드 구성을 만들 수 있습니다.

  • 일반 코딩: Claude (Cloud)
  • 기밀 문서 요약: Llama 등 로컬 모델 (Local Workstation)
1
2
# Ollama를 MCP로 연결
claude mcp install ollama --model llama3

이제 Claude에게 이렇게 지시할 수 있습니다.

“이 기밀 문서는 @ollama를 써서 요약해주고, 그 요약된 내용을 바탕으로 코드는 네가(Claude) 짜줘.”

이 패턴을 활용하면 보안 요구사항을 지키면서도 AI의 도움을 최대한 받을 수 있습니다.


📝 오늘 배운 것 정리

MCP = AI와 외부 도구를 연결하는 표준 프로토콜

전송 방식: HTTP (권장), stdio (로컬), SSE (deprecated)

설치: claude mcp add --transport <type> <name> <url>

인증: /mcp 명령으로 OAuth 인증

스코프: local (기본), project (팀 공유), user (전역)

리소스 참조: @server:resource://path 형식

하이브리드 구성: 로컬 LLM + 클라우드 AI 조합으로 보안 확보


🔗 다음 편 미리보기

#14편: IDE 통합 완벽 가이드

터미널 밖에서도 Claude Code를 사용하는 방법:

  • VS Code 확장 프로그램
  • JetBrains 플러그인
  • Desktop 앱
  • 웹에서 사용하기

🔗 시리즈 전체 보기

# 제목 상태
01 Claude AI란? 첫 대화 시작하기 ✅ 완료
02 프롬프트 엔지니어링 기초 ✅ 완료
03 Claude의 다양한 모델과 선택 가이드 ✅ 완료
04 API 활용 첫걸음 ✅ 완료
05 고급 프롬프트 테크닉 ✅ 완료
06 Claude Projects 활용하기 ✅ 완료
07 Claude Code 시작하기 ✅ 완료
08 Claude Code 작동 원리 ✅ 완료
09 실전 워크플로우 ✅ 완료
10 CLAUDE.md 완전 정복 ✅ 완료
11 Skills: 나만의 명령어 만들기 ✅ 완료
12 Subagents로 AI 분업하기 ✅ 완료
13 MCP로 외부 도구 연결하기 📖 현재 글
14 IDE 통합 완벽 가이드 ✅ 완료
15 GitHub Actions와 CI/CD 자동화 ✅ 완료

🔗 참고 자료


🚀 MCP로 Claude Code의 한계를 넘어서세요!

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.