MCP 설정 가이드
Claude Code에서 MCP(Model Context Protocol) 서버를 설정하고 관리하는 가이드.
1. Transport 선택
| Transport | 용도 | 예시 |
|---|---|---|
| stdio | 로컬 CLI 도구 실행 | Playwright, Filesystem, Memory |
| http | 원격 API 서버 연결 (권장) | 자체 MCP 서버, 클라우드 서비스 |
| deprecated, http로 마이그레이션 | - |
stdio (로컬 도구)
{
"mcpServers": {
"서버명": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@scope/mcp-server-xxx"]
}
}
}
http (원격 서버)
{
"mcpServers": {
"서버명": {
"type": "http",
"url": "https://mcp.example.com/sse"
}
}
}
2. Scope 우선순위
MCP 설정은 3개 위치에서 정의 가능. 우선순위:
- 프로젝트
.mcp.json(최우선) - 프로젝트 루트 - 유저
~/.claude/- 전역 설정 - 엔터프라이즈 정책 - 조직 관리
같은 이름의 서버가 여러 스코프에 있으면 상위 우선순위가 적용
3. 환경변수 확장
.mcp.json에서 환경변수 참조:
{
"env": {
"API_KEY": "${MY_API_KEY}",
"TIMEOUT": "${TIMEOUT:-30000}",
"MODE": "${MODE:-production}"
}
}
| 패턴 | 동작 |
|---|---|
${VAR} | 필수 - 미설정 시 에러 |
${VAR:-default} | 선택 - 미설정 시 기본값 사용 |
환경변수는
.env또는 시스템 환경변수로 설정. 절대.mcp.json에 직접 입력 금지
4. 보안
필수 규칙
- API 키, 토큰은 반드시
${VAR}환경변수로 참조 .env파일은.gitignore에 등록 (커밋 금지)- Service Role Key 등 고권한 키는 로컬 개발에서만 사용
- 프로덕션 DB 직접 연결 피하기
.mcp.json 예시 (안전)
{
"mcpServers": {
"supabase": {
"type": "stdio",
"command": "npx",
"args": ["-y", "supabase-mcp"],
"env": {
"SUPABASE_URL": "${SUPABASE_URL}",
"SUPABASE_SERVICE_ROLE_KEY": "${SUPABASE_SERVICE_ROLE_KEY}"
}
}
}
}
.env 예시
SUPABASE_URL=https://xxx.supabase.co
SUPABASE_SERVICE_ROLE_KEY=eyJhbGciOiJIUzI1NiIs...
5. Tool Search
Sonnet 4+ / Opus 4+ 에서 사용 가능. 도구가 100개 이상이거나 지연 로딩이 필요할 때 유용.
# 자동 Tool Search 활성화
ENABLE_TOOL_SEARCH=auto:5
auto:N: N개 이상 도구 시 자동 활성화- MCP 서버가 많아 도구 수가 급증할 때 권장
6. 환경변수 튜닝
| 환경변수 | 기본값 | 설명 |
|---|---|---|
MCP_TIMEOUT | 10000 | 도구 호출 타임아웃 (ms) |
MAX_MCP_OUTPUT_TOKENS | 25000 | MCP 출력 최대 토큰 |
MCP_HEARTBEAT_TIMEOUT_SECONDS | 300 | 하트비트 타임아웃 |
ENABLE_TOOL_SEARCH | - | Tool Search 활성화 |
7. 트러블슈팅
| 증상 | 원인 | 해결 |
|---|---|---|
MCP server disconnected | 서버 프로세스 크래시 | 로그 확인, command 경로 검증 |
Tool not found | 서버 미등록 또는 이름 오류 | .mcp.json 확인, mcp__서버명__ 형식 확인 |
Environment variable not set | ${VAR} 미설정 | .env 또는 시스템 환경변수 확인 |
Timeout | 서버 응답 지연 | MCP_TIMEOUT 증가 |
npx: command not found | Node.js 미설치 | Node.js 18+ 설치 |
Permission denied | 실행 권한 부족 | chmod +x 또는 관리자 권한 |
디버깅 명령
# MCP 서버 수동 실행 테스트
npx -y @anthropic-ai/mcp-server-playwright
# 환경변수 확인
echo $TAVILY_API_KEY
# Claude Code에서 MCP 상태 확인
# /kdymcp health
8. 프리셋 사용
프로젝트 타입별 사전 정의된 .mcp.json 프리셋:
| 프리셋 | 포함 서버 | 용도 |
|---|---|---|
web-fullstack | Playwright, Filesystem | Next.js + Supabase 풀스택 |
web-crawler | Playwright, Tavily, Memory | 크롤링 프로젝트 |
data-pipeline | Filesystem, PostgreSQL | 데이터 파이프라인 |
api-server | PostgreSQL | API 서버 |
minimal | Filesystem | 최소 설정 |
# 프리셋 적용
/kdymcp template web-fullstack