기본적으로 Claude Code를 실행하는 모든 사용자는 선택한 모든 MCP 서버에 연결할 수 있습니다. Anthropic은 Anthropic Directory에 추가하기 전에 커넥터를 나열 기준에 따라 검토하지만, MCP 서버에 대한 보안 감사나 관리를 수행하지 않습니다. 관리자는 조직에서 실행되는 서버를 제한할 수 있으며, 승인된 고정 집합을 배포하는 것부터 MCP를 완전히 비활성화하는 것까지 가능합니다. 이 페이지에서는 다음을 다룹니다:Documentation Index
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
- 필요한 제어 수준에 맞는 패턴 선택
managed-mcp.json으로 고정 서버 집합 배포, MCP 완전히 비활성화 방법 포함- 허용 목록 및 거부 목록으로 서버 제어
- 제한이 서버를 차단할 때 사용자에게 표시되는 내용 알리기
- 조직이 실제로 사용하는 서버 모니터링
패턴 선택
Claude Code는 다양한 제한 수준을 지원합니다. 각 패턴은 아래에서 다루는 메커니즘 중 하나 또는 둘 다를 사용합니다: 고정 집합을 배포하기 위한managed-mcp.json과 사용자가 구성하는 항목을 필터링하기 위한 allowedMcpServers/deniedMcpServers.
| 패턴 | 수행 작업 | 구성 |
|---|---|---|
| MCP 비활성화 | 어디서도 서버가 로드되지 않음 | 빈 서버 맵이 있는 managed-mcp.json |
| 고정 배포 | 모든 사용자가 동일한 서버를 받으며 다른 서버를 추가할 수 없음 | 원하는 서버가 있는 managed-mcp.json |
| 승인된 카탈로그 | 승인된 서버 목록을 게시하고, 사용자가 원하는 서버를 추가하며, 다른 모든 항목은 차단됨 | allowedMcpServers + allowManagedMcpServersOnly: true |
| 플러그인 서버만 | 서버는 플러그인에서만 가져올 수 있으며, 사용자는 자신의 서버를 추가할 수 없음 | strictPluginOnlyCustomization과 목록의 mcp |
| 소프트 허용 목록 | 사용자가 자신의 설정에서 확대할 수 있는 허용 목록 적용 | allowManagedMcpServersOnly 없는 allowedMcpServers |
| 거부 목록만 | 알려진 나쁜 서버를 차단하고 다른 모든 항목은 허용 | deniedMcpServers |
| 제한 없음 | 사용자가 모든 항목을 추가 | 관리형 MCP 구성을 배포하지 않음 |
Claude Code에는 사용자가 검색하고 설치할 수 있는 기본 제공 MCP 서버 레지스트리가 없습니다. 승인된 카탈로그 패턴의 경우, 승인된 목록과 해당
claude mcp add 명령을 사용자가 찾을 수 있는 위치(예: 내부 wiki)에서 공유하거나, 관리형 플러그인 마켓플레이스를 통해 플러그인으로 서버를 배포하여 사용자가 /plugin에서 검색하고 설치할 수 있도록 합니다.managed-mcp.json으로 독점 제어
managed-mcp.json 파일을 배포하면 Claude Code는 해당 파일이 정의하는 서버만 로드합니다. 사용자는 플러그인 제공 서버 및 claude.ai 커넥터를 포함한 다른 MCP 서버를 추가, 수정 또는 사용할 수 없습니다.
두 가지 다른 설정이 관리형 집합을 추가로 필터링할 수 있습니다:
allowedMcpServers및deniedMcpServers는 관리형 서버에도 적용되므로, 이를 통과하지 못하는 관리형 서버는 로드되지 않습니다.- 사용자의 자신의
deniedMcpServers는 설정에서 병합되므로, 사용자는 자신을 위해 관리형 서버를 차단할 수 있습니다.
managed-mcp.json은 독립 실행형 파일이므로 서버 관리 설정을 통해 전달될 수 없습니다. 관리자 권한으로 시스템 경로에 쓸 수 있는 모든 프로세스가 배포할 수 있습니다. 규모가 큰 경우, 일반적으로 Jamf 또는 macOS의 구성 프로필, Windows의 그룹 정책 또는 Intune, Linux의 플릿 관리 등의 장치 관리 도구를 통합니다. Claude Code는 다음 경로 중 하나에서 파일을 찾습니다:
| 플랫폼 | 경로 |
|---|---|
| macOS | /Library/Application Support/ClaudeCode/managed-mcp.json |
| Linux 및 WSL | /etc/claude-code/managed-mcp.json |
| Windows | C:\Program Files\ClaudeCode\managed-mcp.json |
.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는 위의 엔터프라이즈 정책 오류로 실패합니다. 사용자가 이전에 구성한 서버는 다음 번에 세션을 시작할 때 로드를 중지하며, 정책이 이유인지에 대한 경고가 없습니다.
허용 목록 및 거부 목록으로 정책 기반 제어
허용 목록 및 거부 목록은 구성된 서버 중 로드할 수 있는 서버를 필터링합니다. 이는 레지스트리가 아닙니다: 허용 목록 또는 거부 목록이 적용되기 전에 사용자, 플러그인 또는managed-mcp.json에 의해 서버를 추가해야 합니다. 사용자에게 서버를 배포하려면 managed-mcp.json을 사용합니다.
허용 목록을 권위 있게 만들려면, 관리형 설정 소스(예: 서버 관리 설정 또는 배포된 managed-settings.json 파일)에서 allowedMcpServers 및 allowManagedMcpServersOnly: true를 함께 설정합니다. 허용 목록을 관리형 설정만으로 제한은 구성을 보여줍니다. allowManagedMcpServersOnly 없이, 모든 설정 소스의 허용 목록이 병합되며, 사용자의 자신의 ~/.claude/settings.json을 포함하므로, 사용자는 허용 목록이 허용하는 항목을 확대할 수 있습니다. 거부 목록은 소스에 관계없이 병합됩니다.
allowManagedMcpServersOnly는 allowManagedPermissionRulesOnly와 별개이며, 이는 권한 규칙만 잠급니다. 해당 플래그를 설정해도 MCP 허용 목록을 적용하지 않습니다.URL, 명령 또는 이름으로 서버 일치
allowedMcpServers 및 deniedMcpServers는 항목 목록입니다. 각 항목은 URL, 명령 또는 이름으로 서버를 식별하는 단일 키가 있는 객체입니다:
| 키 | 일치 | 사용 대상 |
|---|---|---|
serverUrl | 원격 서버 URL, 정확하거나 * 와일드카드 포함 | HTTP 및 SSE 서버 |
serverCommand | stdio 서버를 시작하는 정확한 명령 및 인수 | Stdio 서버 |
serverName | 사용자 할당 레이블. 정확한 일치만, 와일드카드는 확장되지 않음 | 둘 다, 하지만 아래 경고 참조 |
allowedMcpServers를 설정하지 않는 것은 빈 배열로 설정하는 것과 다릅니다:
| 설정 | 설정하지 않음 (기본값) | 빈 배열 [] | 채워짐 |
|---|---|---|---|
allowedMcpServers | 모든 서버 허용 | 서버 없음 허용 | 일치하는 서버만 허용 |
deniedMcpServers | 서버 없음 차단 | 서버 없음 차단 | 일치하는 서버 차단 |
서버 평가 방법
managed-mcp.json의 서버를 포함한 서버를 로드하기 전에, Claude Code는 순서대로 세 가지 확인을 실행합니다:
- 목록 병합. 모든 설정 소스의 허용 목록 및 거부 목록 항목이 하나의 허용 목록 및 하나의 거부 목록으로 결합됩니다.
allowManagedMcpServersOnly가true일 때, 관리형 허용 목록만 유지됩니다. 거부 목록은 항상 모든 소스에서 병합됩니다. - 거부 목록 확인. URL, 명령 또는 이름으로 거부 목록 항목과 일치하는 서버는 차단됩니다. 거부 목록 일치를 재정의하는 것은 없습니다.
- 허용 목록 확인.
allowedMcpServers가 어디서도 설정되지 않으면, 거부 목록을 통과한 모든 서버가 로드됩니다. 설정되면, 서버가 일치해야 하는 항목은 아래 표에 표시된 유형에 따라 다릅니다.
| 서버 유형 | 일치할 때 허용됨 |
|---|---|
| 원격 (HTTP 또는 SSE) | serverUrl 항목. serverName 일치는 허용 목록에 serverUrl 항목이 없을 때만 계산됨 |
| Stdio | serverCommand 항목. serverName 일치는 허용 목록에 serverCommand 항목이 없을 때만 계산됨 |
- 명령은 정확하게 일치합니다. 모든 인수, 순서대로.
["npx", "-y", "server"]는["npx", "server"]또는["npx", "-y", "server", "--flag"]와 일치하지 않습니다. - URL은
*와일드카드를 지원합니다 패턴의 어디서나, 스키마 포함. 호스트명 일치는 대소문자를 구분하지 않으며 후행 FQDN 점을 무시하므로,https://Mcp.Example.com/*는https://mcp.example.com/api와 일치합니다. 경로는 대소문자를 구분합니다.
| 패턴 | 허용 |
|---|---|
https://mcp.example.com/* | 특정 도메인의 모든 경로 |
https://mcp.example.com | 또한 해당 도메인의 모든 경로. 경로가 없는 패턴은 모든 경로와 일치 |
https://*.example.com/* | example.com의 모든 하위 도메인 |
http://localhost:*/* | localhost의 모든 포트 |
*://mcp.example.com/* | 특정 도메인으로의 모든 스키마 |
예제 구성
아래 구성은 거부 목록이 있는 하드 허용 목록을 설정합니다. 강조된 줄은 나머지 목록이 평가되는 방식을 변경하며, 블록 후의 설명은 각각을 설명합니다:- 3번 줄: 첫 번째
serverUrl항목. 하나가 존재하면, 모든 원격 서버는 URL 패턴과 일치해야 하므로, 사용자는 허용된 이름을 제공하여 나열되지 않은 원격 서버를 얻을 수 없습니다. - 5번 줄: 첫 번째
serverCommand항목. stdio 서버에 대해 동일한 효과이므로, 모든 로컬 서버는 나열된 명령과 정확하게 일치해야 합니다. - 11번 줄: 거부 목록의
serverName항목. 거부 목록 항목은 항상 적용되므로,dangerous-server라는 모든 서버는 URL 또는 명령에 관계없이 차단됩니다.
serverName 항목은 두 전송 유형이 이미 더 엄격한 항목을 가지고 있으므로 아무것도 일치하지 않습니다.
아래 아코디언은 다른 허용 목록 및 거부 목록 조합에 대해 서버가 평가되는 방식을 안내합니다.
URL만 허용 목록
URL만 허용 목록
| 서버 | 결과 |
|---|---|
https://mcp.example.com/api의 HTTP 서버 | 허용됨: URL 패턴과 일치 |
https://api.internal.example.com/mcp의 HTTP 서버 | 허용됨: 와일드카드 하위 도메인과 일치 |
https://external.example.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라는 모든 서버 | 차단됨: 이름과 일치하지 않음 |
거부 목록 재정의가 있는 허용 목록
거부 목록 재정의가 있는 허용 목록
| 서버 | 결과 |
|---|---|
https://mcp.example.com/api의 HTTP 서버 | 허용됨: 허용 목록 URL 패턴과 일치, 거부 목록 일치 없음 |
https://staging.example.com/api의 HTTP 서버 | 차단됨: 둘 다 일치하지만 거부 목록이 우선 |
https://other.com/mcp의 HTTP 서버 | 차단됨: 허용 목록과 일치하지 않음 |
허용 목록을 관리형 설정만으로 제한
관리형 허용 목록이 유일하게 적용되도록 하려면, 관리형 설정 파일에서allowManagedMcpServersOnly를 설정합니다:
allowManagedMcpServersOnly가 true일 때, 사용자, 프로젝트 및 로컬 설정의 허용 목록은 무시됩니다. 거부 목록은 여전히 모든 소스에서 병합되므로, 사용자는 항상 자신을 위해 서버를 차단할 수 있습니다.
제한이 사용자에게 표시되는 방식
제한이 서버를 차단할 때, 사용자는claude mcp add에서 오류를 보거나 서버가 조용히 로드를 중지합니다. 이 표를 사용하여 이러한 보고서를 인식하고 변경을 롤아웃하기 전에 사용자에게 예상되는 사항을 알립니다:
| 제한 | 사용자가 보는 것 |
|---|---|
managed-mcp.json이 있고 사용자가 claude mcp add를 실행 | Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers |
서버가 거부 목록에 있고 사용자가 claude mcp add를 실행 | Cannot add MCP server "<name>": server is explicitly blocked by enterprise policy |
서버가 허용 목록에 없고 사용자가 claude mcp add를 실행 | Cannot add MCP server "<name>": not allowed by enterprise policy |
| 이전에 구성된 서버가 이제 정책에 의해 차단됨 | 서버가 /mcp 및 claude mcp list에서 조용히 사라지며 경고 없음 |
MCP 사용 모니터링
OpenTelemetry 내보내기가 구성되면, Claude Code는 사용자가 호출하는 MCP 서버 및 도구를 기록할 수 있습니다.OTEL_LOG_TOOL_DETAILS=1을 설정하여 도구 이벤트에 MCP 서버 및 도구 이름을 포함한 다음, 수집기에서 집계하여 사용자가 실제로 연결하는 서버를 확인합니다. 내보내기를 설정하고 전체 이벤트 스키마는 모니터링을 참조하십시오.
구성 요약
이 페이지에서 다루는 모든 파일 및 설정, 제어 항목 및 전달 방법:| 표면 | 제어 항목 | 위치 | 전달 방법 |
|---|---|---|---|
managed-mcp.json | 고정 서버 집합, 독점 제어 | 시스템 경로: /Library/Application Support/ClaudeCode/, /etc/claude-code/, 또는 C:\Program Files\ClaudeCode\ | MDM, GPO, 플릿 관리, 또는 관리자 권한이 있는 모든 프로세스. 서버 관리 설정을 통해 설정할 수 없음 |
allowedMcpServers | 허용된 서버의 허용 목록 | 모든 설정 파일; 모든 소스의 항목이 allowManagedMcpServersOnly가 설정되지 않으면 병합 | 적용을 위해, 관리형 설정 소스: 서버 관리 설정, managed-settings.json, MDM 프로필, 또는 레지스트리 |
deniedMcpServers | 차단된 서버의 거부 목록 | 모든 설정 파일; 모든 소스의 항목이 병합 | allowedMcpServers와 동일 |
allowManagedMcpServersOnly | 허용 목록을 관리형 소스만으로 잠금 | 관리형 설정 소스만; 설정은 다른 곳에서 효과 없음 | allowedMcpServers와 동일 |
관련 리소스
- 적용할 항목 결정: 권한 규칙, 샌드박싱 및 다른 관리 제어와 함께 MCP 제한
- MCP를 통해 Claude Code를 도구에 연결: 전송, 범위 및 인증을 포함한 전체 MCP 참조
- 설정: 설정 계층 구조 및 관리형 설정이 우선하는 방식
- 서버 관리 설정: Claude.ai 관리 콘솔에서
allowedMcpServers및deniedMcpServers전달 - 보안: 이러한 제어가 방어하는 위협 모델
- Claude Enterprise Administrator Guide: SSO, SCIM, 시트 관리 및 롤아웃 플레이북