Langsung ke konten utama

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.

Secara default, siapa pun yang menjalankan Claude Code dapat menghubungkan server MCP apa pun yang mereka pilih. Anthropic meninjau konektor terhadap kriteria pendaftarannya sebelum menambahkannya ke Direktori Anthropic, tetapi tidak melakukan audit keamanan atau mengelola server MCP apa pun. Sebagai administrator, Anda dapat membatasi server mana yang berjalan di organisasi Anda, mulai dari menerapkan set yang disetujui tetap hingga menonaktifkan MCP sepenuhnya. Halaman ini mencakup cara untuk:
Halaman Security mencakup model ancaman MCP dan cara mengevaluasi server sebelum menyetujuinya. Tentukan apa yang akan diterapkan mencakup pembatasan MCP bersama dengan kontrol administratif lainnya.

Pilih pola

Claude Code mendukung berbagai tingkat pembatasan. Setiap pola menggunakan satu atau kedua mekanisme yang dibahas di bawah: managed-mcp.json untuk menerapkan set tetap, dan allowedMcpServers/deniedMcpServers untuk memfilter apa yang dikonfigurasi pengguna.
PolaApa yang dilakukanKonfigurasi
Nonaktifkan MCPTidak ada server yang dimuat di mana punmanaged-mcp.json dengan peta server kosong
Penerapan tetapSetiap pengguna mendapatkan server yang sama dan tidak dapat menambah yang lainmanaged-mcp.json dengan server yang Anda inginkan
Katalog yang disetujuiPublikasikan daftar server yang disetujui; pengguna menambahkan yang mereka inginkan, yang lain diblokirallowedMcpServers + allowManagedMcpServersOnly: true
Server plugin sajaServer hanya dapat berasal dari plugin; pengguna tidak dapat menambah milik mereka sendiristrictPluginOnlyCustomization dengan mcp dalam daftar
Daftar izin lunakTerapkan daftar izin yang dapat diperluas pengguna dalam pengaturan mereka sendiriallowedMcpServers tanpa allowManagedMcpServersOnly
Hanya daftar penolakanBlokir server yang diketahui buruk, izinkan yang laindeniedMcpServers
Tanpa pembatasanPengguna menambahkan apa punJangan terapkan konfigurasi MCP yang dikelola
Claude Code tidak memiliki registri server MCP bawaan yang dapat ditelusuri dan diinstal pengguna. Untuk pola katalog yang disetujui, bagikan daftar yang disetujui dan perintah claude mcp add di tempat yang akan ditemukan pengguna Anda, seperti wiki internal, atau distribusikan server sebagai plugin melalui marketplace plugin yang dikelola sehingga pengguna dapat menelusuri dan menginstalnya dari /plugin.

Kontrol eksklusif dengan managed-mcp.json

Jika Anda menerapkan file managed-mcp.json, Claude Code hanya memuat server yang didefinisikan file tersebut. Pengguna tidak dapat menambah, memodifikasi, atau menggunakan server MCP lain apa pun, termasuk server yang disediakan plugin dan konektor claude.ai. Dua pengaturan lainnya dapat memfilter set yang dikelola lebih lanjut:
  • allowedMcpServers dan deniedMcpServers juga berlaku untuk server yang dikelola, jadi server yang dikelola yang tidak melewati mereka tidak akan dimuat.
  • deniedMcpServers pengguna sendiri digabungkan dari pengaturan mereka, jadi pengguna dapat memblokir server yang dikelola untuk diri mereka sendiri.
Lihat Bagaimana server dievaluasi untuk urutan pemeriksaan lengkap. managed-mcp.json adalah file mandiri, jadi tidak dapat dikirimkan melalui pengaturan yang dikelola server. Proses apa pun yang dapat menulis ke jalur sistem dengan hak istimewa administrator dapat menerapkannya. Dalam skala besar, itu biasanya melalui alat manajemen perangkat, seperti Jamf atau profil konfigurasi di macOS, Group Policy atau Intune di Windows, atau manajemen armada pilihan Anda di Linux. Claude Code mencari file di salah satu jalur berikut:
PlatformJalur
macOS/Library/Application Support/ClaudeCode/managed-mcp.json
Linux dan WSL/etc/claude-code/managed-mcp.json
WindowsC:\Program Files\ClaudeCode\managed-mcp.json
File menggunakan format yang sama dengan file proyek .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"
      }
    }
  }
}

Autentikasi dengan kredensial per pengguna

Pengguna apa pun di mesin dapat membaca file ini, jadi jangan simpan kunci API atau kredensial lain dalam blok env. Teruskan kredensial per pengguna dengan salah satu dari ini:

