메인 콘텐츠로 건너뛰기

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.

기본적으로 Claude Code를 실행하는 모든 사용자는 선택한 모든 MCP 서버에 연결할 수 있습니다. Anthropic은 Anthropic Directory에 추가하기 전에 커넥터를 나열 기준에 따라 검토하지만, MCP 서버에 대한 보안 감사나 관리를 수행하지 않습니다. 관리자는 조직에서 실행되는 서버를 제한할 수 있으며, 승인된 고정 집합을 배포하는 것부터 MCP를 완전히 비활성화하는 것까지 가능합니다. 이 페이지에서는 다음을 다룹니다:
보안 페이지에서는 MCP 위협 모델과 서버를 승인하기 전에 평가하는 방법을 다룹니다. 적용할 항목 결정에서는 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 서버를 추가, 수정 또는 사용할 수 없습니다. 두 가지 다른 설정이 관리형 집합을 추가로 필터링할 수 있습니다:
  • allowedMcpServersdeniedMcpServers는 관리형 서버에도 적용되므로, 이를 통과하지 못하는 관리형 서버는 로드되지 않습니다.
  • 사용자의 자신의 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
WindowsC:\Program Files\ClaudeCode\managed-mcp.json
파일은 프로젝트 .mcp.json 파일과 동일한 형식을 사용합니다:
{
  "mcpServers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/"
    },
    "sentry": {
      "type": "http",
      "url": "https://mcp.sentry.dev/mcp"
    },
    "company-internal": {
      "type": "stdio",
      "command": "/usr/local/bin/company-mcp-server",
      "args": ["--config", "/etc/company/mcp-config.json"],
      "env": {
        "COMPANY_API_URL": "https://internal.example.com"
      }
    }
  }
}

사용자별 자격증명으로 인증

머신의 모든 사용자가 이 파일을 읽을 수 있으므로, env 블록에 API 키나 다른 자격증명을 저장하지 마십시오. 대신 다음 중 하나를 사용하여 사용자별 자격증명을 전달합니다:

구성 검증

파일이 적용되는지 확인하려면 관리형 머신에서 두 가지 확인을 실행합니다:
  1. claude mcp listmanaged-mcp.json의 서버만 표시합니다. 사용자의 자신의 서버가 여전히 나타나면, 파일이 읽혀지지 않습니다. 경로와 권한을 확인합니다.
  2. claude mcp add --transport http test https://example.com/mcpCannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers로 실패합니다. URL이 실제 서버일 필요는 없습니다. 정책 확인이 무엇이든 연결되기 전에 명령을 거부하기 때문입니다.

MCP 완전히 비활성화

빈 서버 맵을 포함하는 managed-mcp.json을 배포하여 모든 MCP 서버를 차단합니다:
{
  "mcpServers": {}
}
사용자는 /mcp에서 MCP 서버를 보지 못하며, claude mcp add는 위의 엔터프라이즈 정책 오류로 실패합니다. 사용자가 이전에 구성한 서버는 다음 번에 세션을 시작할 때 로드를 중지하며, 정책이 이유인지에 대한 경고가 없습니다.

허용 목록 및 거부 목록으로 정책 기반 제어

허용 목록 및 거부 목록은 구성된 서버 중 로드할 수 있는 서버를 필터링합니다. 이는 레지스트리가 아닙니다: 허용 목록 또는 거부 목록이 적용되기 전에 사용자, 플러그인 또는 managed-mcp.json에 의해 서버를 추가해야 합니다. 사용자에게 서버를 배포하려면 managed-mcp.json을 사용합니다. 허용 목록을 권위 있게 만들려면, 관리형 설정 소스(예: 서버 관리 설정 또는 배포된 managed-settings.json 파일)에서 allowedMcpServersallowManagedMcpServersOnly: true를 함께 설정합니다. 허용 목록을 관리형 설정만으로 제한은 구성을 보여줍니다. allowManagedMcpServersOnly 없이, 모든 설정 소스의 허용 목록이 병합되며, 사용자의 자신의 ~/.claude/settings.json을 포함하므로, 사용자는 허용 목록이 허용하는 항목을 확대할 수 있습니다. 거부 목록은 소스에 관계없이 병합됩니다.
allowManagedMcpServersOnlyallowManagedPermissionRulesOnly와 별개이며, 이는 권한 규칙만 잠급니다. 해당 플래그를 설정해도 MCP 허용 목록을 적용하지 않습니다.

