MCP로 할 수 있는 것
MCP 서버가 연결되면 Claude Code에 다음을 요청할 수 있습니다:- 이슈 추적기에서 기능 구현: “JIRA 이슈 ENG-4521에 설명된 기능을 추가하고 GitHub에서 PR을 생성하세요.”
- 모니터링 데이터 분석: “Sentry와 Statsig을 확인하여 ENG-4521에 설명된 기능의 사용 현황을 확인하세요.”
- 데이터베이스 쿼리: “PostgreSQL 데이터베이스를 기반으로 기능 ENG-4521을 사용한 무작위 사용자 10명의 이메일을 찾으세요.”
- 디자인 통합: “Slack에 게시된 새로운 Figma 디자인을 기반으로 표준 이메일 템플릿을 업데이트하세요.”
- 워크플로우 자동화: “이 10명의 사용자를 새로운 기능에 대한 피드백 세션에 초대하는 Gmail 초안을 생성하세요.”
인기 있는 MCP 서버
Claude Code에 연결할 수 있는 일반적으로 사용되는 MCP 서버는 다음과 같습니다:특정 통합이 필요하신가요? GitHub에서 수백 개 이상의 MCP 서버를 찾거나 MCP SDK를 사용하여 자신만의 서버를 구축하세요.
MCP 서버 설치
MCP 서버는 필요에 따라 세 가지 방법으로 구성할 수 있습니다:옵션 1: 원격 HTTP 서버 추가
HTTP 서버는 원격 MCP 서버에 연결하기 위한 권장 옵션입니다. 이는 클라우드 기반 서비스에 가장 널리 지원되는 전송 방식입니다.옵션 2: 원격 SSE 서버 추가
옵션 3: 로컬 stdio 서버 추가
Stdio 서버는 컴퓨터에서 로컬 프로세스로 실행됩니다. 시스템에 직접 액세스해야 하거나 사용자 정의 스크립트가 필요한 도구에 이상적입니다.중요: 옵션 순서모든 옵션(
--transport, --env, --scope, --header)은 서버 이름 앞에 와야 합니다. -- (이중 대시)는 서버 이름과 MCP 서버에 전달되는 명령 및 인수를 구분합니다.예를 들어:claude mcp add --transport stdio myserver -- npx server→npx server실행claude mcp add --transport stdio --env KEY=value myserver -- python server.py --port 8080→ 환경에서KEY=value를 사용하여python server.py --port 8080실행
서버 관리
구성한 후에는 다음 명령으로 MCP 서버를 관리할 수 있습니다:동적 도구 업데이트
Claude Code는 MCPlist_changed 알림을 지원하므로 MCP 서버가 연결을 끊었다가 다시 연결할 필요 없이 사용 가능한 도구, 프롬프트 및 리소스를 동적으로 업데이트할 수 있습니다. MCP 서버가 list_changed 알림을 보내면 Claude Code는 해당 서버에서 사용 가능한 기능을 자동으로 새로 고칩니다.
플러그인 제공 MCP 서버
플러그인은 MCP 서버를 번들로 제공할 수 있으며, 플러그인이 활성화되면 자동으로 도구 및 통합을 제공합니다. 플러그인 MCP 서버는 사용자 구성 서버와 동일하게 작동합니다. 플러그인 MCP 서버의 작동 방식:- 플러그인은 플러그인 루트의
.mcp.json또는plugin.json에 인라인으로 MCP 서버를 정의합니다 - 플러그인이 활성화되면 MCP 서버가 자동으로 시작됩니다
- 플러그인 MCP 도구는 수동으로 구성된 MCP 도구와 함께 나타납니다
- 플러그인 서버는 플러그인 설치를 통해 관리됩니다 (
/mcp명령이 아님)
.mcp.json:
plugin.json에 인라인:
- 자동 수명 주기: 플러그인이 활성화되면 서버가 시작되지만 MCP 서버 변경 사항을 적용하려면 Claude Code를 다시 시작해야 합니다 (활성화 또는 비활성화)
- 환경 변수: 플러그인 상대 경로에
${CLAUDE_PLUGIN_ROOT}사용 - 사용자 환경 액세스: 수동으로 구성된 서버와 동일한 환경 변수에 액세스
- 여러 전송 유형: stdio, SSE 및 HTTP 전송 지원 (전송 지원은 서버에 따라 다를 수 있음)
- 번들 배포: 도구 및 서버가 함께 패키지됨
- 자동 설정: 수동 MCP 구성이 필요 없음
- 팀 일관성: 플러그인이 설치되면 모든 사람이 동일한 도구를 얻음
MCP 설치 범위
MCP 서버는 세 가지 다른 범위 수준에서 구성할 수 있으며, 각각 서버 접근성 및 공유 관리를 위한 고유한 목적을 제공합니다. 이러한 범위를 이해하면 특정 요구 사항에 맞게 서버를 구성하는 최선의 방법을 결정하는 데 도움이 됩니다.로컬 범위
로컬 범위 서버는 기본 구성 수준을 나타내며 프로젝트 경로 아래~/.claude.json에 저장됩니다. 이러한 서버는 사용자에게만 비공개이며 현재 프로젝트 디렉토리 내에서 작업할 때만 액세스할 수 있습니다. 이 범위는 개인 개발 서버, 실험적 구성 또는 공유하면 안 되는 민감한 자격 증명을 포함하는 서버에 이상적입니다.
프로젝트 범위
프로젝트 범위 서버는 프로젝트 루트 디렉토리의.mcp.json 파일에 구성을 저장하여 팀 협업을 활성화합니다. 이 파일은 버전 제어에 체크인되도록 설계되어 모든 팀 멤버가 동일한 MCP 도구 및 서비스에 액세스할 수 있도록 합니다. 프로젝트 범위 서버를 추가하면 Claude Code는 자동으로 이 파일을 생성하거나 적절한 구성 구조로 업데이트합니다.
.mcp.json 파일은 표준화된 형식을 따릅니다:
.mcp.json 파일의 프로젝트 범위 서버를 사용하기 전에 승인을 요청합니다. 이러한 승인 선택을 재설정해야 하는 경우 claude mcp reset-project-choices 명령을 사용하세요.
사용자 범위
사용자 범위 서버는~/.claude.json에 저장되며 크로스 프로젝트 접근성을 제공하므로 컴퓨터의 모든 프로젝트에서 사용할 수 있으면서 사용자 계정에만 비공개로 유지됩니다. 이 범위는 개인 유틸리티 서버, 개발 도구 또는 다양한 프로젝트에서 자주 사용하는 서비스에 적합합니다.
올바른 범위 선택
다음을 기반으로 범위를 선택하세요:- 로컬 범위: 개인 서버, 실험적 구성 또는 한 프로젝트에만 해당하는 민감한 자격 증명
- 프로젝트 범위: 팀 공유 서버, 프로젝트 특정 도구 또는 협업에 필요한 서비스
- 사용자 범위: 여러 프로젝트에서 필요한 개인 유틸리티, 개발 도구 또는 자주 사용하는 서비스
MCP 서버는 어디에 저장되나요?
- 사용자 및 로컬 범위:
~/.claude.json(mcpServers필드 또는 프로젝트 경로 아래) - 프로젝트 범위: 프로젝트 루트의
.mcp.json(소스 제어에 체크인됨) - 관리됨: 시스템 디렉토리의
managed-mcp.json(관리되는 MCP 구성 참조)
범위 계층 및 우선 순위
MCP 서버 구성은 명확한 우선 순위 계층을 따릅니다. 동일한 이름의 서버가 여러 범위에 존재할 때 시스템은 로컬 범위 서버를 먼저 우선시하고, 그 다음 프로젝트 범위 서버, 마지막으로 사용자 범위 서버를 우선시하여 충돌을 해결합니다. 이 설계는 필요할 때 개인 구성이 공유 구성을 재정의할 수 있도록 합니다..mcp.json의 환경 변수 확장
Claude Code는 .mcp.json 파일의 환경 변수 확장을 지원하므로 팀이 구성을 공유하면서 머신 특정 경로 및 API 키와 같은 민감한 값에 대한 유연성을 유지할 수 있습니다.
지원되는 구문:
${VAR}- 환경 변수VAR의 값으로 확장${VAR:-default}- 설정된 경우VAR로 확장되고, 그렇지 않으면default사용
command- 서버 실행 파일 경로args- 명령줄 인수env- 서버에 전달되는 환경 변수url- HTTP 서버 유형의 경우headers- HTTP 서버 인증의 경우
실제 예
예: Sentry로 오류 모니터링
예: 코드 검토를 위해 GitHub에 연결
예: PostgreSQL 데이터베이스 쿼리
원격 MCP 서버로 인증
많은 클라우드 기반 MCP 서버는 인증이 필요합니다. Claude Code는 보안 연결을 위해 OAuth 2.0을 지원합니다.1
인증이 필요한 서버 추가
예를 들어:
2
Claude Code 내에서 /mcp 명령 사용
Claude Code에서 다음 명령을 사용하세요:그런 다음 브라우저에서 로그인 단계를 따르세요.
JSON 구성에서 MCP 서버 추가
MCP 서버에 대한 JSON 구성이 있는 경우 직접 추가할 수 있습니다:1
JSON에서 MCP 서버 추가
2
서버가 추가되었는지 확인
Claude Desktop에서 MCP 서버 가져오기
Claude Desktop에서 MCP 서버를 이미 구성한 경우 가져올 수 있습니다:1
Claude Desktop에서 서버 가져오기
2
가져올 서버 선택
명령을 실행한 후 가져올 서버를 선택할 수 있는 대화형 대화 상자가 표시됩니다.
3
서버가 가져와졌는지 확인
Claude Code를 MCP 서버로 사용
Claude Code 자체를 다른 애플리케이션이 연결할 수 있는 MCP 서버로 사용할 수 있습니다:MCP 출력 제한 및 경고
MCP 도구가 큰 출력을 생성할 때 Claude Code는 토큰 사용을 관리하여 대화 컨텍스트가 압도되지 않도록 합니다:- 출력 경고 임계값: MCP 도구 출력이 10,000 토큰을 초과하면 Claude Code에서 경고를 표시합니다
- 구성 가능한 제한:
MAX_MCP_OUTPUT_TOKENS환경 변수를 사용하여 최대 허용 MCP 출력 토큰을 조정할 수 있습니다 - 기본 제한: 기본 최대값은 25,000 토큰입니다
- 대규모 데이터 세트 또는 데이터베이스 쿼리
- 상세한 보고서 또는 문서 생성
- 광범위한 로그 파일 또는 디버깅 정보 처리
MCP 리소스 사용
MCP 서버는 파일을 참조하는 방식과 유사하게 @ 멘션을 사용하여 참조할 수 있는 리소스를 노출할 수 있습니다.MCP 리소스 참조
1
사용 가능한 리소스 나열
프롬프트에
@를 입력하여 연결된 모든 MCP 서버에서 사용 가능한 리소스를 확인하세요. 리소스는 자동 완성 메뉴의 파일과 함께 나타납니다.2
특정 리소스 참조
@server:protocol://resource/path 형식을 사용하여 리소스를 참조하세요:3
여러 리소스 참조
단일 프롬프트에서 여러 리소스를 참조할 수 있습니다:
MCP 프롬프트를 슬래시 명령으로 사용
MCP 서버는 Claude Code에서 슬래시 명령으로 사용 가능해지는 프롬프트를 노출할 수 있습니다.MCP 프롬프트 실행
1
사용 가능한 프롬프트 발견
/를 입력하여 MCP 서버의 프롬프트를 포함한 모든 사용 가능한 명령을 확인하세요. MCP 프롬프트는 /mcp__servername__promptname 형식으로 나타납니다.2
인수 없이 프롬프트 실행
3
인수를 사용하여 프롬프트 실행
많은 프롬프트는 인수를 허용합니다. 명령 뒤에 공백으로 구분된 인수를 전달하세요:
관리되는 MCP 구성
MCP 서버에 대한 중앙 집중식 제어가 필요한 조직의 경우 Claude Code는 두 가지 구성 옵션을 지원합니다:managed-mcp.json을 사용한 독점 제어: 사용자가 수정하거나 확장할 수 없는 고정된 MCP 서버 세트 배포- 허용 목록/거부 목록을 사용한 정책 기반 제어: 사용자가 자신의 서버를 추가할 수 있지만 허용되는 서버를 제한
- 직원이 액세스할 수 있는 MCP 서버 제어: 조직 전체에 승인된 MCP 서버의 표준화된 세트 배포
- 승인되지 않은 MCP 서버 방지: 사용자가 승인되지 않은 MCP 서버를 추가하지 못하도록 제한
- MCP 완전히 비활성화: 필요한 경우 MCP 기능을 완전히 제거
옵션 1: managed-mcp.json을 사용한 독점 제어
managed-mcp.json 파일을 배포하면 모든 MCP 서버에 대한 독점 제어가 됩니다. 사용자는 이 파일에 정의된 서버 이외의 MCP 서버를 추가, 수정 또는 사용할 수 없습니다. 이는 완전한 제어를 원하는 조직을 위한 가장 간단한 방법입니다.
시스템 관리자는 구성 파일을 시스템 전체 디렉토리에 배포합니다:
- macOS:
/Library/Application Support/ClaudeCode/managed-mcp.json - Linux 및 WSL:
/etc/claude-code/managed-mcp.json - Windows:
C:\Program Files\ClaudeCode\managed-mcp.json
이는 시스템 전체 경로입니다 (
~/Library/...와 같은 사용자 홈 디렉토리가 아님). 관리자 권한이 필요하며 IT 관리자가 배포하도록 설계되었습니다.managed-mcp.json 파일은 표준 .mcp.json 파일과 동일한 형식을 사용합니다:
옵션 2: 허용 목록 및 거부 목록을 사용한 정책 기반 제어
독점 제어를 하는 대신 관리자는 사용자가 자신의 MCP 서버를 구성할 수 있도록 허용하면서 허용되는 서버에 제한을 적용할 수 있습니다. 이 방법은 관리되는 설정 파일의allowedMcpServers 및 deniedMcpServers를 사용합니다.
옵션 선택: 사용자 사용자 정의 없이 고정된 서버 세트를 배포하려면 옵션 1 (
managed-mcp.json)을 사용하세요. 사용자가 정책 제약 내에서 자신의 서버를 추가할 수 있도록 하려면 옵션 2 (허용 목록/거부 목록)를 사용하세요.제한 옵션
허용 목록 또는 거부 목록의 각 항목은 세 가지 방법으로 서버를 제한할 수 있습니다:- 서버 이름으로 (
serverName): 서버의 구성된 이름과 일치 - 명령으로 (
serverCommand): stdio 서버를 시작하는 데 사용되는 정확한 명령 및 인수와 일치 - URL 패턴으로 (
serverUrl): 와일드카드 지원을 사용하여 원격 서버 URL과 일치
serverName, serverCommand 또는 serverUrl 중 정확히 하나를 가져야 합니다.
구성 예
명령 기반 제한이 작동하는 방식
정확한 일치:- 명령 배열은 정확히 일치해야 합니다 - 명령과 올바른 순서의 모든 인수
- 예:
["npx", "-y", "server"]는["npx", "server"]또는["npx", "-y", "server", "--flag"]와 일치하지 않습니다
- 허용 목록에 어떤
serverCommand항목이 포함되어 있으면 stdio 서버는 해당 명령 중 하나와 일치해야 합니다 - Stdio 서버는 명령 제한이 있을 때 이름만으로는 통과할 수 없습니다
- 이렇게 하면 관리자가 실행할 수 있는 명령을 적용할 수 있습니다
- 원격 서버 (HTTP, SSE, WebSocket)는 허용 목록에
serverUrl항목이 있을 때 URL 기반 일치를 사용합니다 - URL 항목이 없으면 원격 서버는 이름 기반 일치로 돌아갑니다
- 명령 제한은 원격 서버에 적용되지 않습니다
URL 기반 제한이 작동하는 방식
URL 패턴은*를 사용한 와일드카드를 지원하여 문자의 모든 시퀀스와 일치합니다. 이는 전체 도메인 또는 하위 도메인을 허용하는 데 유용합니다.
와일드카드 예:
https://mcp.company.com/*- 특정 도메인의 모든 경로 허용https://*.example.com/*- example.com의 모든 하위 도메인 허용http://localhost:*/*- localhost의 모든 포트 허용
- 허용 목록에 어떤
serverUrl항목이 포함되어 있으면 원격 서버는 해당 URL 패턴 중 하나와 일치해야 합니다 - 원격 서버는 URL 제한이 있을 때 이름만으로는 통과할 수 없습니다
- 이렇게 하면 관리자가 허용되는 원격 끝점을 적용할 수 있습니다
예: URL 전용 허용 목록
예: URL 전용 허용 목록
https://mcp.company.com/api의 HTTP 서버: ✅ 허용됨 (URL 패턴과 일치)https://api.internal.corp/mcp의 HTTP 서버: ✅ 허용됨 (와일드카드 하위 도메인과 일치)https://external.com/mcp의 HTTP 서버: ❌ 차단됨 (URL 패턴과 일치하지 않음)- 모든 명령을 사용하는 Stdio 서버: ❌ 차단됨 (일치할 이름 또는 명령 항목 없음)
예: 명령 전용 허용 목록
예: 명령 전용 허용 목록
["npx", "-y", "approved-package"]를 사용하는 Stdio 서버: ✅ 허용됨 (명령과 일치)["node", "server.js"]를 사용하는 Stdio 서버: ❌ 차단됨 (명령과 일치하지 않음)- “my-api”라는 이름의 HTTP 서버: ❌ 차단됨 (일치할 이름 항목 없음)
예: 혼합 이름 및 명령 허용 목록
예: 혼합 이름 및 명령 허용 목록
["npx", "-y", "approved-package"]를 사용하는 “local-tool”이라는 Stdio 서버: ✅ 허용됨 (명령과 일치)["node", "server.js"]를 사용하는 “local-tool”이라는 Stdio 서버: ❌ 차단됨 (명령 항목이 있지만 일치하지 않음)["node", "server.js"]를 사용하는 “github”이라는 Stdio 서버: ❌ 차단됨 (명령 제한이 있을 때 stdio 서버는 명령과 일치해야 함)- “github”이라는 이름의 HTTP 서버: ✅ 허용됨 (이름과 일치)
- “other-api”라는 이름의 HTTP 서버: ❌ 차단됨 (이름이 일치하지 않음)
예: 이름 전용 허용 목록
예: 이름 전용 허용 목록
- 모든 명령을 사용하는 “github”이라는 Stdio 서버: ✅ 허용됨 (명령 제한 없음)
- 모든 명령을 사용하는 “internal-tool”이라는 Stdio 서버: ✅ 허용됨 (명령 제한 없음)
- “github”이라는 이름의 HTTP 서버: ✅ 허용됨 (이름과 일치)
- “other”라는 이름의 모든 서버: ❌ 차단됨 (이름이 일치하지 않음)
허용 목록 동작 (allowedMcpServers)
undefined(기본값): 제한 없음 - 사용자는 모든 MCP 서버를 구성할 수 있습니다- 빈 배열
[]: 완전한 잠금 - 사용자는 MCP 서버를 구성할 수 없습니다 - 항목 목록: 사용자는 이름, 명령 또는 URL 패턴과 일치하는 서버만 구성할 수 있습니다
거부 목록 동작 (deniedMcpServers)
undefined(기본값): 차단된 서버 없음- 빈 배열
[]: 차단된 서버 없음 - 항목 목록: 지정된 서버는 모든 범위에서 명시적으로 차단됩니다
중요 참고 사항
- 옵션 1과 옵션 2를 결합할 수 있습니다:
managed-mcp.json이 존재하면 독점 제어가 되고 사용자는 서버를 추가할 수 없습니다. 허용 목록/거부 목록은 여전히 관리되는 서버 자체에 적용됩니다. - 거부 목록이 절대적 우선 순위를 가집니다: 서버가 거부 목록 항목과 일치하면 (이름, 명령 또는 URL로) 허용 목록에 있어도 차단됩니다
- 이름 기반, 명령 기반 및 URL 기반 제한이 함께 작동합니다: 서버는 이름 항목, 명령 항목 또는 URL 패턴 중 하나와 일치하면 통과합니다 (거부 목록으로 차단되지 않는 한)
managed-mcp.json 사용 시: 사용자는 claude mcp add 또는 구성 파일을 통해 MCP 서버를 추가할 수 없습니다. allowedMcpServers 및 deniedMcpServers 설정은 여전히 실제로 로드되는 관리되는 서버를 필터링하기 위해 적용됩니다.