- 필요한 제어 수준에 맞는 패턴 선택
managed-mcp.json으로 고정 서버 집합 배포, MCP 완전히 비활성화 방법 포함- 허용 목록 및 거부 목록으로 서버 제어
- 제한이 서버를 차단할 때 사용자에게 표시되는 내용 알리기
- 조직이 실제로 사용하는 서버 모니터링
패턴 선택
Claude Code는 다양한 제한 수준을 지원합니다. 각 패턴은 아래에서 다루는 메커니즘 중 하나 또는 둘 다를 사용합니다: 고정 집합을 배포하기 위한managed-mcp.json과 사용자가 구성하는 항목을 필터링하기 위한 allowedMcpServers/deniedMcpServers.
Claude Code에는 사용자가 검색하고 설치할 수 있는 기본 제공 MCP 서버 레지스트리가 없습니다. 승인된 카탈로그 패턴의 경우, 승인된 목록과 해당
claude mcp add 명령을 사용자가 찾을 수 있는 위치(예: 내부 wiki)에서 공유하거나, 관리형 플러그인 마켓플레이스를 통해 플러그인으로 서버를 배포하여 사용자가 /plugin에서 검색하고 설치할 수 있도록 합니다.managed-mcp.json으로 독점 제어
managed-mcp.json 파일을 배포하면 Claude Code는 해당 파일이 정의하는 서버만 로드합니다. 사용자는 플러그인 제공 서버를 포함한 다른 MCP 서버를 추가, 수정 또는 사용할 수 없습니다. 이 파일은 관리형 집합과 함께 허용하지 않는 한 claude.ai 커넥터도 억제합니다.
두 가지 다른 설정이 관리형 집합을 추가로 필터링할 수 있습니다:
allowedMcpServers및deniedMcpServers는 관리형 서버에도 적용되므로, 이를 통과하지 못하는 관리형 서버는 로드되지 않습니다.- 사용자의 자신의
deniedMcpServers는 설정에서 병합되므로, 사용자는 자신을 위해 관리형 서버를 차단할 수 있습니다.
managed-mcp.json은 독립 실행형 파일이므로 서버 관리 설정을 통해 전달될 수 없습니다. 관리자 권한으로 시스템 경로에 쓸 수 있는 모든 프로세스가 배포할 수 있습니다. 규모가 큰 경우, 일반적으로 Jamf 또는 macOS의 구성 프로필, Windows의 그룹 정책 또는 Intune, Linux의 플릿 관리 등의 장치 관리 도구를 통합니다. Claude Code는 다음 경로 중 하나에서 파일을 찾습니다:
파일은 프로젝트
.mcp.json 파일과 동일한 형식을 사용합니다:
사용자별 자격증명으로 인증
머신의 모든 사용자가 이 파일을 읽을 수 있으므로,env 블록에 API 키나 다른 자격증명을 저장하지 마십시오. 대신 다음 중 하나를 사용하여 사용자별 자격증명을 전달합니다:
${VAR}확장으로 각 사용자의 환경에서 비밀을 읽습니다.- OAuth 또는 사용자별 헤더로 각 사용자가 자신으로 인증합니다.
headersHelper로 연결 시간에 자격증명을 생성합니다.
구성 검증
파일이 적용되는지 확인하려면 관리형 머신에서 두 가지 확인을 실행합니다:claude mcp list는managed-mcp.json의 서버만 표시합니다. 사용자의 자신의 서버가 여전히 나타나면, 파일이 읽혀지지 않습니다. 경로와 권한을 확인합니다.claude mcp add --transport http test https://example.com/mcp는Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers로 실패합니다. URL이 실제 서버일 필요는 없습니다. 정책 확인이 무엇이든 연결되기 전에 명령을 거부하기 때문입니다.
MCP 완전히 비활성화
빈 서버 맵을 포함하는managed-mcp.json을 배포하여 모든 MCP 서버를 차단합니다:
/mcp에서 MCP 서버를 보지 못하며, claude mcp add는 위의 엔터프라이즈 정책 오류로 실패합니다. 사용자가 이전에 구성한 서버는 다음 번에 세션을 시작할 때 로드를 중지하며, 정책이 이유인지에 대한 경고가 없습니다.
관리형 집합과 함께 claude.ai 커넥터 허용
managed-mcp.json을 배포하면 기본적으로 조직의 claude.ai 관리 콘솔에서 관리자가 구성한 커넥터를 포함하여 claude.ai 커넥터를 억제합니다. 이러한 커넥터를 managed-mcp.json의 서버와 함께 로드하려면, 관리형 설정 소스에서 "allowAllClaudeAiMcps": true를 설정합니다. Claude Code v2.1.149 이상이 필요합니다.
설정이 활성화되면, Claude Code는 managed-mcp.json이 배포되지 않은 경우 로드할 것과 동일한 claude.ai 커넥터를 로드합니다. 허용 목록 및 거부 목록은 여전히 이러한 커넥터에 적용되므로, deniedMcpServers로 특정 커넥터를 차단할 수 있습니다. 이 설정은 claude.ai 커넥터에만 영향을 미치며, 플러그인 제공 서버는 억제된 상태로 유지됩니다.
Claude Code는 이 설정을 관리자 제어 정책 계층에서만 읽습니다: 서버 관리 설정, MDM 배포 plist 또는 HKLM 레지스트리 키, 또는 시스템 managed-settings.json 파일입니다. 사용자 또는 프로젝트 설정에 배치하면 효과가 없으므로, 사용자는 독점 제어가 억제한 커넥터를 다시 활성화할 수 없습니다.
허용 목록 및 거부 목록으로 정책 기반 제어
허용 목록 및 거부 목록은 구성된 서버 중 로드할 수 있는 서버를 필터링합니다. 이는 레지스트리가 아닙니다: 허용 목록 또는 거부 목록이 적용되기 전에 사용자, 플러그인 또는managed-mcp.json에 의해 서버를 추가해야 합니다. 사용자에게 서버를 배포하려면 managed-mcp.json을 사용합니다. 두 목록은 또한 --mcp-config CLI 플래그로 전달된 서버를 필터링합니다. --strict-mcp-config는 로드되는 구성 파일을 제한하며 두 목록을 우회하지 않습니다.
허용 목록을 권위 있게 만들려면, 관리형 설정 소스(예: 서버 관리 설정 또는 배포된 managed-settings.json 파일)에서 allowedMcpServers 및 allowManagedMcpServersOnly: true를 함께 설정합니다. 허용 목록을 관리형 설정만으로 제한은 구성을 보여줍니다. allowManagedMcpServersOnly 없이, 모든 설정 소스의 허용 목록이 병합되며, 사용자의 자신의 ~/.claude/settings.json을 포함하므로, 사용자는 허용 목록이 허용하는 항목을 확대할 수 있습니다. 거부 목록은 소스에 관계없이 병합됩니다.
allowManagedMcpServersOnly는 allowManagedPermissionRulesOnly와 별개이며, 이는 권한 규칙만 잠급니다. 해당 플래그를 설정해도 MCP 허용 목록을 적용하지 않습니다.URL, 명령 또는 이름으로 서버 일치
allowedMcpServers 및 deniedMcpServers는 항목 목록입니다. 각 항목은 URL, 명령 또는 이름으로 서버를 식별하는 단일 키가 있는 객체입니다:
allowedMcpServers를 설정하지 않는 것은 빈 배열로 설정하는 것과 다릅니다:
관리형 설정의 잘못된 항목을 참조하여 항목이 스키마 검증에 실패할 때 발생하는 상황을 확인합니다.
serverName 검증은 두 목록 간에 다릅니다:
deniedMcpServers에서,serverName은 모든 비어있지 않은 문자열을 허용하므로, 표시 이름으로 claude.ai 커넥터를 차단할 수 있습니다. 예를 들어,{ "serverName": "claude.ai Slack" }은 Slack 커넥터를 차단합니다. 거부가 이름 변경에 강력해야 할 때 또는 커넥터 이름이 충돌하고(N)접미사를 얻을 때serverUrl항목을 선호합니다.allowedMcpServers에서,serverName은 문자, 숫자, 하이픈 및 밑줄로 제한됩니다. claude.ai 커넥터를 허용 목록에 추가하려면serverUrl을 사용합니다.
disableClaudeAiConnectors를 참조합니다.
서버 평가 방법
managed-mcp.json의 서버를 포함한 서버를 로드하기 전에, Claude Code는 순서대로 세 가지 확인을 실행합니다:
- 목록 병합. 모든 설정 소스의 허용 목록 및 거부 목록 항목이 하나의 허용 목록 및 하나의 거부 목록으로 결합됩니다.
allowManagedMcpServersOnly가true일 때, 관리형 허용 목록만 유지됩니다. 거부 목록은 항상 모든 소스에서 병합됩니다. - 거부 목록 확인. URL, 명령 또는 이름으로 거부 목록 항목과 일치하는 서버는 차단됩니다. 거부 목록 일치를 재정의하는 것은 없습니다.
- 허용 목록 확인.
allowedMcpServers가 어디서도 설정되지 않으면, 거부 목록을 통과한 모든 서버가 로드됩니다. 설정되면, 서버가 일치해야 하는 항목은 아래 표에 표시된 유형에 따라 다릅니다.
이러한 확인 내에서 세 가지 일치 규칙이 적용됩니다:
- 명령은 정확하게 일치합니다. 모든 인수, 순서대로.
["npx", "-y", "server"]는["npx", "server"]또는["npx", "-y", "server", "--flag"]와 일치하지 않습니다. serverCommand및serverUrl값은 일치하기 전에 확장됩니다. 정책 항목과 서버의 구성된 값 모두.mcp.json과 동일한${VAR}및${VAR:-default}확장을 거치므로,["${HOME}/bin/server"]로 작성된 항목은 동일한 참조 또는 확장된 경로를 사용하는 서버 구성과 일치합니다. Windows에서는${HOME}대신${USERPROFILE}과 같이 설정된 환경 변수를 참조합니다.serverName값은 문자 그대로 일치하며 절대 확장되지 않습니다.- URL은
*와일드카드를 지원합니다 패턴의 어디서나, 스키마 포함. 호스트명 일치는 대소문자를 구분하지 않으며 후행 FQDN 점을 무시하므로,https://Mcp.Example.com/*는https://mcp.example.com/api와 일치합니다. 경로는 대소문자를 구분합니다.
${VAR} 확장은 Claude Code의 자체 프로세스 환경을 읽으므로, 변수를 참조하는 serverCommand 또는 serverUrl 정책 항목은 사용자가 설정한 모든 값으로 확장됩니다. 적용을 위해 의존하는 항목에는 리터럴 URL 및 명령을 사용합니다.
예제 구성
아래 구성은 거부 목록이 있는 하드 허용 목록을 설정합니다. 강조된 줄은 나머지 목록이 평가되는 방식을 변경하며, 블록 후의 설명은 각각을 설명합니다:- 3번 줄: 첫 번째
serverUrl항목. 하나가 존재하면, 모든 원격 서버는 URL 패턴과 일치해야 하므로, 사용자는 허용된 이름을 제공하여 나열되지 않은 원격 서버를 얻을 수 없습니다. - 5번 줄: 첫 번째
serverCommand항목. stdio 서버에 대해 동일한 효과이므로, 모든 로컬 서버는 나열된 명령과 정확하게 일치해야 합니다. - 11번 줄: 거부 목록의
serverName항목. 거부 목록 항목은 항상 적용되므로,dangerous-server라는 모든 서버는 URL 또는 명령에 관계없이 차단됩니다.
serverName 항목은 두 전송 유형이 이미 더 엄격한 항목을 가지고 있으므로 아무것도 일치하지 않습니다.
아래 아코디언은 다른 허용 목록 및 거부 목록 조합에 대해 서버가 평가되는 방식을 안내합니다.
URL만 허용 목록
URL만 허용 목록
명령만 허용 목록
명령만 허용 목록
혼합 이름 및 명령 허용 목록
혼합 이름 및 명령 허용 목록
이름만 허용 목록
이름만 허용 목록
거부 목록 재정의가 있는 허용 목록
거부 목록 재정의가 있는 허용 목록
허용 목록을 관리형 설정만으로 제한
관리형 허용 목록이 유일하게 적용되도록 하려면, 관리형 설정 파일에서allowManagedMcpServersOnly를 설정합니다:
allowManagedMcpServersOnly가 true일 때, 사용자, 프로젝트 및 로컬 설정의 허용 목록은 무시됩니다. 거부 목록은 여전히 모든 소스에서 병합되므로, 사용자는 항상 자신을 위해 서버를 차단할 수 있습니다.
제한이 사용자에게 표시되는 방식
제한이 서버를 차단할 때, 사용자는claude mcp add에서 오류를 보거나 서버가 조용히 로드를 중지합니다. 이 표를 사용하여 이러한 보고서를 인식하고 변경을 롤아웃하기 전에 사용자에게 예상되는 사항을 알립니다:
마지막 경우, 사용자는 정책이 서버가 사라진 이유인지에 대한 신호를 받지 못하므로, 새 제한을 롤아웃할 때 영향을 받는 사용자에게 어떤 서버가 차단되는지 알립니다.
MCP 사용 모니터링
OpenTelemetry 내보내기가 구성되면, Claude Code는 사용자가 호출하는 MCP 서버 및 도구를 기록할 수 있습니다.OTEL_LOG_TOOL_DETAILS=1을 설정하여 도구 이벤트에 MCP 서버 및 도구 이름을 포함한 다음, 수집기에서 집계하여 사용자가 실제로 연결하는 서버를 확인합니다. 내보내기를 설정하고 전체 이벤트 스키마는 모니터링을 참조하십시오.
구성 요약
이 페이지에서 다루는 모든 파일 및 설정, 제어 항목 및 전달 방법:관련 리소스
- 적용할 항목 결정: 권한 규칙, 샌드박싱 및 다른 관리 제어와 함께 MCP 제한
- MCP를 통해 Claude Code를 도구에 연결: 전송, 범위 및 인증을 포함한 전체 MCP 참조
- 설정: 설정 계층 구조 및 관리형 설정이 우선하는 방식
- 서버 관리 설정: Claude.ai 관리 콘솔에서
allowedMcpServers및deniedMcpServers전달 - 보안: 이러한 제어가 방어하는 위협 모델
- Claude Enterprise Administrator Guide: SSO, SCIM, 시트 관리 및 롤아웃 플레이북