Validasi konfigurasi

Untuk mengonfirmasi file berlaku, jalankan dua pemeriksaan pada mesin yang dikelola:
  1. claude mcp list menampilkan hanya server di managed-mcp.json. Jika server pengguna sendiri masih muncul, file tidak dibaca; periksa jalur dan izin.
  2. claude mcp add --transport http test https://example.com/mcp gagal dengan Cannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers. URL tidak perlu menjadi server nyata, karena pemeriksaan kebijakan menolak perintah sebelum apa pun dihubungi.

Nonaktifkan MCP sepenuhnya

Terapkan managed-mcp.json yang berisi peta server kosong untuk memblokir setiap server MCP:
{
  "mcpServers": {}
}
Pengguna tidak melihat server MCP apa pun di /mcp, dan claude mcp add gagal dengan kesalahan kebijakan perusahaan di atas. Server yang dikonfigurasi pengguna sebelumnya berhenti dimuat saat mereka memulai sesi berikutnya, tanpa peringatan bahwa kebijakan adalah alasannya.

Kontrol berbasis kebijakan dengan daftar izin dan daftar penolakan

Daftar izin dan daftar penolakan memfilter server mana yang dikonfigurasi yang diizinkan untuk dimuat. Mereka bukan registri: server masih harus ditambahkan oleh pengguna, plugin, atau managed-mcp.json sebelum daftar izin atau daftar penolakan berlaku padanya. Untuk menerapkan server kepada pengguna, gunakan managed-mcp.json. Untuk membuat daftar izin berwenang, atur allowedMcpServers dan allowManagedMcpServersOnly: true bersama-sama dalam sumber pengaturan yang dikelola, seperti pengaturan yang dikelola server atau file managed-settings.json yang diterapkan. Batasi daftar izin ke pengaturan yang dikelola saja menunjukkan konfigurasi. Tanpa allowManagedMcpServersOnly, daftar izin dari setiap sumber pengaturan digabungkan, termasuk ~/.claude/settings.json pengguna sendiri, jadi pengguna dapat memperluas apa yang diizinkan daftar izin Anda. Daftar penolakan digabungkan dari setiap sumber terlepas dari itu.
allowManagedMcpServersOnly terpisah dari allowManagedPermissionRulesOnly, yang mengunci aturan izin saja. Menetapkan bendera itu tidak menerapkan daftar izin MCP.

Cocokkan server berdasarkan URL, perintah, atau nama

allowedMcpServers dan deniedMcpServers adalah daftar entri. Setiap entri adalah objek dengan satu kunci yang mengidentifikasi server berdasarkan URL, perintah, atau nama mereka:
KunciCocokGunakan untuk
serverUrlURL server jarak jauh, tepat atau dengan wildcard *Server HTTP dan SSE
serverCommandPerintah dan argumen yang tepat yang memulai server stdioServer stdio
serverNameLabel yang ditetapkan pengguna. Kecocokan tepat saja; wildcard tidak diperluasTipe apa pun, tetapi lihat Peringatan di bawah
Membiarkan allowedMcpServers tidak diatur berbeda dari menetapkannya ke array kosong:
PengaturanTidak diatur (default)Array kosong []Diisi
allowedMcpServersSemua server diizinkanTidak ada server yang diizinkanHanya server yang cocok diizinkan
deniedMcpServersTidak ada server yang diblokirTidak ada server yang diblokirServer yang cocok diblokir
Daftar izin yang hanya menggunakan entri serverName bukan kontrol keamanan. Nama adalah label yang ditetapkan pengguna saat menjalankan claude mcp add atau mengedit file konfigurasi, bukan server yang mendasar, jadi pengguna dapat memanggil server apa pun github. Untuk menerapkan server mana yang benar-benar berjalan, tambahkan entri serverCommand atau serverUrl.

Bagaimana server dievaluasi

Sebelum memuat server, termasuk yang dari managed-mcp.json, Claude Code menjalankan tiga pemeriksaan secara berurutan:
  1. Gabungkan daftarnya. Entri daftar izin dan daftar penolakan dari setiap sumber pengaturan digabungkan menjadi satu daftar izin dan satu daftar penolakan. Ketika allowManagedMcpServersOnly adalah true, hanya daftar izin yang dikelola yang disimpan; daftar penolakan selalu digabungkan dari setiap sumber.
  2. Periksa daftar penolakan. Server yang cocok dengan entri daftar penolakan apa pun, berdasarkan URL, perintah, atau nama, diblokir. Tidak ada yang mengganti kecocokan daftar penolakan.
  3. Periksa daftar izin. Jika allowedMcpServers tidak diatur di mana pun, setiap server yang melewati daftar penolakan dimuat. Jika diatur, apa yang harus cocok dengan server tergantung pada jenisnya, ditunjukkan dalam tabel di bawah.
