Skip to content

Claude Code MCP 완전 가이드 ​

Claude Code MCP란? ​

Claude Code는 Anthropic의 공식 AI 명령줄 도구이며, MCP(Model Context Protocol)는 Claude Code가 외부 도구와 서비스에 연결할 수 있게 하는 프로토콜입니다.

간단히 말해, MCP는 Claude Code를 로컬 파일만 읽고 쓸 수 있는 AI 어시스턴트에서, GitHub, 데이터베이스, API, 클라우드 서비스에 접근할 수 있는 슈퍼 어시스턴트로 변환합니다.

Claude Code에서 MCP를 사용하는 이유는? ​

MCP가 없는 Claude Code ​

text
할 수 있는 것:
✓ 로컬 파일 읽기
✓ 코드 편집
✓ 명령 실행
✓ Bash 도구 사용

할 수 없는 것:
✗ GitHub Issues 보기
✗ 클라우드 데이터베이스 접근
✗ 외부 API 호출
✗ 실시간 날씨 확인

MCP가 있는 Claude Code ​

text
할 수 있는 것:
✓ 모든 기존 기능
✓ GitHub Issues 및 PR 보기 / 생성
✓ SQLite 및 PostgreSQL 데이터베이스 쿼리
✓ Notion, Slack 등 외부 서비스 접근
✓ 실시간 날씨 및 지도 데이터 확인
✓ 브라우저 자동화
✓ ...그리고 더 많은 것

빠른 시작 ​

1단계: 설정 파일 위치 이해 ​

Claude Code의 MCP 설정 파일 위치:

수준설정 파일 경로범위
사용자 수준~/.claude.json모든 프로젝트
프로젝트 수준.claude/mcp.json현재 프로젝트

먼저 프로젝트 수준 설정을 사용하는 것이 좋으며, 서로 다른 프로젝트가 서로 다른 MCP 서비스를 사용할 수 있습니다.

2단계: 자연어로 MCP 서버 추가 ​

Claude Code에서는 설정 파일을 수동으로 편집하거나 명령을 암기할 필요가 없습니다. 자연어로 원하는 것을 설명할 수 있습니다:

text
사용자: GitHub MCP 서버를 추가해 줘. 내 토큰은 ghp_xxx야

Claude: GitHub MCP 서버를 설정해 드릴게요...

[자동으로 .claude/mcp.json 업데이트]
text
사용자: SQLite 데이터베이스 서버를 추가해 줘. 데이터베이스 파일은 ./data/app.db에 있어

Claude: 네, SQLite MCP 서버를 설정할게요...
text
사용자: HTTP 유형의 MCP 서버를 추가해 줘. 주소는 https://api.example.com/mcp야

Claude: 원격 MCP 서버를 추가할게요...

3단계: 설정 확인 ​

Claude Code에 직접 물어보세요:

text
사용자: 지금 어떤 MCP 서버를 사용할 수 있어?

Claude: 현재 설정된 MCP 서버:
• github - GitHub 통합
• sqlite - SQLite 데이터베이스
• filesystem - 파일시스템 접근

또는 진단 명령 사용:

text
/doctor

4단계: 사용 시작 ​

설정이 성공하면 자연어로 직접 MCP 기능을 호출할 수 있습니다:

text
사용자: GitHub에 Issue를 만들어 줘

Claude: GitHub Issue를 만들어 드릴게요. 알려주세요:
- 저장소 주소, 예: owner/repo
- Issue 제목
- Issue 설명

Claude Code에서 자연어 관리 ​

MCP 서버 보기 및 관리 ​

자연어로만 Claude Code와 상호작용할 수 있습니다:

text
사용자: 설정된 모든 MCP 서버 나열해 줘

사용자: MCP 서버의 연결 상태를 확인해 줘

사용자: notion이라는 MCP 서버를 삭제해 줘

사용자: github 서버의 토큰을 업데이트해 줘

문제 진단 ​

문제가 발생했을 때:

text
사용자: MCP 연결에 문제가 있는지 확인해 줘

Claude: [자동으로 진단을 실행하고, 설정 파일을 분석하고, 서버 상태를 확인합니다]

설정 방법 상세 ​

사용자 수준 설정, 전역 ​

~/.claude.json 편집:

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
    },
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your-token"
      }
    }
  }
}

프로젝트 수준 설정, 권장 ​

프로젝트 루트의 .claude/mcp.json 편집:

json
{
  "mcpServers": {
    "project-db": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "./data/app.db"]
    }
  }
}

