[이제와서 시작하는 Claude AI 마스터하기 #13] MCP로 외부 도구 연결하기
Claude Code가 GitHub, 데이터베이스, Slack에 직접 접근할 수 있다면? MCP(Model Context Protocol)를 통해 Claude Code의 능력을 무한히 확장할 수 있습니다. 외부 도구와 연결하여 진정한 개발 파트너로 만들어봅시다!
완독 시간: 30분 ⭐⭐⭐⭐
🎯 이번에 배울 것
📚 사전 지식
- #07편: Claude Code 시작하기 - Claude Code 기본 사용법
- #11편: Skills - 슬래시 명령어 이해
📖 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 조합으로 보안 확보
🔗 다음 편 미리보기
터미널 밖에서도 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의 한계를 넘어서세요!
![[이제와서 시작하는 Claude AI 마스터하기 #13] MCP로 외부 도구 연결하기](/assets/img/posts/claude/claude-master-13.png)