URL, 명령 또는 이름으로 서버 일치

allowedMcpServersdeniedMcpServers는 항목 목록입니다. 각 항목은 URL, 명령 또는 이름으로 서버를 식별하는 단일 키가 있는 객체입니다:
일치사용 대상
serverUrl원격 서버 URL, 정확하거나 * 와일드카드 포함HTTP 및 SSE 서버
serverCommandstdio 서버를 시작하는 정확한 명령 및 인수Stdio 서버
serverName사용자 할당 레이블. 정확한 일치만, 와일드카드는 확장되지 않음둘 다, 하지만 아래 경고 참조
allowedMcpServers를 설정하지 않는 것은 빈 배열로 설정하는 것과 다릅니다:
설정설정하지 않음 (기본값)빈 배열 []채워짐
allowedMcpServers모든 서버 허용서버 없음 허용일치하는 서버만 허용
deniedMcpServers서버 없음 차단서버 없음 차단일치하는 서버 차단
serverName 항목만 사용하는 허용 목록은 보안 제어가 아닙니다. 이름은 claude mcp add를 실행하거나 구성 파일을 편집할 때 사용자가 할당하는 레이블이며, 기본 서버가 아니므로, 사용자는 모든 서버를 github라고 부를 수 있습니다. 실제로 실행되는 서버를 적용하려면, serverCommand 또는 serverUrl 항목을 추가합니다.

서버 평가 방법

managed-mcp.json의 서버를 포함한 서버를 로드하기 전에, Claude Code는 순서대로 세 가지 확인을 실행합니다:
  1. 목록 병합. 모든 설정 소스의 허용 목록 및 거부 목록 항목이 하나의 허용 목록 및 하나의 거부 목록으로 결합됩니다. allowManagedMcpServersOnlytrue일 때, 관리형 허용 목록만 유지됩니다. 거부 목록은 항상 모든 소스에서 병합됩니다.
  2. 거부 목록 확인. URL, 명령 또는 이름으로 거부 목록 항목과 일치하는 서버는 차단됩니다. 거부 목록 일치를 재정의하는 것은 없습니다.
  3. 허용 목록 확인. allowedMcpServers가 어디서도 설정되지 않으면, 거부 목록을 통과한 모든 서버가 로드됩니다. 설정되면, 서버가 일치해야 하는 항목은 아래 표에 표시된 유형에 따라 다릅니다.