프로젝트 수준 설정의 장점:

  • 팀원들이 Git에 커밋하여 설정을 공유할 수 있음
  • 서로 다른 프로젝트가 서로 다른 MCP 서비스를 사용할 수 있음
  • 설정이 더 유연하며 전역 설정을 오염시키지 않음

전송 모드 ​

Claude Code는 세 가지 전송 모드를 지원합니다:

STDIO, 로컬 프로세스 ​

json
{
  "mcpServers": {
    "local-tool": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/path"]
    }
  }
}

HTTP, 원격 서비스 ​

json
{
  "mcpServers": {
    "remote-api": {
      "url": "https://api.example.com/mcp",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer your-token"
      }
    }
  }
}

SSE, 서버 전송 이벤트 ​

json
{
  "mcpServers": {
    "streaming": {
      "url": "https://api.example.com/sse",
      "transport": "sse"
    }
  }
}

실용적인 예시 ​

예시 1: GitHub 워크플로 자동화 ​

text
사용자: 현재 변경 사항을 GitHub에 푸시하고, "새로운 기능 추가"라는 제목으로 PR을 만들어 줘

Claude:
1. 현재 git 상태 확인...
2. 새 브랜치 feature/new-feature 생성...
3. 변경 사항 커밋...
4. 원격으로 푸시...
5. github_create_pull_request를 호출하여 PR 생성...
6. PR 생성됨: https://github.com/owner/repo/pull/123

예시 2: 데이터베이스 쿼리 ​

text
사용자: 데이터베이스에서 가장 최근에 등록된 10명의 사용자를 쿼리해 줘

Claude:
1. SQLite 데이터베이스에 연결...
2. 쿼리 실행: SELECT * FROM users ORDER BY created_at DESC LIMIT 10
3. 결과 반환:
   - 홍길동 (hong@example.com) - 2025-02-28
   - 김철수 (kim@example.com) - 2025-02-27
   ...

예시 3: 웹페이지 스크린샷 분석 ​

text
사용자: https://example.com을 열어서, 스크린샷을 찍고, 페이지 디자인을 분석해 줘