Jenis serverDiizinkan ketika cocok
Jarak jauh (HTTP atau SSE)Entri serverUrl. Kecocokan serverName hanya dihitung ketika daftar izin tidak berisi entri serverUrl
StdioEntri serverCommand. Kecocokan serverName hanya dihitung ketika daftar izin tidak berisi entri serverCommand
Dua aturan pencocokan berlaku dalam pemeriksaan tersebut:
  • Perintah cocok dengan tepat. Setiap argumen, dalam urutan. ["npx", "-y", "server"] tidak cocok dengan ["npx", "server"] atau ["npx", "-y", "server", "--flag"].
  • URL mendukung wildcard * di mana pun dalam pola, termasuk skema. Pencocokan nama host tidak peka huruf besar-kecil dan mengabaikan titik FQDN yang tertinggal, jadi https://Mcp.Example.com/* cocok dengan https://mcp.example.com/api. Jalur tetap peka huruf besar-kecil.
PolaMengizinkan
https://mcp.example.com/*Semua jalur di domain tertentu
https://mcp.example.comJuga semua jalur di domain itu. Pola tanpa jalur cocok dengan jalur apa pun
https://*.example.com/*Subdomain apa pun dari example.com
http://localhost:*/*Port apa pun di localhost
*://mcp.example.com/*Skema apa pun ke domain tertentu

Contoh konfigurasi

Konfigurasi di bawah menyiapkan daftar izin keras dengan daftar penolakan. Baris yang disorot mengubah cara sisa daftar dievaluasi, dan callout setelah blok menjelaskan masing-masing:
{
  "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/*" }
  ]
}
  • Baris 3: entri serverUrl pertama. Setelah satu ada, setiap server jarak jauh harus cocok dengan pola URL, jadi pengguna tidak dapat mendapatkan server jarak jauh yang tidak terdaftar dengan memberikannya nama yang diizinkan.
  • Baris 5: entri serverCommand pertama. Efek yang sama untuk server stdio, jadi setiap server lokal harus cocok dengan perintah yang terdaftar dengan tepat.
  • Baris 11: entri serverName dalam daftar penolakan. Entri daftar penolakan selalu berlaku, jadi server apa pun yang bernama dangerous-server diblokir terlepas dari URL atau perintahnya.