서버 유형일치할 때 허용됨
원격 (HTTP 또는 SSE)serverUrl 항목. serverName 일치는 허용 목록에 serverUrl 항목이 없을 때만 계산됨
StdioserverCommand 항목. 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/*특정 도메인으로의 모든 스키마

예제 구성

아래 구성은 거부 목록이 있는 하드 허용 목록을 설정합니다. 강조된 줄은 나머지 목록이 평가되는 방식을 변경하며, 블록 후의 설명은 각각을 설명합니다:
{
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverUrl": "https://mcp.sentry.dev/*" },
    { "serverCommand": ["npx", "-y", "@modelcontextprotocol/server-filesystem", "."] },
    { "serverCommand": ["python", "/usr/local/bin/approved-server.py"] },
    { "serverUrl": "https://mcp.example.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ],
  "deniedMcpServers": [
    { "serverName": "dangerous-server" },
    { "serverCommand": ["npx", "-y", "unapproved-package"] },
    { "serverUrl": "https://*.untrusted.example.com/*" }
  ]
}
  • 3번 줄: 첫 번째 serverUrl 항목. 하나가 존재하면, 모든 원격 서버는 URL 패턴과 일치해야 하므로, 사용자는 허용된 이름을 제공하여 나열되지 않은 원격 서버를 얻을 수 없습니다.
  • 5번 줄: 첫 번째 serverCommand 항목. stdio 서버에 대해 동일한 효과이므로, 모든 로컬 서버는 나열된 명령과 정확하게 일치해야 합니다.
  • 11번 줄: 거부 목록의 serverName 항목. 거부 목록 항목은 항상 적용되므로, dangerous-server라는 모든 서버는 URL 또는 명령에 관계없이 차단됩니다.
이 허용 목록의 serverName 항목은 두 전송 유형이 이미 더 엄격한 항목을 가지고 있으므로 아무것도 일치하지 않습니다. 아래 아코디언은 다른 허용 목록 및 거부 목록 조합에 대해 서버가 평가되는 방식을 안내합니다.
{
  "allowedMcpServers": [
    { "serverUrl": "https://mcp.example.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}
서버결과
https://mcp.example.com/api의 HTTP 서버허용됨: URL 패턴과 일치
https://api.internal.example.com/mcp의 HTTP 서버허용됨: 와일드카드 하위 도메인과 일치
https://external.example.com/mcp의 HTTP 서버차단됨: URL 패턴과 일치하지 않음
모든 명령이 있는 Stdio 서버차단됨: 일치할 이름 또는 명령 항목 없음
{
  "allowedMcpServers": [
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
서버결과
["npx", "-y", "approved-package"]가 있는 Stdio 서버허용됨: 명령과 일치
["node", "server.js"]가 있는 Stdio 서버차단됨: 명령과 일치하지 않음
my-api라는 HTTP 서버차단됨: 일치할 이름 항목 없음
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
서버결과
["npx", "-y", "approved-package"]가 있는 local-tool이라는 Stdio 서버허용됨: 명령과 일치
["node", "server.js"]가 있는 local-tool이라는 Stdio 서버차단됨: 명령 항목이 존재하지만 일치하지 않음
["node", "server.js"]가 있는 github라는 Stdio 서버차단됨: stdio 서버는 명령 항목이 존재할 때 명령과 일치해야 함
github라는 HTTP 서버허용됨: 이름과 일치
other-api라는 HTTP 서버차단됨: 이름과 일치하지 않음
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverName": "internal-tool" }
  ]
}
서버결과
모든 명령이 있는 github라는 Stdio 서버허용됨: 명령 제한 없음
모든 명령이 있는 internal-tool이라는 Stdio 서버허용됨: 명령 제한 없음
github라는 HTTP 서버허용됨: 이름과 일치
other라는 모든 서버차단됨: 이름과 일치하지 않음
{
  "allowedMcpServers": [
    { "serverUrl": "https://*.example.com/*" }
  ],
  "deniedMcpServers": [
    { "serverUrl": "https://staging.example.com/*" }
  ]
}
서버결과
https://mcp.example.com/api의 HTTP 서버허용됨: 허용 목록 URL 패턴과 일치, 거부 목록 일치 없음
https://staging.example.com/api의 HTTP 서버차단됨: 둘 다 일치하지만 거부 목록이 우선
https://other.com/mcp의 HTTP 서버차단됨: 허용 목록과 일치하지 않음

허용 목록을 관리형 설정만으로 제한

관리형 허용 목록이 유일하게 적용되도록 하려면, 관리형 설정 파일에서 allowManagedMcpServersOnly를 설정합니다:
{
  "allowManagedMcpServersOnly": true,
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}
allowManagedMcpServersOnlytrue일 때, 사용자, 프로젝트 및 로컬 설정의 허용 목록은 무시됩니다. 거부 목록은 여전히 모든 소스에서 병합되므로, 사용자는 항상 자신을 위해 서버를 차단할 수 있습니다.

제한이 사용자에게 표시되는 방식

제한이 서버를 차단할 때, 사용자는 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
이전에 구성된 서버가 이제 정책에 의해 차단됨서버가 /mcpclaude 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와 동일

관련 리소스