Claude:
1. 브라우저 실행...
2. https://example.com으로 이동...
3. 스크린샷 캡처...
4. [스크린샷 반환]
5. 페이지 디자인 분석:
   - 레이아웃은 최대 너비 1200px의 중앙 정렬 디자인 사용
   - 메인 컬러는 파란색(#3b82f6)
   - 내비게이션 바가 상단에 고정됨
   ...

예시 4: Notion과 통합 ​

text
사용자: 방금 작성한 노트를 Notion에 저장해 줘

Claude:
1. Notion MCP 서버 사용...
2. 새 페이지 생성...
3. 저장됨: https://notion.so/page/xxx

디버깅 팁 ​

자연어로 진단 ​

문제가 발생하면 Claude Code에 직접 알려주세요:

text
사용자: MCP 서버에 연결할 수 없어. 확인해 줘

사용자: GitHub MCP 도구 호출이 실패했어. 이유가 뭐야?

사용자: sqlite 서버가 계속 "연결 중"이라고 표시되는 이유는?

Claude Code가 자동으로:

  1. 설정 파일 형식 확인
  2. 환경 변수 검증
  3. 서버 연결 테스트
  4. 구체적인 수정 제안 제공

일반적인 문제 해결 ​

문제가능한 원인해결 방법
서버가 연결되지 않음설정 파일 형식 오류JSON 구문 확인
도구를 호출할 수 없음권한 부족환경 변수 확인
연결 시간 초과네트워크 문제URL 또는 네트워크 확인
프로세스 충돌서버 코드 버그서버 로그 확인

수동 진단 명령 ​

text
/doctor

출력 예시:

text
System Diagnostic Report:
===============

Claude Code: v2.5.0 ✓
Node.js: v20.0.0 ✓

MCP server status:
• github: ✓ Connected (12 tools)
• sqlite: ✗ Connection failed - Database file not found
• puppeteer: ✓ Connected (8 tools)

Suggestions:
1. Check whether the sqlite database path is correct
2. Make sure the .claude/mcp.json format is correct

모범 사례 ​

1. 프로젝트 수준 설정 우선 ​

프로젝트 수준 설정을 권장하는 이유?

서로 다른 프로젝트는 종종 서로 다른 MCP 서비스가 필요합니다. 예를 들어, 프론트엔드 프로젝트는 브라우저 테스트 도구가 필요할 수 있고, 백엔드 프로젝트는 데이터베이스 연결이 필요할 수 있습니다. 프로젝트 수준 설정을 사용하면 각 프로젝트가 자체 전용 MCP 서버 세트를 가질 수 있어, 하나의 큰 전역 설정이 혼란스러워지는 것을 방지합니다.

더 중요한 것은, 프로젝트 수준 설정은 Git에 커밋할 수 있습니다. 팀원들이 프로젝트를 클론한 후 모든 것을 다시 설정하지 않고도 동일한 MCP 서비스를 직접 사용할 수 있습니다.

text
프로젝트 A, 프론트엔드 프로젝트 -> .claude/mcp.json에 브라우저 테스트 MCP 포함
프로젝트 B, 백엔드 프로젝트 -> .claude/mcp.json에 데이터베이스 MCP 포함

2. 민감한 정보는 환경 변수에 저장 ​

설정 파일에 비밀을 하드코딩하지 마세요.

설정 파일이 실수로 Git에 커밋되어 키가 유출될 수 있습니다. 올바른 접근 방식은 민감한 값을 환경 변수에 저장하고 설정 파일에서 변수 이름만 참조하는 것입니다. 그러면 설정 파일이 공개되더라도 실제 비밀은 숨겨집니다.

json
{
  "env": {
    "GITHUB_TOKEN": "$GITHUB_TOKEN",
    "GITHUB_TOKEN": "ghp_abc123"
  }
}

첫 번째 형식은 환경 변수에서 읽으므로 좋습니다. 두 번째 형식은 비밀을 직접 하드코딩하므로 나쁩니다.

3. 버전 고정 ​

버전을 고정해야 하는 이유?

기본적으로 npx -y는 항상 MCP 서버의 최신 버전을 사용합니다. 이는 문제를 일으킬 수 있습니다: 새 버전이 호환성을 깨는 변경을 도입할 수 있거나, 패키지가 갑자기 제거되거나 이름이 변경될 수 있습니다.

패키지 이름에 @version을 추가하면 검증된 버전이 항상 사용되어, 자동 업그레이드로 인한 문제를 줄일 수 있습니다.

json
{
  "command": "npx",
  "args": ["-y", "@modelcontextprotocol/server-github@1.2.3"]
}

4. MCP 설정 문서화 ​

팀원들이 MCP 설정을 빠르게 이해하도록 도와주세요

프로젝트에 여러 MCP 서버가 포함된 경우, 새 팀원이 각 서버의 용도나 필요한 설정을 이해하지 못할 수 있습니다. .claude/ 디렉토리 아래에 README.md를 만들어 각 서버의 용도, 필요한 설정, 자격 증명 획득 방법을 설명하면 커뮤니케이션 비용을 크게 줄일 수 있습니다.

프로젝트에 .claude/README.md 만들기:

markdown
# MCP 설정 노트

이 프로젝트에서 사용하는 MCP 서버:

## github
GitHub 자동화에 사용. GITHUB_TOKEN 필요.

## sqlite
./data/app.db에 연결하여 데이터를 쿼리하고 수정.

## puppeteer
E2E 테스트에 사용.

Claude Code vs Claude Desktop ​

기능Claude CodeClaude Desktop
설정 파일~/.claude.json 또는 .claude/mcp.jsonclaude_desktop_config.json
프로젝트 수준 설정✓ 지원✗ 지원 안 함
자연어 관리✓ 지원✗ 수동 편집 필요
진단✓ /doctor✗ 없음
핫 리로드✓ 자동✗ 앱 재시작 필요
사용 사례개발 워크플로, CI/CD일상 사용, 사무 작업

일반적인 MCP 서버 ​

💡 전체 MCP 서버 목록은 부록을 참조하세요: MCP 서버 디렉토리

GitHub 서버 ​

기능: Issues, PR, 저장소 관리

json
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-github"],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "your-token"
      }
    }
  }
}

토큰 획득: https://github.com/settings/tokens

SQLite 서버 ​

기능: SQLite 데이터베이스 쿼리 및 관리

json
{
  "mcpServers": {
    "sqlite": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-sqlite", "--db-path", "./data/database.db"]
    }
  }
}

파일시스템 서버 ​

기능: 지정된 디렉토리 내의 파일에 접근

json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
    }
  }
}

Puppeteer 브라우저 자동화 ​

기능: 브라우저 제어, 스크린샷, 자동화된 테스트

json
{
  "mcpServers": {
    "puppeteer": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-puppeteer"]
    }
  }
}

Brave 검색 서버 ​

기능: 웹 검색

json
{
  "mcpServers": {
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": "your-brave-api-key"
      }
    }
  }
}

참고 자료 ​

공식 문서 ​

공식 서버 ​

튜토리얼 문서 ​

설정 가이드 ​

개발 튜토리얼 ​

MCP 서버 리소스 ​

지도 및 날씨 서비스 ​

커뮤니티 리소스 ​

실제 적용 사례 ​