Entri serverName dalam daftar izin ini tidak akan pernah cocok dengan apa pun, karena kedua jenis transportasi sudah memiliki entri yang lebih ketat. Accordion di bawah menjelaskan cara server dievaluasi terhadap kombinasi daftar izin dan daftar penolakan lainnya.
{
  "allowedMcpServers": [
    { "serverUrl": "https://mcp.example.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}
ServerHasil
Server HTTP di https://mcp.example.com/apiDiizinkan: cocok dengan pola URL
Server HTTP di https://api.internal.example.com/mcpDiizinkan: cocok dengan subdomain wildcard
Server HTTP di https://external.example.com/mcpDiblokir: tidak cocok dengan pola URL apa pun
Server stdio dengan perintah apa punDiblokir: tidak ada entri nama atau perintah untuk cocok
{
  "allowedMcpServers": [
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
ServerHasil
Server stdio dengan ["npx", "-y", "approved-package"]Diizinkan: cocok dengan perintah
Server stdio dengan ["node", "server.js"]Diblokir: tidak cocok dengan perintah
Server HTTP bernama my-apiDiblokir: tidak ada entri nama untuk cocok
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverCommand": ["npx", "-y", "approved-package"] }
  ]
}
ServerHasil
Server stdio bernama local-tool dengan ["npx", "-y", "approved-package"]Diizinkan: cocok dengan perintah
Server stdio bernama local-tool dengan ["node", "server.js"]Diblokir: entri perintah ada tetapi tidak cocok
Server stdio bernama github dengan ["node", "server.js"]Diblokir: server stdio harus cocok dengan perintah ketika entri perintah ada
Server HTTP bernama githubDiizinkan: cocok dengan nama
Server HTTP bernama other-apiDiblokir: nama tidak cocok
{
  "allowedMcpServers": [
    { "serverName": "github" },
    { "serverName": "internal-tool" }
  ]
}
ServerHasil
Server stdio bernama github dengan perintah apa punDiizinkan: tidak ada pembatasan perintah
Server stdio bernama internal-tool dengan perintah apa punDiizinkan: tidak ada pembatasan perintah
Server HTTP bernama githubDiizinkan: cocok dengan nama
Server apa pun bernama otherDiblokir: nama tidak cocok
{
  "allowedMcpServers": [
    { "serverUrl": "https://*.example.com/*" }
  ],
  "deniedMcpServers": [
    { "serverUrl": "https://staging.example.com/*" }
  ]
}
ServerHasil
Server HTTP di https://mcp.example.com/apiDiizinkan: cocok dengan pola URL daftar izin, tidak ada kecocokan daftar penolakan
Server HTTP di https://staging.example.com/apiDiblokir: cocok dengan keduanya, tetapi daftar penolakan memiliki prioritas
Server HTTP di https://other.com/mcpDiblokir: tidak cocok dengan daftar izin

Batasi daftar izin ke pengaturan yang dikelola saja

Untuk membuat daftar izin yang dikelola satu-satunya yang berlaku, atur allowManagedMcpServersOnly dalam file pengaturan yang dikelola:
{
  "allowManagedMcpServersOnly": true,
  "allowedMcpServers": [
    { "serverUrl": "https://api.githubcopilot.com/*" },
    { "serverUrl": "https://*.internal.example.com/*" }
  ]
}
Ketika allowManagedMcpServersOnly adalah true, daftar izin dari pengaturan pengguna, proyek, dan lokal diabaikan. Daftar penolakan masih digabungkan dari semua sumber, jadi pengguna selalu dapat memblokir server untuk diri mereka sendiri.

Bagaimana pembatasan muncul kepada pengguna

Ketika pembatasan memblokir server, pengguna melihat kesalahan dari claude mcp add atau server berhenti dimuat secara diam-diam. Gunakan tabel ini untuk mengenali laporan tersebut dan untuk memberitahu pengguna apa yang diharapkan sebelum Anda meluncurkan perubahan:
PembatasanApa yang dilihat pengguna
managed-mcp.json ada dan pengguna menjalankan claude mcp addCannot add MCP server: enterprise MCP configuration is active and has exclusive control over MCP servers
Server ada di daftar penolakan dan pengguna menjalankan claude mcp addCannot add MCP server "<name>": server is explicitly blocked by enterprise policy
Server tidak ada di daftar izin dan pengguna menjalankan claude mcp addCannot add MCP server "<name>": not allowed by enterprise policy
Server yang dikonfigurasi sebelumnya sekarang diblokir oleh kebijakanServer menghilang secara diam-diam dari /mcp dan claude mcp list tanpa peringatan
Dalam kasus terakhir, pengguna tidak mendapat sinyal bahwa kebijakan adalah alasan server mereka menghilang, jadi beri tahu pengguna yang terpengaruh server mana yang diblokir saat Anda meluncurkan pembatasan baru.

Pantau penggunaan MCP

Ketika ekspor OpenTelemetry dikonfigurasi, Claude Code dapat merekam server MCP dan alat mana yang digunakan pengguna. Atur OTEL_LOG_TOOL_DETAILS=1 untuk menyertakan nama server dan alat MCP dalam acara alat, kemudian agregasikan di kolektor Anda untuk melihat server mana yang benar-benar dihubungkan pengguna Anda. Lihat Monitoring untuk menyiapkan pengekspor dan untuk skema acara lengkap.

Ringkasan konfigurasi

Setiap file dan pengaturan yang dibahas halaman ini, apa yang dikontrolnya, dan cara mengirimkannya:
PermukaanApa yang dikontrolDi mana itu beradaCara mengirimkan
managed-mcp.jsonSet server tetap, kontrol eksklusifJalur sistem: /Library/Application Support/ClaudeCode/, /etc/claude-code/, atau C:\Program Files\ClaudeCode\MDM, GPO, manajemen armada, atau proses apa pun dengan hak istimewa administrator. Tidak dapat diatur melalui pengaturan yang dikelola server
allowedMcpServersDaftar izin server yang diizinkanFile pengaturan apa pun; entri dari setiap sumber digabungkan kecuali allowManagedMcpServersOnly diaturUntuk penegakan, sumber pengaturan yang dikelola: pengaturan yang dikelola server, managed-settings.json, profil MDM, atau registri
deniedMcpServersDaftar penolakan server yang diblokirFile pengaturan apa pun; entri dari setiap sumber digabungkanSama seperti allowedMcpServers
allowManagedMcpServersOnlyMengunci daftar izin ke sumber yang dikelola sajaHanya sumber pengaturan yang dikelola; pengaturan tidak berpengaruh di tempat lainSama seperti allowedMcpServers

Sumber daya terkait