Apa yang dapat Anda lakukan dengan MCP
Dengan server MCP yang terhubung, Anda dapat meminta Claude Code untuk:- Menerapkan fitur dari pelacak masalah: “Tambahkan fitur yang dijelaskan dalam masalah JIRA ENG-4521 dan buat PR di GitHub.”
- Menganalisis data pemantauan: “Periksa Sentry dan Statsig untuk memeriksa penggunaan fitur yang dijelaskan dalam ENG-4521.”
- Menanyakan database: “Temukan email 10 pengguna acak yang menggunakan fitur ENG-4521, berdasarkan database PostgreSQL kami.”
- Mengintegrasikan desain: “Perbarui template email standar kami berdasarkan desain Figma baru yang diposting di Slack”
- Mengotomatisasi alur kerja: “Buat draf Gmail mengundang 10 pengguna ini ke sesi umpan balik tentang fitur baru.”
- Bereaksi terhadap peristiwa eksternal: Server MCP juga dapat bertindak sebagai saluran yang mendorong pesan ke dalam sesi Anda, sehingga Claude bereaksi terhadap pesan Telegram, obrolan Discord, atau peristiwa webhook saat Anda sedang pergi.
Temukan dan bangun server MCP
Jelajahi konektor yang telah ditinjau di Direktori Anthropic. Konektor Direktori menggunakan infrastruktur MCP yang sama dengan Claude Code, jadi Anda dapat menambahkan server jarak jauh apa pun yang terdaftar di sana denganclaude mcp add.
Untuk membangun server Anda sendiri, lihat panduan server MCP untuk dasar-dasar protokol dan dokumentasi pembangun konektor Claude untuk autentikasi, pengujian, dan pengajuan Direktori.
Anda juga dapat membuat Claude membangun server untuk Anda dengan plugin resmi mcp-server-dev.
Instal plugin
claude, lalu masukkan ini di prompt-nya:Marketplace "claude-plugins-official" not found: tambahkan marketplace dengan/plugin marketplace add anthropics/claude-plugins-official, kemudian coba lagi instalnya.Plugin "<name>" not found in marketplace "claude-plugins-official": salinan lokal katalog marketplace Anda mungkin sudah usang. Segarkan dengan/plugin marketplace update claude-plugins-official, kemudian coba lagi instalnya. Jika percobaan ulang menampilkan pesan yang sama, lihat Plugin not found in marketplace.
Run /reload-plugins to apply., Claude Code kemudian menjalankan reload tersebut untuk Anda. Jika reload memperingatkan bahwa pesan berikutnya Anda akan membaca ulang percakapan, jalankan /reload-plugins --force.Jalankan skill build
Menginstal server MCP
Server MCP dapat dikonfigurasi dengan beberapa cara sesuai kebutuhan Anda:Opsi 1: Menambahkan server HTTP jarak jauh
Server HTTP adalah opsi yang direkomendasikan untuk terhubung ke server MCP jarak jauh. Ini adalah transport yang paling luas didukung untuk layanan berbasis cloud..mcp.json, ~/.claude.json, atau claude mcp add-json, field type menerima streamable-http sebagai alias untuk http. Spesifikasi MCP menggunakan nama streamable-http untuk transport ini, sehingga konfigurasi yang disalin dari dokumentasi server dapat berfungsi tanpa modifikasi.
Entri JSON yang memiliki url tetapi tidak memiliki type merupakan kesalahan konfigurasi, karena Claude Code membaca entri tanpa type sebagai server stdio. Claude Code melewati server tersebut dan melaporkan MCP server "<name>" has a "url" but no "type"; add "type": "http" (or "sse" / "ws") to this entry.
Hanya aplikasi host SDK, seperti aplikasi Agent SDK atau aplikasi desktop, yang dapat mendaftarkan server in-process "type": "sdk". Claude Code melewati entri "type": "sdk" di .mcp.json, ~/.claude.json, atau pengaturan dan melaporkan Skipped — MCP server "<name>" declares type "sdk", which only an SDK host application can register.
--output-format stream-json, Claude Code juga melaporkan entri --mcp-config yang dilewati di field mcp_server_errors pada event system/init, sehingga skrip dapat mendeteksi bahwa server tersebut tidak pernah dimuat.Opsi 2: Menambahkan server SSE jarak jauh
Beberapa layanan masih hanya menyediakan endpoint SSE. Tambahkan layanan tersebut dengan perintahclaude mcp add --transport http <name> <url> yang sama seperti server HTTP. Claude Code mencoba transport HTTP terlebih dahulu dan beralih ke SSE ketika server tidak menerimanya. Peralihan otomatis ini memerlukan Claude Code v2.1.265 atau yang lebih baru.
Pada versi sebelumnya, atau untuk terhubung melalui SSE secara langsung, berikan --transport sse sebagai gantinya:
Opsi 3: Menambahkan server stdio lokal
Server stdio berjalan sebagai proses lokal di mesin Anda. Server ini ideal untuk tool yang memerlukan akses sistem langsung atau skrip kustom. Claude Code menetapkanCLAUDE_PROJECT_DIR di lingkungan server yang dijalankan ke root proyek, sehingga server Anda dapat me-resolve path relatif proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hook dalam variabel CLAUDE_PROJECT_DIR mereka. Bacalah dari dalam proses server Anda, misalnya process.env.CLAUDE_PROJECT_DIR di Node atau os.environ["CLAUDE_PROJECT_DIR"] di Python.
CLAUDE_PROJECT_DIR adalah root proyek yang stabil dan tidak berubah ketika Anda menambahkan atau menghapus direktori kerja di tengah sesi. Server yang membatasi akses filesystem-nya sendiri ke sekumpulan direktori yang diizinkan sebaiknya mengimplementasikan permintaan MCP roots/list sebagai gantinya. Claude Code menjawab roots/list dengan direktori peluncuran sesi ditambah setiap direktori kerja tambahan yang telah Anda berikan dengan --add-dir, /add-dir, atau pengaturan additionalDirectories. Claude Code mengirim notifications/roots/list_changed ketika kumpulan tersebut berubah.
Variabel ini ditetapkan di lingkungan server, bukan di lingkungan Claude Code sendiri, sehingga mereferensikannya melalui ekspansi ${VAR} di command atau args pada entri .mcp.json bercakupan proyek atau entri server bercakupan lokal atau pengguna di ~/.claude.json memerlukan nilai default seperti ${CLAUDE_PROJECT_DIR:-.}. Konfigurasi MCP yang disediakan plugin mensubstitusi ${CLAUDE_PROJECT_DIR} secara langsung dan tidak memerlukan nilai default.
-- (tanda hubung ganda) memisahkan opsi milik Claude sendiri, seperti --transport, --env, dan --scope, dari perintah dan argumen yang menjalankan server. Semua yang berada setelah -- diteruskan ke server tanpa diubah.Contoh:claude mcp add --transport stdio myserver -- npx server→ menjalankannpx serverclaude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080→ menjalankanpython server.py --port 8080denganKEY=valuedi lingkungan
--, Claude Code akan mencoba mem-parsing flag server, seperti --port di atas, sebagai opsinya sendiri.--env menerima beberapa pasangan KEY=value. Jika nama server muncul langsung setelah --env, CLI membaca nama tersebut sebagai pasangan lain dan menolaknya, jadi letakkan setidaknya satu opsi lain, seperti --transport stdio, di antara --env dan nama server.Cara Claude Code menghentikan server stdio
Ketika Claude Code memutuskan koneksi server stdio, misalnya ketika sesi Anda berakhir, Claude Code mengirim sinyal ke proses server dan menunggu sebentar hingga proses tersebut keluar sebelum memaksanya berhenti. Jika server Anda menyimpan state atau menghapus file lock saat dimatikan, tangani sinyal untuk platform Anda dan selesaikan dalam batas waktu tersebut:- Di macOS dan Linux: Claude Code mengirim
SIGINT, laluSIGTERMjika proses masih berjalan 100 milidetik kemudian, laluSIGKILLsetelah 400 milidetik berikutnya. - Di Windows: Claude Code menutup stdin server, lalu mengakhiri pohon proses server jika proses masih berjalan 300 milidetik kemudian.
Opsi 4: Menambahkan server WebSocket jarak jauh
Server WebSocket mempertahankan koneksi dua arah yang persisten, yang cocok untuk server MCP jarak jauh yang mendorong event ke Claude tanpa diminta. Gunakan HTTP sebagai gantinya ketika server Anda hanya merespons permintaan, karena HTTP mendukung OAuth dan flagclaude mcp add --transport, sedangkan WebSocket tidak mendukung keduanya.
Konfigurasikan server WebSocket di .mcp.json atau dengan claude mcp add-json:
type: "ws" menerima field url, headers, headersHelper, timeout, dan alwaysLoad yang sama seperti http. Autentikasi hanya melalui header, jadi berikan token statis di headers atau buat token saat koneksi dengan headersHelper. Flag claude mcp add --transport tidak menerima ws.
Menambahkan server dari instruksi penyiapan yang ditulis untuk klien lain
Server MCP tidak khusus untuk Claude Code, sehingga instruksi penyiapan server mungkin ditulis untuk Claude Desktop, Cursor, atau klien MCP lain dan tidak memberikan perintahclaude mcp add. Untuk tetap menambahkan server tersebut, cari URL, perintah peluncuran, atau blok JSON dalam instruksi tersebut:
- URL seperti
https://mcp.example.com/mcp: server tersebut adalah server jarak jauh. - Perintah peluncuran seperti
npx -y @example/mcp-server: server berjalan di mesin Anda. - Blok JSON
mcpServers: konfigurasi yang ditulis untuk file pengaturan klien lain.
--scope project atau --scope user.
Menambahkan server dari URL
URL berarti server tersebut adalah server jarak jauh. Untuk endpointhttps://, tambahkan dengan --transport http, atau ikuti Opsi 2 ketika instruksi menyebutkan bahwa endpoint menggunakan SSE. Untuk endpoint wss://, gunakan Opsi 4 sebagai gantinya, karena --transport tidak menerima ws:
--header seperti yang ditunjukkan di Opsi 1.
Menambahkan server dari perintah npx, uvx, atau biner
Perintah peluncuran berarti server berjalan sebagai proses stdio lokal. Letakkan seluruh perintah setelah --, sehingga Claude Code meneruskan flag seperti -y ke perintah yang memulai server alih-alih membacanya sebagai opsinya sendiri. Berikan environment variable apa pun yang diminta instruksi dengan --env, setelah nama server dan sebelum --:
-- secara lengkap.
Menambahkan server dari blok JSON mcpServers
Blok mcpServers yang ditulis untuk klien MCP lain, seperti Claude Desktop, menggunakan kunci pembungkus dan bentuk entri yang dibaca Claude Code. Berikan kepada claude mcp add-json objek di dalam mcpServers, bukan pembungkusnya. Dua jenis entri perlu diperbaiki terlebih dahulu:
urltanpatype: tambahkan"type": "http","type": "sse", atau"type": "ws"sesuai endpoint. Claude Code membaca entri tanpatypesebagai server stdio, sehingga entriurltanpatypeakan gagal.- Kunci dengan karakter selain huruf, angka, tanda hubung, dan garis bawah: pilih nama server yang hanya menggunakan karakter tersebut. Jika tidak, kunci tersebut adalah nama server.
--scope untuk add-json. Untuk berbagi server dengan tim Anda, tambahkan --scope project, atau tambahkan entri di bawah mcpServers di .mcp.json pada root proyek Anda dan lakukan commit. Cakupan proyek membahas cara Claude Code memuat dan menyetujui file tersebut.
Setiap perintah claude mcp add dan claude mcp add-json mencetak baris Added ... jika berhasil. Untuk memeriksa apakah Claude Code sudah terhubung, jalankan claude mcp get <name>; Status server membahas status yang ditampilkannya dan langkah persetujuan untuk server .mcp.json.
Mengelola server Anda
Setelah dikonfigurasi, Anda dapat mengelola server MCP Anda dengan perintah berikut:claude mcp logout <name> di shell Anda sebelum claude mcp remove <name>.
Status server
claude mcp add mengonfirmasi penambahan yang berhasil dengan mencetak baris Added ..., yang berarti konfigurasi telah ditulis. Jika perintah mencetak pesan was not saved sebagai gantinya, lihat MCP server was not saved or removed; untuk pesan may not have been saved, lihat MCP server may not have been saved or removed.
claude mcp list menampilkan status kesehatan di samping setiap server yang dicantumkannya, seperti ✔ Connected, ! Needs authentication, atau ✘ Failed to connect. Status kegagalan berarti Claude Code tidak dapat terhubung ke server tersebut, bukan berarti perintah list gagal.
Status dalam daftar berikut melaporkan keputusan konfigurasi, bukan upaya koneksi, sehingga Claude Code mencetaknya tanpa terhubung ke server:
⏸ Pending approval (run `claude` to approve): server dengan cakupan proyek dari.mcp.jsonyang belum Anda setujui. Claude Code menampilkannya diclaude mcp listdanclaude mcp get <name>. Jalankanclaudesecara interaktif untuk meninjau dan menyetujuinya.✘ Rejected (see disabledMcpjsonServers in settings): server.mcp.jsonyang ditolak oleh entridisabledMcpjsonServers. Claude Code hanya menampilkannya diclaude mcp get <name>.⊘ Disabled for this project (re-enable via /mcp): server yang disebutkan dalam daftardisabledMcpServersproyek. Claude Code menampilkannya diclaude mcp listmaupunclaude mcp get <name>. Aktifkan kembali server dari panel/mcp.✘ Blocked by enterprise managed policy: server yang ditolak oleh salah satu kebijakan organisasi Anda. Claude Code menampilkannya diclaude mcp listdanclaude mcp get <name>. Server yang diblokir oleh allowlist, denylist, atau pembatasan lain dalam konfigurasi MCP terkelola disembunyikan dari kedua perintah alih-alih ditampilkan dengan status ini. Tanyakan kepada administrator Anda kebijakan mana yang memblokir server tersebut.
Persetujuan server proyek dan kepercayaan workspace
claude mcp list dan claude mcp get hanya membaca persetujuan .mcp.json dari file pengaturan yang tidak di-commit ke repositori hingga Anda memercayai workspace dengan menjalankan claude di dalamnya dan menerima dialog kepercayaan workspace. Repositori yang di-clone tidak dapat menyetujui servernya sendiri: enableAllProjectMcpServers atau enabledMcpjsonServers yang di-commit ke .claude/settings.json proyek diabaikan di folder yang tidak dipercaya, dan server tetap berstatus ⏸ Pending approval alih-alih terhubung dan diperiksa kesehatannya.
Persetujuan dari sumber berikut tetap berlaku di folder yang tidak dipercaya:
~/.claude/settings.jsonpengguna Anda- pengaturan terkelola
- pengaturan yang diberikan dengan
--settings
.claude/settings.local.json yang tidak dilacak, tetapi Claude Code menjalankan git untuk memeriksa apakah file tersebut dilacak, dan hanya menjalankan pemeriksaan tersebut di folder yang dipercaya. Di folder yang belum pernah Anda percayai, Claude Code menunggu dialog kepercayaan sebelum menerapkan persetujuan file tersebut, kecuali folder tersebut adalah direktori konfigurasi Anda sendiri: direktori home Anda, atau direktori yang .claude-nya telah Anda tetapkan sebagai CLAUDE_CONFIG_DIR. Sebelum v2.1.207, Claude Code menerapkan persetujuan dari .claude/settings.local.json yang tidak dilacak bahkan di folder yang belum pernah Anda percayai.
Entri disabledMcpjsonServers di file pengaturan mana pun tetap menolak server tersebut.
Detail status server
Di/mcp, termasuk di menu server di sana, dan di manajer /plugin, server HTTP atau SSE jarak jauh yang pernah Anda gunakan dapat menampilkan status cached seperti cached 2h ago · connects on first use · 5 tools. Claude Code memuat daftar tool server dari cache penemuannya, yang disimpan di sesi sebelumnya, alih-alih terhubung saat startup, dan Claude Code menghubungkan server saat pertama kali Claude memanggil salah satu tool server tersebut. Tool tersedia sejak pesan pertama Anda, sehingga Anda tidak perlu melakukan apa pun. Cache penemuan dan status cached-nya memerlukan Claude Code v2.1.221 atau yang lebih baru.
Cache penemuan dinonaktifkan secara default kecuali peluncuran bertahap telah mengaktifkannya untuk akun Anda. Tetapkan MCP_DISCOVERY_CACHE=1 untuk mengaktifkannya, atau 0 untuk tetap menonaktifkannya meskipun peluncuran bertahap telah mengaktifkannya. Sebelum v2.1.238, cache aktif secara default.
Ketika Anda memilih Disable atau Clear authentication dari menu server di /mcp, Claude Code juga membuang entri cache server tersebut. Reconnect juga membuangnya pada server yang terhubung atau gagal; pada server cached, Reconnect langsung menghubungkan server dan mempertahankan entri tersebut. Saat berikutnya Claude Code terhubung ke server setelah membuang entri, Claude Code mengambil daftar tool dari server alih-alih dari cache.
Ketika status server adalah ✘ Failed to connect, claude mcp list menambahkan detail kegagalan ke baris status tersebut, dan claude mcp get <name> menampilkannya pada baris Issue:. Detailnya adalah status HTTP atau kode kesalahan, ditambah teks kesalahan apa pun yang dikembalikan server. Tampilan detail server di /mcp menyertakan teks yang sama yang dilaporkan server di baris Issue:-nya.
Claude Code menyamarkan teks yang menyerupai kredensial dari detail ini dan tidak pernah menyertakan URL server yang telah diekspansi, yang dapat membawa rahasia. Claude Code tidak menambahkan detail ke status ✘ Connection error, karena teks exception yang akan dicetaknya di sana dapat menyertakan URL tersebut.
Ketika Anda menyelesaikan autentikasi dari /mcp dan koneksi masih gagal dengan status HTTP atau kode kesalahan transport, Claude Code menambahkan kode tersebut dan origin URL server ke pesan yang dicetaknya setelah upaya tersebut. Origin adalah skema dan host, ditambah port jika URL menyebutkannya, seperti https://mcp.example.com.
- Path dan query tidak pernah muncul dalam pesan tersebut.
- Untuk server di cakupan lokal, proyek, atau pengguna, atau dalam konfigurasi MCP terkelola, origin menampilkan host sebagaimana ditulis dalam konfigurasi tersebut, sehingga referensi
${VAR}di host tidak diekspansi dalam pesan. - Untuk kegagalan tanpa status atau kode kesalahan, Claude Code menampilkan teks kesalahan tanpa origin.
url kosong ditampilkan sebagai not configured di /mcp, di claude mcp list, dan di manajer /plugin, dan Claude Code tidak mencoba terhubung ke server tersebut. Plugin dapat menyertakan entri placeholder seperti ini untuk konektor yang Anda konfigurasikan nanti, sehingga Claude Code tidak melaporkannya sebagai kesalahan atau masalah penyiapan. Tampilan detail server di /mcp berbunyi No URL configured for this server; tetapkan url entri tersebut untuk menghubungkannya.
Peringatan konfigurasi
Claude Code memberikan peringatan tentang masalah konfigurasi di bawah ini. Setiap entri menjelaskan apa yang diperiksa Claude Code dan cara menghilangkan peringatan tersebut:- Spasi tersembunyi: Claude Code memberikan peringatan ketika nilai konfigurasi MCP membawa spasi tersembunyi di awal atau akhir, yang sering berasal dari menempelkan token dengan baris baru di akhir. Claude Code memeriksa
command,url, setiap entriargs, serta nilai dan nama kunci di bawahenvdanheaders. Claude Code menampilkan peringatan di outputclaude mcp listdan di/mcp, dengan menyebutkan field yang terpengaruh tanpa menampilkan nilainya, misalnyaLeading or trailing whitespace in: headers.Authorization. Claude Code tidak memangkas spasi tersebut dan menggunakan nilai persis seperti yang ditulis, jadi edit konfigurasi untuk menghapusnya. - Nama yang sama di lebih dari satu cakupan: jika Anda mendefinisikan nama server yang sama di lebih dari satu cakupan dengan endpoint yang berbeda, Claude Code memberikan peringatan tentang konflik tersebut di output
claude mcp listdan di/mcp. Claude Code menyimpan login OAuth per endpoint, sehingga ketika Anda mengautentikasi definisi yang dimuat di satu proyek, Anda tetap perlu login secara terpisah di proyek tempat definisi lain dimuat. Pertahankan endpoint yang Anda inginkan dan hapus yang lainnya denganclaude mcp remove <name> --scope <scope>. Dalam peringatan tersebut, Claude Code mengutip endpoint setiap cakupan sebagaimana ditulis dalam konfigurasi Anda, dengan referensi${VAR}yang tidak diekspansi, sehingga tidak pernah menampilkan nilai yang sudah di-resolve seperti kunci API. - Nama yang dicadangkan: Claude Code mencadangkan nama-nama server bawaannya, termasuk
workspace,claude-in-chrome,computer-use,Claude Preview, danClaude Browser. Jika konfigurasi Anda mendefinisikan server dengan nama yang dicadangkan, Claude Code melewatinya saat pemuatan dan menampilkan peringatan yang meminta Anda mengganti namanya.claude mcp addmenolak nama yang dicadangkan dengan kesalahan.Claude PreviewdanClaude Browserkeduanya menamai server bawaan yang digunakan oleh panel pratinjau aplikasi desktop Claude Code. - Environment variable yang hilang: jika referensi
${VAR}dalam konfigurasi server menyebutkan variabel yang tidak ditetapkan dan tidak memiliki:-default, Claude Code memberikan peringatan di outputclaude mcp listdan di/mcp, dengan menyebutkan variabel tersebut, dan tetap memuat server dengan teks${VAR}yang tidak diekspansi. Tetapkan variabel tersebut atau tambahkan fallback${VAR:-default}. Diurldanheadersserver jarak jauh, beberapa variabel kredensial dibaca sebagai kosong sebagai gantinya, tanpa peringatan.
Ketersediaan tool
Panel/mcp menampilkan jumlah tool di samping setiap server yang terhubung dan menandai server yang mengiklankan kapabilitas tools tetapi tidak menyediakan tool apa pun.
Jika permintaan Anda memerlukan tool dari server yang masih dalam proses terhubung di latar belakang, Claude menunggu server tersebut sebelum melanjutkan. Cara penungguan terjadi bergantung pada konfigurasi Anda:
- Dengan tool search, yang merupakan default: penungguan terjadi di dalam panggilan
ToolSearch. - Tanpa tool search: Claude menggunakan tool
WaitForMcpServerssebagai gantinya. Konfigurasi tanpa tool search mencakupENABLE_TOOL_SEARCH=falsedan model yang lebih lama dari Claude Opus 4.5, Claude Sonnet 4.5, dan Claude Haiku 4.5 di Agent Platform Google Cloud. Untuk gatewayANTHROPIC_BASE_URL, lihat Tool search melalui LLM gateway. - Pada deployment yang di-host di Azure Microsoft Foundry: Claude memulai pada jalur tool search alih-alih dengan
WaitForMcpServers, karena Claude Code hanya mengetahui penolakan sisi server deployment tersebut dari API. Setelah Claude Code mengalihkan deployment tersebut ke pemuatan di awal, tool dari server yang selesai terhubung menjadi tersedia pada permintaan Claude berikutnya.
No such tool available.
Menonaktifkan server tanpa menghapusnya
Nonaktifkan server di panel/mcp untuk menghentikan Claude Code terhubung ke server tersebut tanpa kehilangan konfigurasinya. Claude Code tetap mencantumkan server di /mcp, dengan tanda dinonaktifkan.
Ketika Anda mengubah status server, Claude Code mencatat pilihan Anda per proyek di ~/.claude.json, di salah satu dari dua daftar yang mencakup kumpulan server yang saling terpisah:
disabledMcpServers: daftar opt-out untuk server yang dikonfigurasi pengguna, server plugin, server yang disediakan organisasi Anda melalui pengaturan terkelola, konektor claude.ai yang diambil Claude Code sendiri, dan server bawaan yang aktif secara default. Claude Code tidak terhubung ke server yang Anda cantumkan di sini. Ketika Anda menonaktifkan konektor claude.ai dengan toggle/mcpper proyek yang dijelaskan di Menonaktifkan konektor claude.ai, Claude Code menuliskannya ke daftar ini dengan nama tampilannya, misalnyaclaude.ai Slack.enabledMcpServers: daftar opt-in untuk server bawaan yang nonaktif secara default, seperticomputer-use. Claude Code hanya terhubung ke server yang nonaktif secara default ketika Anda mencantumkannya di sini.
enabledMcpServers, atau server bawaan yang nonaktif secara default ke disabledMcpServers, Claude Code mengabaikan entri tersebut.
disabledMcpServers dan enabledMcpServers tidak berkaitan dengan enabledMcpjsonServers dan disabledMcpjsonServers, yang mengontrol persetujuan server yang didefinisikan di file .mcp.json proyek.
Runtime klien MCP
Claude Code terhubung ke server MCP melalui salah satu dari dua runtime klien. Runtime v1 dibangun di atas MCP TypeScript SDK 1.x. Runtime v2 adalah kode yang sama di atas MCP TypeScript SDK 2.0, yang menambahkan revisi protokol MCP 2026-07-28. Bagian lain halaman ini berlaku untuk kedua runtime, kecuali jika suatu bagian menyebutkan runtime v2. Claude Code memilih runtime setiap kali Anda memulainya dan mempertahankannya hingga Anda keluar. Dalam sesi di mana Claude Code mengambil feature flag, Claude Code menggunakan runtime v2 pada Claude Code v2.1.232 atau yang lebih baru. Dalam sesi di mana Claude Code tidak mengambil feature flag, Claude Code menggunakan runtime v2 secara default pada Claude Code v2.1.274 atau yang lebih baru:- Sesi di Amazon Bedrock, Claude Platform di AWS, Agent Platform Google Cloud, atau Microsoft Foundry, kecuali platform host yang menyematkan Claude Code menetapkan
CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST - Sesi yang login melalui Claude apps gateway
- Sesi di mana Anda mematikan telemetri atau pengambilan feature flag, misalnya dengan
DISABLE_TELEMETRY
- Menanyakan kepada server HTTP, stdio, dan konektor claude.ai apakah mereka mendukung revisi yang lebih baru, dan menggunakannya dengan server yang mendukung. Ini mencakup konektor dari sesi cloud dan sesi Remote Control. Claude Code terhubung ke setiap server lainnya seperti yang dilakukan v1.
- Menerima notifikasi
list_changeddari server pada revisi yang lebih baru melalui stream yang dibiarkan terbuka. - Tidak mendaftarkan server channel yang terhubung pada revisi yang lebih baru, karena revisi tersebut tidak dapat membawa pesan channel.
- Menggagalkan login MCP OAuth yang respons otorisasinya menyebutkan issuer yang tidak terduga.
- Mengirim kredensial MCP OAuth hanya ke token endpoint yang dilayani melalui HTTPS atau di
localhost,127.0.0.1, atau::1. Login gagal untuk server yang token endpoint-nya adalahhttp://biasa di tempat lain, seperti perangkat di jaringan lokal Anda. Lihat Refusing to send credentials to non-https token endpoint.
MCP_SDK_GENERATION ke v1 atau v2. Untuk menentukan apakah Claude Code menanyakan, tetapkan MCP_PROTOCOL_NEGOTIATION ke auto atau legacy.
Pembaruan tool dinamis
Server MCP dapat mengubah tool, prompt, atau resource yang ditawarkannya saat terhubung dan mengirim notifikasilist_changed. Ketika notifikasi tersebut tiba:
- Dalam sesi terminal interaktif, Claude Code mengambil daftar yang diperbarui dari server tersebut, sehingga Anda tidak perlu menghubungkannya ulang.
- Dalam mode non-interaktif dengan flag
-pdan di Agent SDK, Claude Code hanya memperbarui daftar tool pada notifikasi ini.
Stream notifikasi pada runtime v2
Pada runtime v2, Claude Code menerima notifikasilist_changed dari server pada revisi protokol yang lebih baru melalui stream yang dibiarkan terbuka. Ketika stream ditutup, Claude Code membukanya kembali, dengan dua batasan:
- Stream ditutup lagi dalam 10 detik: Claude Code membukanya kembali hingga tiga kali, lalu berhenti untuk koneksi tersebut.
- Stream tetap terbuka lebih dari 10 detik, lalu ditutup, seperti yang umum terjadi pada stream ke host serverless: setelah lima kali dibuka kembali dalam satu jam, Claude Code menunggu sekitar enam jam sebelum pembukaan berikutnya.
/mcp.
Koneksi ulang otomatis
Claude Code menghubungkan ulang server jarak jauh yang terputus di tengah sesi dan mencoba ulang koneksi pertama server HTTP atau SSE setelah kesalahan sementara. Untuk server stdio, lihat Server stdio yang keluar atau gagal dimulai.Server jarak jauh yang terputus di tengah sesi
Claude Code pertama-tama mencoba menghubungkan ulang server jarak jauh yang terputus hingga lima kali dengan exponential backoff, dimulai dengan jeda satu detik dan menggandakannya setiap kali:- Dalam sesi interaktif:
/mcpmenampilkan server sebagai tertunda selama Claude Code menghubungkan ulang. Setelah lima upaya gagal, Claude Code menandai server sebagai gagal, atau sebagai memerlukan autentikasi ketika server perlu diotorisasi lagi. Ketika Claude Code menandai server sebagai gagal, Anda melihat notifikasiMCP server "<name>" disconnected · open /mcp to reconnect. Anda dapat mencoba ulang secara manual dari/mcp. - Dalam eksekusi
claude -pdan sesi Agent SDK: Claude Code melakukan lima upaya yang sama, tanpa panel/mcpuntuk menampilkannya. Jika kelimanya gagal, eksekusi berlanjut tanpa tool server tersebut:- Setelah kesalahan sementara, seperti respons 5xx atau timeout: Claude Code terus mencoba ulang server HTTP atau SSE di latar belakang. Retry berlangsung hingga sekitar setengah jam, dan tool server menjadi tersedia kembali ketika salah satunya berhasil terhubung. Hingga saat itu, sesi Agent SDK melaporkan status
failed, dan kode Anda dapat menghubungkan ulang server. Untuk menghubungkannya ulang diclaude -p, mulai eksekusi lagi. - Ketika server mengharuskan Anda login lagi: Claude Code berhenti mencoba ulang, dan sesi Agent SDK melaporkan status server sebagai
needs-auth. Login denganclaude mcp login <name>di shell Anda. Kemudian mulai eksekusi lagi atau, dalam sesi Agent SDK, hubungkan ulang server sebagai gantinya.
- Setelah kesalahan sementara, seperti respons 5xx atau timeout: Claude Code terus mencoba ulang server HTTP atau SSE di latar belakang. Retry berlangsung hingga sekitar setengah jam, dan tool server menjadi tersedia kembali ketika salah satunya berhasil terhubung. Hingga saat itu, sesi Agent SDK melaporkan status
Koneksi pertama yang gagal
Ketika koneksi pertama server HTTP atau SSE gagal dengan kesalahan sementara, seperti respons 5xx, koneksi ditolak, atau timeout, Claude Code mencoba ulang hingga tiga kali. Jika koneksi masih gagal, Claude Code menandai server sebagai gagal. Retry tersebut tidak berlaku dalam kasus berikut:- Koneksi pertama server stdio. Untuk mencobanya lagi, lihat Server stdio yang keluar atau gagal dimulai
- Koneksi pertama server WebSocket. Untuk mencobanya lagi dalam sesi terminal interaktif, pilih Reconnect dari menu server di
/mcp - Kesalahan autentikasi atau not-found, karena memerlukan perubahan konfigurasi untuk menyelesaikannya. Ketika
headersHelperadalah satu-satunya sumber headerAuthorizationserver, Claude Code tetap mencoba ulang kesalahan autentikasi, karena Claude Code menjalankan ulang helper pada setiap upaya dan dapat memperoleh kredensial baru
Server stdio yang keluar atau gagal dimulai
Untuk memulai server stdio lagi, baca kolom yang sesuai dengan apa yang terjadi pada server tersebut. Temukan baris Anda berdasarkan cara Anda menjalankan Claude Code: sesi interaktif, eksekusiclaude -p, atau sesi Agent SDK.
Permintaan penemuan yang gagal
Setelah server terhubung, Claude Code mengirimkan permintaan penemuan kapabilitas sepertitools/list, prompts/list, dan resources/list. Claude Code mencoba ulang permintaan tersebut hingga tiga kali dengan backoff singkat setelah kesalahan jaringan atau server yang bersifat sementara. Claude Code tidak mencoba ulang kesalahan autentikasi, respons 4xx, atau timeout permintaan.
Mencoba ulang server yang gagal sendiri
Untuk mencoba ulang setiap server yang gagal atau memerlukan autentikasi, jalankan/mcp reconnect all di prompt Claude Code dalam sesi terminal interaktif. Ini memerlukan Claude Code v2.1.284 atau yang lebih baru. Versi yang lebih lama mencetak MCP server "all" not found.
Cara Claude mengetahui bahwa server gagal
Apakah Claude Code memberi tahu Claude tentang server yang dikonfigurasi yang gagal terhubung bergantung pada tool search, yang aktif secara default:- Dengan tool search, Claude Code memberi tahu Claude server mana yang gagal beserta kesalahan koneksinya, sehingga Claude melaporkan kegagalan koneksi dalam responsnya. Claude Code menyertakan informasi yang sama dalam hasil
ToolSearchyang tidak menemukan tool yang cocok. - Dalam konfigurasi apa pun tanpa tool search, Claude Code tidak melaporkan koneksi server yang gagal kepada Claude.
Mendorong pesan dengan channel
Server MCP juga dapat mendorong pesan langsung ke sesi Anda sehingga Claude dapat bereaksi terhadap event eksternal seperti hasil CI, peringatan pemantauan, atau pesan chat. Untuk mengaktifkannya, server Anda mendeklarasikan kapabilitasclaude/channel dan Anda mengikutsertakannya dengan flag --channels saat startup. Lihat Channels untuk menggunakan channel yang didukung secara resmi, atau Referensi channels untuk membuat channel Anda sendiri.
Pada runtime v2, server channel yang menegosiasikan revisi protokol MCP 2026-07-28 tidak dapat mengirimkan pesan channel, sehingga Claude Code tidak mendaftarkannya sebagai channel. Server channel yang tidak mendukung revisi tersebut terhubung pada handshake sebelumnya dan terdaftar seperti sebelumnya.
Claude Code menanyakan revisi tersebut kepada server stdio secara default. Untuk mempertahankan server channel stdio pada handshake sebelumnya, tetapkan MCP_PROTOCOL_NEGOTIATION ke legacy, yang mempertahankan setiap server pada handshake tersebut.
Batas waktu pada panggilan tool MCP
Untuk membatasi berapa lama panggilan tool MCP dapat berjalan:- Per server: tambahkan field
timeoutdalam milidetik ke entri konfigurasi server tersebut - Lintas server: tetapkan
MCP_TOOL_TIMEOUT
timeout per server adalah batas waktu wall-clock yang ketat per panggilan tool, dan notifikasi progres dari server tidak memperpanjangnya. Nilai di bawah 1000 diabaikan dan beralih ke MCP_TOOL_TIMEOUT, atau ke default-nya sekitar 28 jam ketika variabel tersebut tidak ditetapkan. Untuk server HTTP, SSE, atau konektor claude.ai, ada juga timer kedua per permintaan yang mencakup setiap permintaan hingga byte respons pertama server. Claude Code menetapkan timer tersebut ke nilai terbesar dari tiga nilai: 60 detik, timeout tool yang berlaku untuk server, dan MCP_TIMEOUT. Default 28 jam dari MCP_TOOL_TIMEOUT yang tidak ditetapkan tidak ikut dalam perbandingan tersebut, dan nilai di bawah 60 detik tidak memperpendek timer. Server stdio dan WebSocket tidak memiliki timer per permintaan.
timeout per server yang bernilai setidaknya 1000 juga berfungsi sebagai batas bawah untuk idle timeout yang dijelaskan di bawah: Claude Code tidak pernah membatalkan panggilan tool server tersebut karena idle lebih cepat dari timeout per server.
Panggilan tool ke server MCP yang tidak mengirim respons dan tidak mengirim notifikasi progres selama jendela idle akan dibatalkan dengan kesalahan alih-alih menunggu batas waktu wall-clock. Idle timeout berlaku untuk setiap jenis server kecuali server IDE dan server in-process SDK. Jendela idle secara default lima menit untuk server HTTP, SSE, WebSocket, dan konektor claude.ai, dan 30 menit untuk server stdio.
Tetapkan environment variable CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT dalam milidetik untuk mengubah jendela idle, atau tetapkan ke 0 untuk menonaktifkan pemeriksaan.
Timeout ini membatasi berapa lama panggilan dapat berjalan, tidak selalu berapa lama panggilan memblokir sesi: panggilan di percakapan utama yang berjalan lebih dari dua menit akan dipindahkan ke tugas latar belakang terlebih dahulu. Lihat Pemindahan otomatis panggilan tool yang panjang ke latar belakang.
Pemindahan otomatis panggilan tool yang panjang ke latar belakang
Jika tampilan detail panggilan latar belakang di/tasks menampilkan runs on the server; survives exiting this session, lihat Tugas MCP yang berjalan di server.
Panggilan tool MCP di percakapan utama yang masih berjalan setelah dua menit dipindahkan ke tugas latar belakang alih-alih memblokir sesi. Claude langsung menerima ID tugas dan terus bekerja, dan hasilnya tiba sebagai notifikasi tugas ketika panggilan selesai.
Tugas tersebut muncul di /tasks, tempat Anda juga dapat menghentikannya, dan tugas tersebut tidak bertahan setelah keluar dari sesi. Entri tugas menampilkan progres terbaru yang dilaporkan server. Jika Anda menghentikan tugas, Claude Code membatalkan panggilan dan memberi tahu Claude bahwa tidak ada hasil yang akan datang. Menghentikan tugas tidak menjamin server berhenti: server mungkin sudah melakukan sebagian pekerjaan, atau mungkin tetap menyelesaikannya.
Batas per panggilan tetap berlaku saat panggilan berjalan di latar belakang: batas waktu wall-clock yang ditetapkan oleh timeout per server atau MCP_TOOL_TIMEOUT, dan idle timeout yang ditetapkan oleh CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT.
Untuk mengubah atau mematikan pemindahan otomatis ke latar belakang:
- Tetapkan environment variable
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSdalam milidetik untuk mengubah ambang, atau tetapkan ke0untuk mematikan pemindahan otomatis ke latar belakang. Dengan0, Claude juga menunggu tugas MCP dalam sesi interaktif - Atur
CLAUDE_CODE_DISABLE_BACKGROUND_TASKSke1untuk mematikan pemindahan otomatis ke latar belakang dan perintah latar belakang
- Panggilan dari subagent; Claude Code hanya memindahkan panggilan percakapan utama ke latar belakang
- Panggilan ke server IDE
- Panggilan dalam mode non-interaktif, kecuali
CLAUDE_AUTO_BACKGROUND_TASKSditetapkan ke1, karena eksekusi sekali jalan dapat berakhir sebelum hasilnya tiba
Tugas MCP yang berjalan di server
Tugas MCP adalah pekerjaan panjang, seperti ekspor laporan atau build, yang dijalankan sendiri oleh server MCP menggunakan ekstensi tugas MCP. Panggilan tool Claude kembali setelah server menerima pekerjaan tersebut, sehingga Claude terus bekerja kecuali Anda membuat Claude menunggu. Ketika pekerjaan selesai, transkrip memberitahukannya dan Claude mendapatkan hasilnya. Mintalah hasilnya kepada Claude. Sementara itu, footer menampilkan hitungan seperti1 MCP task, dan Claude Code mengikuti tugas dengan memeriksa statusnya ke server. Tugas di server jarak jauh tetap berjalan setelah Anda keluar. Untuk mengikutinya lagi, lanjutkan sesi yang sama.
Menghentikan tugas MCP atau mendapatkan hasilnya
Untuk menghentikan tugas yang sedang berjalan, pilih tugas tersebut di/tasks dan tekan x, atau minta Claude untuk melakukannya. Claude Code berhenti mengikuti tugas dan meminta server untuk membatalkannya, meskipun server mungkin tetap menyelesaikannya. Hubungkan kembali server yang terputus dari /mcp terlebih dahulu, atau tidak ada permintaan pembatalan yang terkirim dan Claude Code melupakan tugas tersebut serta tidak dapat mengikutinya lagi. Menekan Esc tidak menghentikan tugas latar belakang.
Ketika tugas selesai, baris seperti ini muncul di transkrip:
Menjawab pertanyaan dari tugas MCP
Tugas yang sedang berjalan dapat membuka dialog elisitasi untuk meminta input dari Anda. Selama/tasks terbuka, dialog tetap tersembunyi, jadi tutup /tasks untuk menjawab. Menolak atau menekan Esc merupakan jawaban kepada server, yang kemudian memutuskan apakah tugas berlanjut.
Dalam sesi non-interaktif, Claude Code meminta server untuk membatalkan tugas yang meminta input, tanpa menjalankan hook Elicitation Anda atau memanggil callback onElicitation Agent SDK.
Keluar, membersihkan, atau melanjutkan saat tugas MCP berjalan
Tugas di server jarak jauh tetap berjalan setelah Anda keluar. Proses server stdio berhenti ketika Claude Code keluar, meskipun tugasnya menampilkanruns on the server; survives exiting this session di /tasks. Kecuali dokumentasi server tersebut menyatakan bahwa pekerjaannya bertahan lebih lama dari prosesnya, biarkan tugas tersebut selesai atau hentikan di /tasks terlebih dahulu.
Yang diperlukan agar panggilan menjadi tugas MCP
Panggilan tool menjadi tugas MCP hanya ketika semua kondisi berikut terpenuhi:- Server mendukung tugas
- Server adalah server HTTP, stdio, atau konektor claude.ai yang terhubung pada revisi protokol 2026-07-28. Menetapkan
MCP_SDK_GENERATION=v1atauMCP_PROTOCOL_NEGOTIATION=legacymengecualikan hal tersebut - Sesi mengambil feature flag, jadi tidak pada penyedia pihak ketiga seperti Amazon Bedrock, dan tidak dengan telemetri atau pengambilan flag dimatikan
- Anthropic telah mengaktifkan tugas MCP untuk jenis sesi Anda. Pada v2.1.304 atau yang lebih baru, ini mencakup sesi CLI terminal, sesi Agent SDK, dan eksekusi GitHub Actions. Surface lain, seperti ekstensi VS Code dan aplikasi desktop, tidak memiliki tugas MCP
- Panggilan berasal dari percakapan utama, bukan dari subagent
- Sesi bersifat interaktif, atau sesi Agent SDK atau eksekusi
claude -pyang membaca--input-format stream-jsonmemiliki:CLAUDE_AUTO_BACKGROUND_TASKSbernilai1CLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUNDtidak bernilai1CLAUDE_CODE_MCP_AUTO_BACKGROUND_MStidak bernilai0
claude -p "<prompt>" tidak mendapatkan tugas MCP.
Pesan status pada tugas MCP
Pesan-pesan ini, di entri/tasks suatu tugas atau di baris penutup transkripnya, berarti Claude Code tidak dapat menjangkau server atau tugas tersebut. Selama salah satunya tampil di /tasks, pekerjaan mungkin masih berjalan: Claude Code membiarkannya dan terus memeriksa. Pesan 300s dan pesan konfigurasi tetap ada di entri bahkan setelah kontak pulih.
Batas waktu pada tugas MCP
Secara default, tugas di latar belakang tidak memiliki batas waktu dari Claude Code. Batas waktu panggilan tool, termasuk batas waktu nyata dan timeout idle, berlaku sampai server menjawab panggilan dengan tugas. Jika Anda membuat Claude menunggu, batas tersebut berlaku untuk seluruh tugas. Pemeriksaan status yang dijawab dihitung sebagai aktivitas untuk timeout idle.Membuat Claude menunggu hasil tugas MCP
Untuk membuat Claude menunggu hasil tugas dalam sesi interaktif, tetapkan salah satu dari dua environment variable, misalnya di blokenv pada settings.json:
CLAUDE_CODE_MCP_AUTO_BACKGROUND_MSditetapkan ke0: Claude menunggu setiap panggilan tool MCP sampai panggilan selesaiCLAUDE_CODE_DISABLE_MCP_TASK_BACKGROUNDditetapkan ke1: Claude menunggu hasil tugas. Selama pemindahan otomatis ke latar belakang aktif, panggilan dipindahkan setelah dua menit secara default, sehingga tugas singkat selesai di tempat dan tugas panjang tidak memblokir Anda. Panggilan yang dipindahkan adalah panggilan latar belakang biasa, bukan tugas MCP. Panggilan tersebut tidak bertahan setelah keluar dari sesi
Esc atau mencapai batas waktu nyata atau timeout idle mengakhiri panggilan, dan Claude Code meminta server untuk membatalkan tugas.
Jika Anda menetapkan CLAUDE_CODE_DISABLE_BACKGROUND_TASKS ke 1 atau memulai dalam bare mode, hal itu saja tidak membuat Claude menunggu tugas MCP. Contoh ini menetapkan CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS ke 0, sehingga Claude menunggu setiap panggilan tool MCP:
Tugas MCP untuk pembuat server
Jika Anda membangun server MCP, Anda dapat menjawabtools/call yang berjalan lama dengan tugas. Ekstensi tugas MCP mendefinisikan pesan yang Anda kirim. Pada koneksi revisi protokol 2026-07-28, setiap permintaan membawa kapabilitas klien Claude Code di params._meta["io.modelcontextprotocol/clientCapabilities"], dengan "io.modelcontextprotocol/tasks": {} di bawah extensions. Permintaan tools/call yang tidak dapat menjadi tugas tidak menyertakan ekstensi tersebut.
Menjawab panggilan dengan tugas
Jawab dengan tugas hanya ketika permintaan membawa ekstensi tersebut, atau Claude akan mendapatkan kesalahan toolUnsupported result type 'task' for tools/call. Claude mendapatkan kesalahan yang sama ketika taskId, status, createdAt, lastUpdatedAt, atau ttlMs tidak ada. Objek tugas adalah result JSON-RPC dari respons tools/call Anda, tidak memerlukan array content, dan di sini menyertakan statusMessage dan pollIntervalMs yang opsional:
Melaporkan status, hasil, dan pertanyaan
Tepat setelah jawaban tugas, Claude Code mengirimtasks/get dengan { "taskId": ... }, lalu mengulanginya sekali per interval polling. Ekstensi tugas mengharuskan respons Anda membawa "resultType": "complete" beserta taskId, status, createdAt, lastUpdatedAt, dan ttlMs. ttlMs boleh bernilai null, dan statusMessage serta pollIntervalMs bersifat opsional. Contoh ini melaporkan build sebagai selesai:
Server MCP yang disediakan plugin
Plugin dapat menyertakan server MCP yang menyediakan tool dan integrasi ketika Anda mengaktifkan plugin. Cara kerja server MCP plugin:- Plugin mendefinisikan server MCP di
.mcp.jsonpada root plugin atau secara inline diplugin.json - Ketika Anda mengaktifkan plugin, Claude Code memulai server MCP-nya secara otomatis
- Claude Code menawarkan tool MCP plugin bersama dengan tool MCP yang dikonfigurasi secara manual
- Anda menambahkan dan menghapus server plugin dengan menginstal atau menghapus instalasi plugin, bukan dengan perintah
/mcp. Anda tetap dapat menonaktifkan server plugin yang terinstal di/mcp, yang menghentikan Claude Code terhubung ke server tersebut tanpa menghapus plugin
.mcp.json pada root plugin:
plugin.json:
- Siklus hidup otomatis: server terhubung dan terputus pada titik-titik berikut:
- Saat startup sesi, Claude Code menghubungkan server untuk plugin yang diaktifkan secara otomatis. Di
/mcp, server plugin jarak jauh (HTTP atau SSE) yang pernah Anda gunakan dapat menampilkan statuscachedsebagai gantinya; Claude Code menghubungkannya ketika Claude pertama kali memanggil salah satu tool-nya. Ketika koneksi server plugin stdio gagal kurang dari 15 menit sebelumnya, Claude Code melewati koneksi tersebut - Jika Anda mengaktifkan atau menonaktifkan plugin selama sesi, Claude Code menghubungkan atau memutuskan server MCP-nya ketika perubahan diterapkan. Menerapkan perubahan plugin tanpa memulai ulang menjelaskan kapan hal itu terjadi. Dalam sesi tanpa terminal interaktif,
/reload-pluginstidak menghubungkan atau memutuskan server MCP plugin; perubahan tersebut berlaku di sesi berikutnya - Saat Anda memuat ulang, Claude Code mempertahankan koneksi aktif server plugin yang konfigurasinya tidak berubah, dan melakukan hal yang sama ketika Anda mengganti daftar server MCP sesi dari Agent SDK tanpa menyebutkan server tersebut
- Ketika Anda memindahkan sesi dengan
/cdpada v2.1.246 atau yang lebih baru, Claude Code menghubungkan server plugin yang diaktifkan oleh pengaturan direktori baru dan memutuskan server plugin yang tidak lagi diaktifkan, sehingga Anda tidak perlu menjalankan/reload-pluginssetelah pemindahan - Dalam sesi cloud, panggilan MCP ke server plugin yang belum terhubung, seperti tepat setelah sesi idle aktif kembali, memulai server sesuai permintaan dan menunggunya terhubung
- Saat startup sesi, Claude Code menghubungkan server untuk plugin yang diaktifkan secara otomatis. Di
- Placeholder path:
${CLAUDE_PLUGIN_ROOT}di-resolve ke direktori instalasi plugin,${CLAUDE_PLUGIN_DATA}ke direktori state persisten-nya, dan${CLAUDE_PROJECT_DIR}ke root proyek yang stabil. Substitusi berlaku untuk:- Server
stdio:command,args,env - Server
http,sse, danws:url,headers, danheadersHelper
- Server
- Akses lingkungan pengguna: akses ke environment variable yang sama seperti server yang dikonfigurasi secara manual
- Beberapa jenis transport: dukungan untuk transport stdio, SSE, HTTP, dan WebSocket, meskipun dukungan transport dapat bervariasi menurut server
/mcp dengan indikator yang menunjukkan bahwa server tersebut berasal dari plugin.
claude mcp get menyembunyikan nilai yang dikonfigurasi untuk server stdio atau WebSocket plugin, karena nilai tersebut dapat membawa kredensial:
- Server stdio: mencetak
Command: stdio, barisArgs:kosong, dan setiap environment variable sebagaiNAME=[REDACTED] - Server WebSocket: mencetak
URL: wsdan setiap header sebagai<name>: [REDACTED], danclaude mcp listmenampilkanwssebagai pengganti URL
.mcp.json atau plugin.json-nya.
Nama tool MCP plugin:
Tool dari server MCP yang disertakan dalam plugin menyertakan nama plugin dan kunci server dalam nama yang dapat dipanggil. Bentuk lengkapnya adalah mcp__plugin_<plugin-name>_<server-name>__<tool-name>, di mana setiap karakter di luar A-Z, a-z, 0-9, _, dan - diganti dengan _. Untuk server database-tools yang disertakan dalam plugin bernama my-plugin, tool query dapat dipanggil sebagai:
allowed-tools milik skill, field tools subagent, atau hook matcher. Hook matcher yang ditulis berdasarkan kunci server saja, seperti mcp__database-tools__.*, tidak pernah terpicu untuk server yang disertakan dalam plugin.
Server itu sendiri terdaftar dengan nama bercakupan plugin:<plugin-name>:<server-name>, seperti plugin:my-plugin:database-tools. Gunakan nama tersebut di tempat yang mengharapkan nama server yang dikonfigurasi, seperti field server pada hook mcp_tool.
Lihat referensi komponen plugin untuk detail tentang menyertakan server MCP dengan plugin.
Cakupan instalasi MCP
Server MCP dapat dikonfigurasi pada tiga cakupan berbeda. Cakupan yang Anda pilih mengontrol proyek mana tempat server dimuat dan apakah konfigurasi dibagikan dengan tim Anda. Administrator juga dapat menerapkan atau menyediakan server untuk setiap pengguna melalui konfigurasi terkelola.Cakupan lokal
Cakupan lokal adalah default. Server dengan cakupan lokal hanya dimuat di proyek tempat Anda menambahkannya dan tetap pribadi untuk Anda. Claude Code menyimpannya dalam~/.claude.json di bawah jalur proyek tersebut, jadi server yang sama tidak akan muncul di proyek lain Anda. Gunakan cakupan lokal untuk server pengembangan pribadi, konfigurasi eksperimental, atau server dengan kredensial yang tidak ingin Anda masukkan ke dalam kontrol versi.
~/.claude.json (direktori home Anda), sementara pengaturan lokal umum menggunakan .claude/settings.local.json (di direktori proyek). Lihat Pengaturan untuk detail tentang lokasi file pengaturan.~/.claude.json. Contoh di bawah menunjukkan hasilnya ketika Anda menjalankannya dari /path/to/your/project:
Cakupan proyek
Server dengan cakupan proyek memungkinkan kolaborasi tim dengan menyimpan konfigurasi dalam file.mcp.json di direktori root proyek Anda. Ketika Anda menambahkan server dengan cakupan proyek, Claude Code secara otomatis membuat atau memperbarui file ini dengan struktur konfigurasi yang sesuai. Periksa .mcp.json ke dalam kontrol versi sehingga semua orang di tim Anda mendapatkan alat dan layanan MCP yang sama.
.mcp.json yang dihasilkan mengikuti format standar:
.mcp.json. Untuk mengatur ulang pilihan persetujuan tersebut, jalankan claude mcp reset-project-choices.
Dalam menjalankan claude -p, sesi Agent SDK, dan sesi cloud di luar thread milik proyek, Claude Code tidak dapat menampilkan prompt tersebut: Claude Code memuat server dengan cakupan proyek tanpa bertanya. Claude Code juga melewati prompt dalam sesi yang Anda mulai dalam mode bypassPermissions dengan skipDangerousModePermissionPrompt diatur dalam pengaturan pengguna Anda atau dalam pengaturan terkelola. Untuk tetap menjaga server agar tidak dimuat:
- Tambahkan ke
disabledMcpjsonServers, yang memblokir server di setiap mode izin. - Kecualikan pengaturan proyek sepenuhnya dengan
--setting-sourcesatau opsisettingSourcesSDK. - Mulai sesi dengan
--strict-mcp-config. Claude Code kemudian hanya menggunakan server MCP yang Anda teruskan dengan--mcp-config. Melewati prompt persetujuan untuk server dengan cakupan proyek yang Claude Code tidak memuat memerlukan Claude Code v2.1.246 atau lebih baru; sebelum v2.1.246, sesi ketat masih menunggu persetujuan untuk mereka, yang membuat sesi latar belakang menunggu saat startup. Lihat Kontrol eksklusif dengan managed-mcp.json untuk apa yang dilakukan flag di bawah file MCP terkelola.
Cakupan pengguna
Server dengan cakupan pengguna disimpan dalam~/.claude.json dan menyediakan aksesibilitas lintas proyek, menjadikannya tersedia di semua proyek di mesin Anda sambil tetap pribadi untuk akun pengguna Anda. Cakupan ini bekerja dengan baik untuk server utilitas pribadi, alat pengembangan, atau layanan yang sering Anda gunakan di berbagai proyek.
Hierarki cakupan dan prioritas
Ketika server yang sama ditentukan di lebih dari satu tempat, Claude Code terhubung ke server tersebut sekali, menggunakan definisi dari sumber dengan prioritas tertinggi. Seluruh entri server dari sumber tersebut digunakan; bidang tidak digabungkan di seluruh cakupan.- Cakupan lokal
- Cakupan proyek
- Cakupan pengguna
- Server yang disediakan plugin
- Konektor claude.ai
:443 pada https, atau garis miring di akhir. Jalur, string kueri, userinfo, atau port non-default yang berbeda membuat dua server.
Server yang disediakan organisasi Anda melalui pengaturan terkelola managedMcpServers menempati peringkat di atas semua ini, jadi ketika salah satu dari mereka menduplikasinya, Claude Code terhubung ke definisi organisasi. Memerlukan Claude Code v2.1.259 atau lebih baru.
Jika Anda membuka sesi lokal di Tab Kode aplikasi Desktop dengan nama server stdio yang sama di tingkat atas ~/.claude.json (cakupan pengguna) dan di .mcp.json, Tab Kode menggunakan definisi ~/.claude.json.
Ekspansi variabel lingkungan dalam .mcp.json
Claude Code mendukung ekspansi variabel lingkungan dalam file .mcp.json, memungkinkan tim untuk berbagi konfigurasi sambil mempertahankan fleksibilitas untuk jalur spesifik mesin dan nilai sensitif seperti kunci API.
Anda dapat mereferensikan environment variable dalam nilai command, args, env, url, atau headers milik server, dalam salah satu dari dua bentuk:
${VAR}: berkembang menjadi nilai variabel lingkunganVAR${VAR:-default}: diperluas menjadi nilaiVARjikaVARdiatur, atau menjadidefaultjika tidak diatur
Contoh dengan ekspansi variabel
Dalam entri server ini, URL adalah nilaiAPI_BASE_URL diikuti oleh /mcp, dengan https://api.example.com sebagai default, dan kunci API berasal dari API_KEY:
Variabel yang tidak diatur tanpa default
Jika variabel lingkungan yang dirujuk tidak diatur dan tidak memiliki nilai default, konfigurasi masih dimuat: Claude Code melaporkan peringatan variabel yang hilang untuk server tersebut dalam outputclaude mcp list dan menggunakan teks ${VAR} yang tidak diperluas sebagaimana adanya. Atur variabel atau tambahkan fallback :-default sehingga server dimulai dengan nilai yang Anda maksudkan. Dalam url dan headers server jarak jauh, beberapa variabel kredensial dibaca sebagai kosong sebagai gantinya, tanpa peringatan.
Variabel yang diatur ke string kosong
Jika Anda mengatur variabel ke string kosong, variabel tersebut dihitung sebagai diatur, sehingga referensi${VAR:-default} diperluas menjadi string kosong, bukan menjadi default. Dengan server contoh, jika Anda mengatur API_BASE_URL ke string kosong, url-nya menjadi /mcp dan claude mcp list melaporkan 'url' is not a valid URL. Untuk menggunakan default, hapus pengaturan variabel tersebut alih-alih mengaturnya ke string kosong.
Variabel kredensial yang dibaca sebagai kosong
Dalamurl dan headers server jarak jauh, Claude Code membaca variabel kredensial dari lingkungan Anda sebagai kosong daripada memperluasnya. Ini mencegah .mcp.json proyek atau plugin dari mengirim kredensial Claude Code atau penyedia cloud Anda ke server yang dinamainya. Jika Anda menulis Bearer ${ANTHROPIC_AUTH_TOKEN}, server menerima Bearer tanpa kredensial dan menolak permintaan, biasanya dengan 401. Claude Code melaporkan itu sebagai koneksi yang gagal.
Nama yang tercakup adalah:
- Kredensial Claude Code sendiri, seperti
ANTHROPIC_API_KEYdanANTHROPIC_AUTH_TOKEN - Kredensial penyedia cloud Anda, seperti
AWS_BEARER_TOKEN_BEDROCK - Kredensial lain yang dibawa lingkungan Anda, seperti
HTTPS_PROXYdanNPM_TOKEN
:-default padanya diabaikan. URL dasar penyedia seperti ANTHROPIC_BASE_URL masih berkembang, jadi "url": "${ANTHROPIC_BASE_URL}/mcp" berfungsi, kecuali nilai URL itu sendiri menyematkan kredensial seperti nama pengguna dan kata sandi.
Nama di luar set ini, seperti API_KEY, berkembang seperti yang ditulis. Untuk memberikan server salah satu kredensial yang tercakup, salinnya ke dalam variabel dengan nama Anda sendiri dan referensikan nama itu sebagai gantinya.
Ketika url atau headers server jarak jauh mereferensikan variabel yang tercakup yang telah Anda atur, Claude Code menamakannya dalam baris log debug. Untuk membaca baris tersebut, jalankan claude --debug-file /tmp/claude-debug.log dan cari file itu untuk never expanded toward a remote server.
Bagaimana referensi muncul dalam output /mcp dan CLI
Untuk server dalam cakupan lokal, proyek, atau pengguna, permukaan berikut menampilkan referensi ${VAR} berdasarkan nama daripada sebagai nilai yang diselesaikannya:
- URL atau baris perintah dalam tampilan detail
/mcpserver - Output
claude mcp listdanclaude mcp get
/mcp menampilkan referensi dengan cara ini dalam Claude Code v2.1.268 atau lebih baru.
Untuk server yang disediakan organisasi Anda melalui pengaturan managedMcpServers, permukaan ini menampilkan hanya host URL.
Untuk memeriksa apa yang ditampilkan claude mcp list, claude mcp get, dan /mcp ketika koneksi gagal, lihat Detail status server.
Contoh praktis
Contoh: Hubungkan ke GitHub untuk tinjauan kode
Server MCP jarak jauh GitHub diautentikasi dengan token akses pribadi GitHub yang diteruskan sebagai header. Untuk mendapatkan satu, buka pengaturan token GitHub Anda, hasilkan token baru yang bersifat fine-grained dengan akses ke repositori yang ingin Claude kerjakan, kemudian tambahkan server:YOUR_GITHUB_PAT dengan token akses pribadi Anda. Perintah claude mcp add menyimpan konfigurasi tanpa memvalidasi kredensial, jadi nilai placeholder diterima di sini tetapi server gagal terhubung nanti. Untuk memverifikasi koneksi, jalankan /mcp dan periksa bahwa baris server menunjukkan tanda centang. Server dengan kredensial buruk menunjukkan ✘ sebagai gantinya, dan detail kegagalannya mencakup status HTTP yang dikembalikan server, seperti 401.
Kemudian bekerja dengan GitHub:
Contoh: Tanyakan database PostgreSQL Anda
DBHub, paket@bytebase/dbhub, adalah server MCP yang menghubungkan Claude ke database relasional melalui string koneksi yang Anda teruskan di --dsn. Gunakan pengguna database read-only dalam string koneksi sehingga kueri yang Claude jalankan tidak dapat memodifikasi data:
/mcp dan periksa bahwa baris db menunjukkan tanda centang.
Kemudian tanyakan database Anda secara alami:
Autentikasi dengan server MCP jarak jauh
Banyak server MCP berbasis cloud memerlukan autentikasi. Claude Code mendukung OAuth 2.0 untuk koneksi yang aman. Claude Code menandai server jarak jauh sebagai memerlukan autentikasi ketika server merespons dengan401 Unauthorized atau 403 Forbidden. Apa yang Claude Code tampilkan tergantung pada server:
- Untuk server yang belum Anda masuki, salah satu kode status menandainya di
/mcpsehingga Anda dapat menyelesaikan alur OAuth. - Untuk konektor claude.ai,
401yang disebabkan oleh claude.ai menolak token sesi Anda tidak menandai konektor, karena otorisasi ulang konektor tidak dapat memperbaiki login Anda. Claude Code menampilkan status token-sesi-ditolak sebagai gantinya. - Untuk server yang header
AuthorizationAnda konfigurasi, diheadersatau melaluiheadersHelper,401atau403saat menghubungkan tidak menandai server, karena kredensial untuk diperbaiki adalah yang Anda konfigurasi. Claude Code melaporkan koneksi sebagai gagal sebagai gantinya. Jika Anda menetapkan header itu dari referensi${VAR}, periksa apakah variabel itu adalah salah satu yang Claude Code baca sebagai kosong. - Untuk konektor dikirimkan ke sesi cloud, Claude Code tidak menjalankan alur masuk, karena proxy sesi mengautentikasi ke konektor dengan otorisasi yang Anda berikan di claude.ai. Ketika konektor di sana perlu diotorisasi lagi, sambungkan kembali di claude.ai/customize/connectors daripada dari sesi.
401 Unauthorized, Claude Code menyegarkan token, menghubungkan kembali, dan mencoba ulang permintaan sekali. Ini menandai server di /mcp hanya jika retry itu juga gagal. Dalam proses claude -p atau Agent SDK di macOS, permintaan yang dikirim Claude Code saat tidak dapat membaca token yang disimpan akan gagal dengan kesalahan kredensial tersimpan sebagai gantinya.
Ketika server menolak token penyegaran yang disimpan, Claude Code segera menampilkan pemberitahuan yang menunjuk ke /mcp. Buka /mcp dan pilih Re-authenticate pada server untuk masuk lagi sebelum panggilan tool berikutnya gagal.
Server khusus yang mengembalikan header WWW-Authenticate yang menunjuk ke server otorisasinya mendapatkan penemuan otomatis yang sama seperti server jarak jauh lainnya.
Claude Code juga menampilkan pemberitahuan startup ketika satu atau lebih server yang dikonfigurasi memerlukan autentikasi, sehingga Anda tidak perlu membuka /mcp untuk menemukan server mana yang memerlukan masuk. Pemberitahuan ini hanya menghitung server yang dapat Anda masuki dari Claude Code. Sebelum v2.1.218, ini juga menghitung konektor claude.ai yang tidak terhubung di claude.ai, yang hanya dapat Anda hubungkan dari pengaturan claude.ai.
Pemberitahuan mengumumkan setiap server sekali dan mengeluarkannya dari hitungan di peluncuran berikutnya sampai server itu telah terhubung dan memerlukan masuk lagi. /mcp masih mencantumkan setiap server yang memerlukan masuk.
Proses claude -p atau Agent SDK tidak memiliki panel /mcp, jadi Claude Code tidak dapat menjalankan alur OAuth di sana. Untuk menggunakan server yang memerlukan autentikasi, selesaikan masuk dari sesi interaktif terlebih dahulu: jalankan /mcp di sesi, atau claude mcp login <name> di shell Anda. Ketika server yang dikonfigurasi memerlukan autentikasi selama proses claude -p atau Agent SDK dengan pencarian tool diaktifkan, Claude Code memberi tahu Claude bahwa tool server tidak tersedia sampai Anda mengotorisasinya.
Jika Anda mengonfigurasi headers.Authorization untuk server dan server menolak header itu, Claude Code melaporkan koneksi sebagai gagal daripada kembali ke OAuth. Periksa bahwa token valid untuk endpoint MCP, atau hapus header untuk menggunakan alur OAuth.
Tambahkan server yang memerlukan autentikasi
sentry di mulai cepat MCP, lewati langkah ini: menjalankan claude mcp add lagi dengan nama server yang sama di cakupan yang sama gagal dengan MCP server sentry already exists in local config. Jika tidak, jalankan:Gunakan perintah /mcp dalam Claude Code
Autentikasi dari baris perintah
Perintahclaude mcp login <name> menjalankan alur OAuth server yang dikonfigurasi langsung dari shell Anda, sehingga Anda tidak perlu membuka panel /mcp di dalam sesi. Untuk konektor claude.ai, ikuti Otorisasi konektor lagi dari shell Anda.
claude mcp logout <name>.
claude mcp login mendeteksi ketika tidak ada browser lokal yang tersedia, seperti selama sesi SSH atau di Linux tanpa server tampilan, dan mencetak URL otorisasi daripada mencoba membuka browser. Buka URL di mesin lokal Anda, kemudian tempel URL pengalihan lengkap dari bilah alamat browser Anda kembali ke prompt. Perintah memerlukan terminal interaktif untuk langkah tempel, jadi hubungkan dengan ssh -t. Berikan --no-browser untuk memaksa prompt URL bahkan ketika browser lokal terdeteksi.
Gunakan port callback OAuth tetap
Beberapa server MCP memerlukan URI pengalihan tertentu yang terdaftar sebelumnya. Secara default, Claude Code memilih port yang tersedia secara acak untuk callback OAuth. Gunakan--callback-port untuk memperbaiki port sehingga cocok dengan URI pengalihan yang telah terdaftar sebelumnya dalam bentuk http://localhost:PORT/callback. Jika masuk pada Claude Code v2.1.229 gagal dengan ketidakcocokan URI pengalihan, lihat catatan versi di bawah Gunakan kredensial OAuth yang telah dikonfigurasi sebelumnya.
Anda dapat menggunakan --callback-port sendiri (dengan pendaftaran klien dinamis) atau bersama dengan --client-id (dengan kredensial yang telah dikonfigurasi sebelumnya).
Gunakan kredensial OAuth yang telah dikonfigurasi sebelumnya
Beberapa server MCP tidak mendukung pengaturan OAuth otomatis melalui Pendaftaran Klien Dinamis. Jika Anda melihat kesalahan seperti “Incompatible auth server: does not support dynamic client registration,” server memerlukan kredensial yang telah dikonfigurasi sebelumnya. Claude Code juga mendukung server yang menggunakan Dokumen Metadata ID Klien (CIMD) daripada Pendaftaran Klien Dinamis, dan menemukan ini secara otomatis. Jika penemuan otomatis gagal, daftarkan aplikasi OAuth melalui portal pengembang server terlebih dahulu, kemudian berikan kredensial saat menambahkan server.Daftarkan aplikasi OAuth dengan server
http://localhost:PORT/callback dengan port itu. Anda akan menggunakan port yang sama di langkah berikutnya.Di v2.1.229, Claude Code mengirim http://127.0.0.1:PORT/callback sebagai gantinya, dan server yang cocok persis dengan URI pengalihan yang terdaftar menolak masuk dengan ketidakcocokan URI pengalihan. Claude Code v2.1.231 mengembalikan bentuk localhost. Untuk pulih di v2.1.229, tingkatkan Claude Code, atau sementara tambahkan bentuk http://127.0.0.1:PORT/callback ke URI pengalihan yang terdaftar di server.Tambahkan server dengan kredensial Anda
claude mcp add mengambil ID klien dan port callback Anda sebagai flag, dan claude mcp add-json mengambilnya dalam objek oauth. Jika Anda mendaftarkan URI pengalihan, atur port callback ke port dalam URI itu.- claude mcp add
- claude mcp add-json
- claude mcp add-json (callback port only)
- CI / env var
--client-id untuk meneruskan ID klien aplikasi Anda. Flag --client-secret meminta rahasia dengan input bertopeng:Autentikasi di Claude Code
/mcp di Claude Code dan ikuti alur login browser.Timpa penemuan metadata OAuth
Arahkan Claude Code ke URL metadata server otorisasi OAuth tertentu untuk melewati rantai penemuan default. AturauthServerMetadataUrl ketika endpoint standar server MCP mengalami kesalahan, atau ketika Anda ingin merutekan penemuan melalui proxy internal. Secara default, Claude Code pertama kali memeriksa Metadata Sumber Daya Terlindungi RFC 9728 di /.well-known/oauth-protected-resource, kemudian kembali ke metadata server otorisasi RFC 8414 di /.well-known/oauth-authorization-server.
Atur authServerMetadataUrl dalam objek oauth dari konfigurasi server Anda di .mcp.json:
https://. scopes_supported URL metadata menimpa scope yang diiklankan server hulu.
Batasi scope OAuth
Aturoauth.scopes untuk menyematkan scope yang Claude Code minta selama alur otorisasi. Ini adalah cara yang didukung untuk membatasi server MCP ke subset yang disetujui tim keamanan ketika server otorisasi hulu mengiklankan lebih banyak scope daripada yang ingin Anda berikan. Nilainya adalah string tunggal yang dipisahkan spasi, cocok dengan format parameter scope di RFC 6749 §3.3.
oauth.scopes diutamakan daripada authServerMetadataUrl maupun scope yang ditemukan server di /.well-known. Biarkan tidak diatur untuk membiarkan server MCP menentukan set scope yang diminta.
Ketika oauth.scopes tidak diatur, Claude Code tidak meminta katalog scopes_supported lengkap dari metadata server otorisasi yang ditemukan secara otomatis. Metadata yang diambil dari authServerMetadataUrl yang dikonfigurasi masih menyediakan scopes_supported-nya sebagai scope yang diminta.
Jika server otorisasi mengiklankan offline_access di scopes_supported, Claude Code menambahkannya ke scope yang disematkan sehingga token akses dapat disegarkan tanpa masuk browser baru.
Jika server kemudian mengembalikan 403 insufficient_scope untuk panggilan tool, panggilan gagal dengan pesan needs additional permissions yang menyebutkan scope yang diminta server. Server ditampilkan sebagai memerlukan autentikasi di /mcp.
Jika scope itu tidak ada di oauth.scopes yang disematkan, tambahkan, kemudian jalankan /mcp dan autentikasi server lagi. Claude Code meminta scope yang disematkan daripada scope yang dinamai server, jadi jika Anda autentikasi lagi tanpa menambahkannya, token yang Anda dapatkan masih kekurangannya.
Gunakan OAuth dengan server di balik proxy yang melakukan autentikasi
Jika server MCP Anda menggunakan OAuth di balik proxy atau gateway yang memeriksa header miliknya sendiri, proses masuk gagal ketika permintaan OAuth tiba tanpa header itu. Masuk melalui proxy memerlukan Claude Code v2.1.299 atau lebih baru, dengan header dan proses masuk keduanya dikonfigurasi:- Header proxy: teruskan dengan
--header, bidangheaders, atauheadersHelper, dengan nama yang dibaca proxy - Proses masuk OAuth: jangan sertakan
Authorizationdalam header yang dikonfigurasi, lalu masuk denganclaude mcp login <name>di shell Anda. Jika Anda mengonfigurasi headerAuthorization, Claude Code menggunakannya sebagai kredensial server dan tidak kembali ke OAuth untuk server tersebut.
Gunakan header dinamis untuk autentikasi khusus
Ketika autentikasi seperti Kerberos, token berumur pendek, atau SSO internal memerlukan header yang dihasilkan pada waktu koneksi, aturheadersHelper server ke sebuah perintah. Claude Code menjalankannya saat menghubungkan dan menggabungkan outputnya ke dalam header yang dikirimnya. Contoh ini menggunakan skrip:
- Perintah harus menulis objek JSON dari pasangan kunci-nilai string ke stdout
- Claude Code menjalankan perintah dalam shell dan menyerah padanya setelah 10 detik
- Claude Code memilih direktori kerja perintah dengan di mana Anda mengonfigurasi server, jadi berikan skrip sebagai jalur absolut atau letakkan di
PATH - Header dinamis menimpa
headersstatis apa pun dengan nama yang sama
401 Unauthorized atau 403 Forbidden, Claude Code secara otomatis menjalankan ulang helper di bawah aturan yang sama, menghubungkan kembali dengan header segar, dan mencoba ulang panggilan sekali. Claude Code menandai server sebagai memerlukan autentikasi di /mcp hanya jika retry itu juga gagal.
Ketika output helper menyertakan header Authorization, Claude Code menggunakan kredensial itu sebagai autentikasi server dan tidak kembali ke OAuth untuk server.
Jika server menolak kredensial helper saat menghubungkan, Claude Code melaporkan koneksi sebagai gagal daripada menandai server sebagai memerlukan autentikasi. Perbaiki kredensial yang dikembalikan helper Anda, kemudian sambungkan kembali dari /mcp untuk menjalankan ulang helper.
Claude Code menetapkan environment variable ini saat menjalankan helper:
headersHelper yang disediakan plugin tidak dapat mereferensikan nilai ${user_config.*} plugin, karena perintah berjalan melalui shell. Claude Code melaporkan server sebagai salah konfigurasi dengan kesalahan dan tidak mengganti nilai. Letakkan ${user_config.KEY} di bidang headers server sebagai gantinya, yang tidak diurai shell, atau buat skrip helper membaca nilai dari file konfigurasi. Sebelum v2.1.207, headersHelper mengganti nilai ${user_config.*}.
Di mana helper berjalan
Claude Code memilih direktori kerja perintahheadersHelper dari konfigurasi yang mendeklarasikan server. cd yang Claude jalankan di Bash tidak memindahkannya, dan /cd memindahkannya hanya untuk server yang berjalan dari direktori kerja utama sesi. Setiap baris di bawah memberikan direktori yang menjadi acuan penyelesaian jalur relatif dalam perintah headersHelper Anda.
Variabel mana yang dapat dibaca helper
headersHelper yang disediakan repositori atau plugin adalah perintah yang tidak Anda tulis, jadi Claude Code menjalankannya tanpa variabel kredensial dari lingkungan Anda, seperti ANTHROPIC_API_KEY. Di mana Anda mengonfigurasi server menentukan apakah ini berlaku:
- Dihapus: server di
.mcp.jsonproyek atau di plugin, dan server inline di file agent dari proyek Anda atau dari direktori--add-dir - Tidak dihapus: server di cakupan pengguna atau cakupan lokal, di MCP terkelola, dari konektor claude.ai, atau disediakan oleh SDK atau
--mcp-config, dan server inline di file agent dari~/.claude/agents/, dari pengaturan terkelola, atau diteruskan dengan--agents
GIT_CONFIG_KEY_<n> Git, Claude Code menghapus setiap variabel dari lingkungan Anda yang namanya terlihat seperti kredensial, seperti nama dengan TOKEN, SECRET, PASSWORD, KEY, atau AUTH di dalamnya dalam huruf besar atau kecil, jadi ANTHROPIC_API_KEY dan MY_REGISTRY_TOKEN keduanya dihapus. Claude Code juga menghapus daftar tetap variabel kredensial yang namanya tidak mengikuti pola itu, seperti ANTHROPIC_CUSTOM_HEADERS.
Ketika ini berlaku untuk helper Anda, buat skrip membaca kredensialnya dari file atau penyimpanan kredensial. Jika url server membawa nilai langsung dari salah satu variabel ini, seperti MY_REGISTRY_TOKEN, nilai CLAUDE_CODE_MCP_SERVER_URL yang diterima helper memiliki bagian itu diganti dengan REDACTED juga.
Percayai folder sebelum headersHelper-nya berjalan
Claude Code menjalankanheadersHelper sebagai perintah shell arbitrer. Untuk server di .mcp.json proyek atau di cakupan lokal, ini menjalankan helper hanya setelah Anda menerima dialog kepercayaan untuk direktori proyek tempat server dideklarasikan. Sebelum v2.1.238, sesi claude -p atau SDK menjalankan helper ini tanpa memeriksa kepercayaan, dan sesi interaktif menjalankannya setelah Anda mempercayai folder induk.
- Kepercayaan yang tidak dihitung: kepercayaan folder induk, dan kepercayaan otomatis yang diterima sesi
claude -patau SDK untuk hook di file pengaturan - Sampai Anda mempercayai folder: Claude Code menghubungkan server dengan
headersstatis saja. Dalam sesiclaude -patau SDK ini juga mencetak satu barisheadersHelper not runper server ke stderr, memberi tahu Anda cara memberikan kepercayaan. - Kepercayaan tanpa dialog: atur
projects["<path>"].hasTrustDialogAcceptedketruedi~/.claude.json.<path>adalah folder yang menurut Aturan izin proyek dan kepercayaan workspace menjadi kunci kepercayaan Claude Code.
.claude/agents/-nya, atau direktori --add-dir. Sampai Anda mempercayai proyek atau direktori itu sendiri, Claude Code tidak memuat server sama sekali, jadi helper-nya tidak pernah berjalan juga.
Masuk ke server MCP di balik gateway yang memerlukan header
Masuk OAuth ke server MCP gagal ketika gateway memerlukan header, sepertiX-API-Key, dan Claude Code tidak mengirimkannya. Agar Claude Code mengirim header itu, tambahkan header tersebut ke konfigurasi server dan gunakan Claude Code v2.1.299 atau lebih baru:
- Server yang konfigurasinya dapat Anda edit: tetapkan di
headersatau kembalikan dariheadersHelper - Server yang disediakan oleh MCP terkelola atau plugin: minta administrator Anda atau pembuat plugin untuk menambahkan header ke entri server
Authorization, ke permintaan masuk, penyegaran token, dan pencabutan token yang dikirimnya ke origin server. Origin server adalah skema, host, dan port di url-nya. Gateway yang memerlukan header masih dapat menghentikan proses masuk di halaman otorisasi atau di server otorisasi pada origin lain:
- Halaman otorisasi: Anda masuk di halaman ini melalui browser Anda, yang tidak mengirim header yang dikonfigurasi. Jika browser Anda menerima kesalahan dari gateway alih-alih halaman tersebut, minta pengelola gateway untuk meloloskan halaman itu tanpa header.
- Server otorisasi pada origin lain: jika gateway di depan server itu juga memerlukan header, proses masuk gagal di sana. Minta pengelola gateway tersebut untuk meloloskan permintaan OAuth tanpa header.
Tambahkan server MCP dari konfigurasi JSON
Jika Anda memiliki konfigurasi JSON untuk server MCP, Anda dapat menambahkannya secara langsung:Tambahkan server MCP dari JSON
Verifikasi server ditambahkan
Impor server MCP dari Claude Desktop
Jika Anda telah mengonfigurasi server MCP di Claude Desktop, Anda dapat mengimpornya:Impor server dari Claude Desktop
Pilih server mana yang akan diimpor
Verifikasi server diimpor
claude mcp hanya dapat berisi huruf, angka, tanda hubung, dan garis bawah. Claude Desktop tidak menerapkan pembatasan itu, jadi server Claude Desktop yang namanya berisi karakter lain, seperti spasi, tidak dapat diimpor. Impor melaporkan setiap nama yang ditolak dan tetap mengimpor server lain yang Anda pilih.
Gunakan server MCP dari claude.ai
Jika Anda telah masuk ke Claude Code dengan akun claude.ai, server MCP yang telah Anda tambahkan di claude.ai, yang dikenal sebagai connectors, secara otomatis tersedia di Claude Code:Konfigurasi server MCP di claude.ai
Autentikasi server MCP
Lihat dan kelola server di Claude Code
/mcp mencantumkan claude.ai Claude Docs tanpa setup, dan Claude menggunakannya ketika Anda meminta dokumen yang dimaksudkan untuk orang lain. Untuk mematikan hanya konektor ini, lihat Nonaktifkan konektor claude.ai.
Claude Code menandai connector sebagai managed di /mcp dan di manajer /plugin ketika organisasi Anda mengelola autentikasinya di claude.ai. Status managed tidak mengubah cara Claude Code terhubung ke connector atau menerapkan kontrol alat organisasi Anda.
Connector yang belum pernah Anda masuki dilipat di belakang baris Show unused connectors di akhir bagian claude.ai, sehingga daftar yang disediakan organisasi tidak mengisi panel. Pilih baris untuk memperluasnya. Connector yang Anda masuki sebelumnya tetap terlihat bahkan ketika saat ini memerlukan re-autentikasi.
Connector dari claude.ai diambil hanya ketika metode autentikasi aktif Anda adalah login langganan claude.ai. Mereka tidak dimuat, bahkan jika Anda sebelumnya menjalankan /login, ketika:
ANTHROPIC_API_KEY,ANTHROPIC_AUTH_TOKEN, atauapiKeyHelperaktif- Penyedia pihak ketiga seperti Amazon Bedrock atau Agent Platform Google Cloud aktif
ANTHROPIC_PROFILE, variabel federasi, atau profil Anthropic aktif menyediakan kredensialCLAUDE_CODE_OAUTH_TOKENmenyimpan token dariclaude setup-token, yang hanya dapat membuat permintaan model
/mcp tidak mencantumkan connector yang Anda tambahkan, jalankan /status untuk mengonfirmasi metode autentikasi mana yang aktif. Batalkan pengaturan variabel lingkungan itu, hapus pengaturan apiKeyHelper, atau matikan profil, kemudian jalankan /login untuk memilih akun claude.ai Anda.
Jika masalah jaringan sementara mencegah daftar connector dimuat saat sesi Anda dimulai, Claude Code mencoba pengambilan hingga tiga kali di latar belakang, dan connector muncul setelah percobaan berhasil. Jika mereka masih belum muncul, mulai ulang Claude Code untuk mengambil daftar lagi.
Jika /mcp menunjukkan connector sebagai session token rejected, atau tampilan detailnya menunjukkan claude.ai rejected the session token, claude.ai menolak token dari login Claude Code Anda. Mengotorisasi connector lagi tidak menghapus status ini, karena otorisasi connector itu sendiri di claude.ai bukan yang ditolak. Untuk menghapusnya:
- Jalankan
/loginuntuk masuk lagi. - Hubungkan kembali connector dari
/mcp.
/mcp mencantumkan connector sebagai tersembunyi dan menunjukkan cara menghapus duplikat jika Anda lebih suka menggunakan connector.
Beberapa connector yang dihosting Anthropic, seperti Microsoft 365, Gmail, dan Google Calendar, tidak mendukung OAuth lokal dari Claude Code karena penyedia identitas upstream hanya menerima URL pengalihan yang didaftarkan claude.ai. Ketika server yang Anda tambahkan dengan claude mcp add atau di .mcp.json menunjuk ke salah satu host ini dan Anda masuk ke dalamnya dari /mcp atau dengan claude mcp login, Claude Code menunjukkan is Anthropic-hosted and doesn't support local OAuth, mengarahkan Anda untuk menghubungkan layanan di claude.ai/customize/connectors sebagai gantinya.
Setelah Anda menghapus entri Anda dengan claude mcp remove <name> dan menghubungkan layanan di claude.ai, connector muncul di Claude Code secara otomatis.
Bagaimana connector mencapai Claude Code
Pengaturan mana yang mengatur konektor claude.ai tergantung pada tempat sesi Anda berjalan, karena hanya beberapa sesi yang mengambil konektor dari claude.ai sendiri. Setiap baris di bawah menunjukkan bagaimana konektor tiba dalam satu jenis sesi dan apa yang mengontrolnya di sana. Sesi WSL aplikasi desktop tidak memiliki baris karena konektor masih dalam proses peluncuran ke sesi tersebut.disableClaudeAiConnectors, ENABLE_CLAUDEAI_MCP_SERVERS, dan allowAllClaudeAiMcps hanya bertindak pada baris pertama, connector yang Claude Code ambil sendiri. Dua baris lainnya berbeda darinya dengan cara-cara ini:
- Sesi cloud: Entri
allowedMcpServersdandeniedMcpServersyang mencapai sesi, misalnya melalui pengaturan yang dikelola server, juga memfilter connector yang dikirimkan. Proxy sesi menulis ulang URL setiap connector, jadi polaserverUrlyang ditulis untuk URL connector itu sendiri tidak cocok. Untuk mengakui connector yang dikirimkan bersama allowlist URL di lingkungan yang dihosting sendiri, tambahkan entriserverUrlyang tercantum di bawah Lalu lintas Connector meninggalkan jaringan Anda. Claude Code menghapus connector yang dikirimkan ketikamanaged-mcp.jsonada di host yang menjalankan sesi, seperti host runner yang dihosting sendiri, terlepas dari apakah Anda menetapkanallowAllClaudeAiMcps. - Sesi lokal dan SSH aplikasi desktop: aplikasi desktop mendaftarkan connector sebagai server
type: "sdk"dalam proses, dan tidak ada pengaturan MCP ataumanaged-mcp.jsonyang mencapainya. Pengguna menjaga connector keluar dari sesi mereka sendiri dengan memutusnya di claude.ai/customize/connectors. Organisasi memblokir alat connector atau mematikan Claude Code di aplikasi desktop sepenuhnya.
Kontrol organisasi pada alat connector
Organisasi Anda dapat menetapkan kontrol per-alat pada connector claude.ai. Claude Code membaca pengaturan ini saat startup dan memberlakukannya secara lokal, kecuali di sesi lokal dan SSH aplikasi desktop. Di sana, aplikasi desktop menahan alatblocked sebelum mengirimkan connector, dan pengaturan ask tidak mencapai Claude Code, jadi ia menerapkan aturan izin biasa sesi ke alat tersebut alih-alih meminta pada setiap panggilan. Di sesi tempat Claude Code mengambil connector sendiri, jalankan /mcp untuk melihat pengaturan mana yang berlaku untuk setiap alat pada connector.
- Tool diatur ke
ask: Claude Code meminta pada setiap panggilan dengan alasanYour organization requires approval for this tool. Prompt muncul bahkan dalam mode izinacceptEdits,auto, danbypassPermissions. Di terminal, prompt tidak memiliki opsi untuk mengingat pilihan Anda. Aturan Allow yang cocok dengan tool juga tidak melewati prompt. Dalam modedontAsk, yang tidak pernah meminta, Claude Code menolak panggilan sebagai gantinya. - Alat diatur ke
blocked: Claude Code memfilter alat keluar sebelum Claude melihatnya, jadi tidak pernah muncul dalam daftar alat Claude. Di sesi tempat Claude Code mengambil connector sendiri, daftar alat/mcpmasih menunjukkan alat, ditandaidisabled by your organization.
blocked yang sama, jadi Claude tidak dapat menggunakan alat yang diblokir di sana juga, dan Anda tidak dapat menahan alat dari sesi aplikasi desktop sambil membuatnya tersedia di chat. Aplikasi desktop melewati connector yang semua alatnya diblokir.
Nonaktifkan connectors claude.ai
Claude Code menerapkandisableClaudeAiConnectors hanya ke connector yang diambilnya sendiri, bukan ke connector yang dikirimkan host cloud atau aplikasi desktop. Untuk mematikan connector yang diambilnya, atur pengaturan ke true dalam cakupan pengaturan apa pun:
true dalam sumber pengaturan apa pun mengambil alih. File .claude/settings.json proyek yang diperiksa dapat memilih repositori keluar dari connector yang Claude Code ambil sendiri, tetapi false tingkat proyek tidak dapat mengaktifkan kembali connector yang true tingkat pengguna atau kebijakan telah nonaktifkan. Server yang diteruskan secara eksplisit melalui --mcp-config tidak terpengaruh.
Anda juga dapat menetapkan variabel lingkungan ENABLE_CLAUDEAI_MCP_SERVERS ke false, yang memiliki efek yang sama untuk sesi shell saat ini:
deniedMcpServers berdasarkan nama atau pola URL. Misalnya, entri serverName dari "claude.ai Slack" memblokir connector Slack. Anda juga dapat menjalankan /mcp untuk mengalihkan connector apa pun yang Claude Code ambil atau matikan hanya untuk proyek saat ini.
Gunakan Claude Code sebagai server MCP
Anda dapat menggunakan Claude Code itu sendiri sebagai server MCP yang dapat dihubungkan oleh aplikasi lain:Membaca output perintah latar belakang sebagai klien MCP
BidangbackgroundOutputPath dalam hasil Bash atau PowerShell dari claude mcp serve berarti panggilan tersebut membiarkan perintahnya tetap berjalan di latar belakang. Perintah berjalan di latar belakang ketika klien Anda menetapkan run_in_background: true pada panggilan tersebut. Perintah latar depan juga dapat berpindah ke latar belakang ketika mencapai timeout-nya.
Bidang tersebut berada dalam teks JSON hasil dan berisi jalur file output perintah.
- Untuk membaca output sejauh ini: buka file di jalur tersebut dari klien Anda, atau berikan jalur tersebut sebagai
file_pathke toolReadmilik server - Untuk mengetahui kapan perintah telah selesai: tambahkan
echoberisi string tetap ke nilaicommand, sepertinpm test; echo DONE. Perintah telah selesai setelah string tersebut muncul di dalam file. Tanpa string tersebut, tidak ada yang menandai akhirnya, karena Claude Code tidak menambahkan baris penutup ke file dan tidak memberi tahu klien Anda. - Untuk membaca bagian akhir output yang panjang:
Readdengan hanyafile_pathmengembalikan halaman pertama, atau gagal ketika file melebihi batas ukuran. Berikan jugaoffsetdanlimit, yang berfungsi pada ukuran file berapa pun:- Panggil
Readdenganoffsetdanlimitkeduanya ditetapkan ke1, lalu ambiltotalLinesdari hasilnya - Panggil
Readlagi denganoffsetditetapkan ketotalLinesdikurangi sembilan danlimitditetapkan ke10 - Cari string
echoAnda di sepuluh baris terakhir, yang dikembalikan oleh panggilan kedua
- Panggil
backgroundOutputPath memerlukan Claude Code v2.1.295 atau yang lebih baru.
Batas dan peringatan output MCP
Ketika tool MCP menghasilkan output besar, Claude Code membantu mengelola penggunaan token untuk mencegah membanjiri konteks percakapan Anda:- Ambang batas peringatan output: Claude Code menampilkan peringatan ketika output tool MCP apa pun melebihi 10.000 token
- Batas yang dapat dikonfigurasi: Anda dapat menyesuaikan token output MCP maksimum yang diizinkan menggunakan environment variable
MAX_MCP_OUTPUT_TOKENS - Batas default: maksimum default adalah 25.000 token
- Cakupan: environment variable berlaku untuk tool yang tidak mendeklarasikan batas mereka sendiri. Tool yang menetapkan
anthropic/maxResultSizeCharsmenggunakan nilai tersebut sebagai gantinya untuk konten teks, terlepas dari apa yang ditetapkanMAX_MCP_OUTPUT_TOKENS. Tool yang mengembalikan data gambar masih tunduk padaMAX_MCP_OUTPUT_TOKENS - Melampaui batas: ketika hasil yang berhasil tanpa konten gambar melebihi batas token, Claude Code menyimpannya ke file dan menggantinya dalam percakapan dengan pesan yang menyebutkan jalur file, sehingga Claude membaca file ketika membutuhkan konten. File tersebut berada di direktori
tool-resultssesi di bawah~/.claude/projects/. - Ukuran respons dari server HTTP dan SSE: ketika respons dari server HTTP atau SSE melewati 16 MiB, Claude Code berhenti membacanya dan permintaan tersebut gagal. Batas ini berlaku setelah dekompresi untuk satu body respons JSON atau satu event dari event stream. Jika Anda mengelola server tersebut, kembalikan lebih sedikit data per respons agar tetap di bawah batas, misalnya dengan melakukan paginasi hasil
- Ukuran pesan dari server WebSocket: ketika server WebSocket mengirim satu pesan yang melebihi 16 MiB, Claude Code menutup koneksi, dan panggilan yang sedang berlangsung pada server tersebut gagal. Jika Anda mengelola server tersebut, kembalikan lebih sedikit data per pesan agar tetap di bawah batas
- Batas karakter untuk hasil teks: untuk tool yang tidak mendeklarasikan
anthropic/maxResultSizeChars, Claude Code menyimpan hasil yang berhasil tanpa konten gambar ke file setelah panjangnya melebihi 50.000 karakter, berapa pun jumlah tokennya. MenetapkanMAX_MCP_OUTPUT_TOKENStidak mengubah ambang batas ini - Hasil error: ketika tool mengembalikan hasil yang ditandai
isError: true, Claude menerima teks hasil tersebut sebagai pesan error tool. Teks error yang lebih panjang dari sekitar 11.000 karakter hanya mempertahankan 5.000 karakter pertama dan 5.000 karakter terakhirnya, dengan penanda di antaranya yang menyebutkan berapa banyak karakter yang dihapus
MAX_MCP_OUTPUT_TOKENS di shell Anda sebelum memulai Claude Code:
Tingkatkan batas untuk tool tertentu
Jika Anda membangun server MCP, Anda dapat memungkinkan tool individual mengembalikan hasil yang lebih besar dari ambang batas persist-to-disk default sebesar 50.000 karakter dengan menetapkan_meta["anthropic/maxResultSizeChars"] dalam entri respons tools/list tool. Claude Code menaikkan ambang batas tool tersebut ke nilai yang dianotasi, hingga batas keras 500.000 karakter.
Ini berguna untuk tool yang mengembalikan output yang secara inheren besar tetapi diperlukan, seperti skema database atau pohon file lengkap. Tanpa anotasi, hasil yang berhasil yang melebihi ambang batas default disimpan ke disk dan diganti dengan referensi file dalam percakapan.
MAX_MCP_OUTPUT_TOKENS untuk konten teks, sehingga pengguna tidak perlu menaikkan environment variable untuk tool yang mendeklarasikannya. Tool yang mengembalikan data gambar masih tunduk pada batas token.
Gambar dalam hasil tool
Ketika tool MCP mengembalikan gambar PNG, JPEG, GIF, atau WebP, Claude melihat gambar secara inline dalam percakapan. Salinan inline mungkin diperkecil atau dikompres agar sesuai dengan batas ukuran gambar model. Claude Code juga menyimpan byte asli ke file di direktoritool-results sesi di bawah ~/.claude/projects/ dan memberikan Claude jalurnya. Claude kemudian dapat memotong, mengonversi, atau menggunakan kembali file resolusi penuh dengan tool seperti Bash.
Jika Anda menonaktifkan persistensi sesi dengan --no-session-persistence atau CLAUDE_CODE_SKIP_PROMPT_HISTORY, Claude Code tidak menulis file gambar dan Claude hanya menerima salinan inline.
Menyimpan hasil gambar MCP ke file memerlukan Claude Code v2.1.283 atau lebih baru.
Skema input tool dengan combinator tingkat root
Beberapa server MCP mendeklarasikan skema input tool sebagai union JSON Schema, dengananyOf, oneOf, atau allOf di tingkat atas skema. Claude API tidak menerima kata kunci tersebut di root skema. API menerima combinator yang bersarang di dalam properties, yang Claude Code kirimkan tanpa perubahan.
Tool dengan combinator tingkat root tetap tersedia. Sebelum mengirim tool ke API, Claude Code meratakan skema menjadi satu objek dan menambahkan kalimat di awal deskripsi tool yang memberi tahu Claude kelompok parameter mana yang termasuk bersama:
allOf: properti dari setiap cabang digabungkan, dan daftarrequiredsetiap cabang masih berlakuanyOfdanoneOf: properti dari setiap cabang digabungkan, dan daftarrequiredsetiap cabang dijelaskan dalam deskripsi tool alih-alih diterapkan oleh skema
Tools dengan skema input yang tidak valid
- Nama properti tingkat atas harus panjangnya 1 hingga 64 karakter dan hanya menggunakan huruf ASCII dan angka,
_,., dan- - Skema harus valid terhadap meta-skema JSON Schema draft 2020-12. Claude Code menerapkan pemeriksaan ini pada skema yang tidak mendeklarasikan
$schemadan skema yang mendeklarasikan draft 2020-12. Skema yang mendeklarasikan dialek lain melewati pemeriksaan ini, meskipun pemeriksaan nama properti di atas tetap berlaku
- Claude menerima tool tanpa perubahan, dan log server mencatat
input schema would be rejected by the Anthropic APIuntuk tool tersebut - Jika API kemudian menolak skema tersebut, lihat Tools yang skema inputnya ditolak API
Tools yang skema inputnya ditolak API
Jika sebuah baris dalam log debug berisithe API refused this tool's input schema, baris tersebut menamai tool yang skemanya ditolak API dalam sebuah permintaan. Claude Code mengirim ulang permintaan tersebut dengan tool dideklarasikan tanpa parameter.
- Jika sesi Anda gagal dengan kesalahan 400 yang menamai tool berdasarkan posisinya: ikuti langkah-langkah di Tool input schema is invalid
- Jika Anda menggunakan server tersebut: Anda tidak perlu melakukan apa pun. Claude tetap dapat memanggil tool tersebut, tetapi tidak melihat parameternya
- Jika Anda memelihara server tersebut: perbaiki skema input tool di server. Baris log diakhiri dengan
The API said:dan alasan API menolak skema tersebut. Validasi argumen yang diterima server, karena Claude memanggil tool tanpa melihat parameternya
Tool dengan nama lebih dari 128 karakter
Jika/mcp mencantumkan tool yang tidak dapat dipanggil oleh Claude, periksa apakah nama lengkap tool tersebut lebih dari 128 karakter. Jalankan /mcp di sesi Anda dan pilih tool tersebut untuk melihat nama lengkapnya, seperti mcp__<server>__<tool>. Claude Code tidak menyertakan tool MCP dalam daftar tool yang dikirimkannya ke Claude jika nama lengkapnya lebih dari 128 karakter. Claude API menolak permintaan yang menyertakan tool semacam itu, sehingga dengan tidak menyertakan tool tersebut, tool lain dari server tetap berfungsi.
Untuk pesan yang menyebutkan nama tool tersebut dan cara memperpendek nama lengkapnya, lihat Nama tool MCP lebih dari 128 karakter.
Memerlukan persetujuan untuk tool tertentu
Jika Anda membangun server MCP, Anda dapat menandai tool sebagai memerlukan persetujuan eksplisit pada setiap panggilan dengan menetapkan_meta["anthropic/requiresUserInteraction"] ke true dalam entri respons tools/list tool tersebut. Nilainya harus berupa boolean JSON true; nilai lainnya diabaikan.
Claude Code menampilkan dialog izin tool tersebut pada setiap panggilan, bahkan dalam mode izin acceptEdits, auto, dan bypassPermissions, dan tidak menawarkan opsi “jangan tanya lagi” untuk tool tersebut. Aturan Allow yang cocok dengan tool juga tidak melewati dialog izin. Dalam mode dontAsk, yang tidak pernah menampilkan dialog izin, Claude Code menolak panggilan sebagai gantinya.
Dialog izin harus sampai ke seseorang. Dalam mode non-interaktif dengan --permission-prompt-tool, hasil allow dari tool prompt untuk tool yang ditandai dikonversi menjadi penolakan dengan pesan MCP tool requires user interaction; not supported via --permission-prompt-tool. Callback canUseTool dari Agent SDK memang menerima panggilan ini dan dapat menyetujuinya, karena aplikasi SDK Anda diharapkan menampilkannya kepada pengguna.
Gunakan ini untuk tool yang dialog izinnya sendiri adalah intinya, seperti langkah persetujuan atau pemberian akses di mana persetujuan otomatis berarti tidak ada manusia yang pernah setuju. Tool lain dari server yang sama mempertahankan perilaku izin normal mereka.
Entri tools/list berikut menandai satu tool sebagai selalu memerlukan persetujuan.
Tandai tool yang aman dipanggil dua kali
Jika Anda membangun server MCP, tandai tool yang aman dipanggil dua kali agar Claude Code dapat mengulangi panggilan yang masih tertunda saat koneksi tertutup. Claude Code dapat mengulangi panggilan semacam itu ke server HTTP atau konektor claude.ai satu kali, melalui koneksi baru. Panggilan yang tidak diulangi oleh Claude Code dapat gagal denganconnection closed before the tool call was answered.
Untuk menandai tool, atur salah satu annotations berikut ke true pada entri tools/list-nya:
idempotentHint: tool dapat mengubah sesuatu, dan memanggilnya lagi dengan argumen yang sama aman dilakukanreadOnlyHint: tool tidak mengubah apa pun. Claude Code juga menjalankan panggilan tool tersebut secara paralel dengan panggilan read-only lainnya.
tools/list menandai tool set_issue_status sebagai aman untuk diulang:
Merespons permintaan elicitation MCP
Server MCP dapat meminta input terstruktur dari Anda di tengah tugas menggunakan elicitation. Ketika server membutuhkan informasi yang tidak dapat diperolehnya sendiri, Claude Code menampilkan dialog interaktif dan meneruskan respons Anda kembali ke server. Tidak ada konfigurasi yang diperlukan di pihak Anda: dialog elicitation muncul secara otomatis ketika server memintanya. Server dapat meminta input dengan dua cara:- Form mode: Claude Code menampilkan dialog dengan bidang formulir yang ditentukan oleh server (misalnya, prompt nama pengguna dan kata sandi). Isi bidang dan kirimkan.
- URL mode: Claude Code menanyakan apakah akan membuka tautan di browser Anda. Server menggunakan mode ini untuk alur yang selesai di luar terminal, seperti sign-in.
% atau &, dihitung empat kali terhadap batas: karakternya sendiri ditambah tiga karakter lolos. URL tanpa karakter tersebut mencapai batas pada sekitar 8.000 karakter. URL yang dibangun sebagian besar dari percent-escapes, di mana setiap karakter ketiga adalah %, mencapainya pada kira-kira 4.000.
Untuk merespons otomatis permintaan elicitation tanpa menampilkan dialog, gunakan hook Elicitation.
Jika Anda membangun server MCP yang menggunakan elicitation, lihat spesifikasi elicitation MCP untuk detail protokol dan contoh skema.
Mode elicitation yang dideklarasikan Claude Code
Jika Anda membangun server MCP, kemampuan klien yang dikirim Claude Code saat terhubung memberi tahu server Anda mode elicitation mana yang dapat dimintanya. Claude Code mendeklarasikanelicitation: {form: {}, url: {}} pada koneksi berikut, sehingga server di koneksi mana pun dari koneksi tersebut dapat meminta kedua mode:
- Koneksi yang menggunakan revisi protokol 2026-07-28
- Koneksi pada revisi protokol sebelumnya, 2025-11-25 dan yang lebih lama, ke server stdio,
sse,http, danwsdalam konfigurasi MCP Claude Code milik pengguna. Memerlukan Claude Code v2.1.287 atau yang lebih baru
elicitation: {} polos, yang hanya mengizinkan permintaan elicitation dalam form mode.
Server yang dibangun di atas Java MCP SDK 0.17.0 atau yang lebih lama dapat menolak deklarasi yang berisi form dan url. Lihat MCP server rejected the elicitation capability.
Gunakan sumber daya MCP
Server MCP dapat mengekspos sumber daya yang dapat Anda referensikan menggunakan penyebutan @, mirip dengan cara Anda mereferensikan file.Referensikan sumber daya MCP
Daftar sumber daya yang tersedia
@ dalam prompt Anda untuk melihat sumber daya yang tersedia dari semua server MCP yang terhubung. Sumber daya muncul bersama file dalam menu pelengkapan otomatis.Referensikan sumber daya tertentu
@server:protocol://resource/path untuk mereferensikan sumber daya:Referensi sumber daya ganda
ui:// atau tipe media text/html;profile=mcp-app: halaman untuk aplikasi host yang akan dirender daripada konten untuk Claude dibaca. Mereka tidak muncul dalam saran @ atau dalam hasil alat daftar sumber daya, dan server yang hanya menawarkan sumber daya UI menunjukkan daftar sumber daya kosong. Membaca sumber daya UI berdasarkan URI-nya masih berfungsi.
Skalakan dengan pencarian tool MCP
Pencarian tool menjaga penggunaan konteks MCP tetap rendah dengan menunda definisi tool hingga Claude membutuhkannya. Hanya nama tool dan instruksi server yang dimuat saat awal sesi, jadi menambahkan lebih banyak server MCP memiliki dampak minimal pada context window Anda. Claude Code tidak memberlakukan batas tool tetap per-server; batas praktisnya adalah anggaran context window Anda.ENABLE_TOOL_SEARCH tidak dapat menimpa ini, karena penolakan berasal dari deployment itu sendiri.Pencarian tool untuk penulis server MCP
Jika Anda membangun server MCP, bidang instruksi server menjadi lebih berguna dengan pencarian tool diaktifkan. Instruksi server membantu Claude memahami kapan harus mencari tool Anda, mirip dengan cara skills bekerja. Tambahkan instruksi server yang jelas dan deskriptif yang menjelaskan:- Kategori tugas apa yang ditangani tool Anda
- Kapan Claude harus mencari tool Anda
- Kemampuan utama yang disediakan server Anda
- Instruksi server, dan deskripsi tool yang dimuat di awal: 4.096 karakter
- Deskripsi tool yang dimuat Claude melalui pencarian tool: 16.384 karakter
Ubah batas panjang deskripsi
Untuk mengubah batas default sebesar 4.096 dan 16.384 karakter untuk server MCP dalam sesi Anda, aturCLAUDE_CODE_MAX_MCP_DESCRIPTION_LENGTH ke sejumlah karakter. Claude Code menggunakan angka tersebut untuk kedua batas. Dengan 8192, misalnya, Anda menaikkan batas 4.096 karakter pada instruksi server dan deskripsi tool yang dimuat di awal, serta menurunkan batas 16.384 karakter pada deskripsi tool yang dimuat melalui pencarian tool. Variabel ini memerlukan Claude Code v2.1.280 atau lebih baru.
Deskripsi dan instruksi dari beberapa server MCP yang dihosting Anthropic di api.anthropic.com sampai ke Claude secara utuh, dan mengatur variabel ini tidak memotongnya.
Tandai tool agar dimuat di awal atau tetap ditunda
Untuk mengontrol cara salah satu tool server Anda dimuat, atur"anthropic/alwaysLoad" dalam objek _meta tool tersebut. Orang yang menambahkan server Anda ke Claude Code juga dapat mengatur alwaysLoad untuk seluruh server dalam konfigurasi mereka, dan pengaturan mereka dapat menimpa pengaturan Anda:
tools/list berikut meminta satu tool untuk dimuat di awal:
Konfigurasi pencarian tool
Pencarian tool diaktifkan secara default: tool MCP ditunda dan ditemukan sesuai permintaan. MengaturCLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS menjaga pencarian tool tetap mati. Anda tidak dapat menimpanya dengan mengatur ENABLE_TOOL_SEARCH sendiri. Pada Claude Code v2.1.227 atau lebih baru, organisasi Anda dapat menjaga pencarian tool tetap aktif di bawah variabel ini melalui pengaturan terkelola. Dalam sesi yang mendapatkan konfigurasi HIPAA, pencarian tool dimatikan, dan baik ENABLE_TOOL_SEARCH maupun pengaturan terkelola tidak dapat mengaktifkannya kembali. Nonaktifkan kemampuan pra-rilis mencakup tempat override berlaku dan apa yang dihapus variabel.
Claude Code menggunakan pencarian tool pada Claude Opus 4, Claude Sonnet 4, Claude Haiku 4.5, dan model yang lebih baru, atau Opus 4.5, Sonnet 4.5, Haiku 4.5, dan model yang lebih baru di Agent Platform Google Cloud. Pada model yang lebih awal, Claude Code memuat semua tool MCP di awal, dan ENABLE_TOOL_SEARCH=true tidak menimpa ini.
Di Agent Platform Google Cloud, Claude Code memutuskan berdasarkan generasi model:
- Claude Opus 4.5, Sonnet 4.5, Haiku 4.5, dan yang lebih baru: pencarian tool aktif secara default, sama seperti di Anthropic API.
- Model Agent Platform sebelumnya: Claude Code memuat semua tool MCP di awal, karena stack penyajian mereka menolak header beta yang diperlukan.
ENABLE_TOOL_SEARCH=truetidak menimpa ini.
ENABLE_TOOL_SEARCH=true.
Kontrol perilaku pencarian tool dengan environment variable ENABLE_TOOL_SEARCH:
env settings.json Anda.
Anda juga dapat menonaktifkan tool ToolSearch secara khusus:
ToolSearch atau tidak menyertakannya dalam --tools, tool MCP akan dimuat di awal, tetapi permintaan masih dapat membawa entri defer_loading placeholder. Jika gateway menolak entri tersebut, lihat Pencarian tool melalui LLM gateway.
Pencarian tool melalui LLM gateway
- Anda telah mengatur
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS: lihat bagaimana pengaruhnya terhadap pencarian tool - Permintaan gagal dengan error yang menyebut
defer_loadingatautool_reference: lihat Extra inputs are not permitted
ANTHROPIC_BASE_URL menunjuk ke gateway, pencarian tool aktif secara default, sehingga permintaan menyertakan bidang tool defer_loading dan blok tool_reference untuk diteruskan oleh gateway. Selama pencarian tool aktif, tool MCP ditunda. Untuk memuat setiap tool di awal, atur ENABLE_TOOL_SEARCH=false di shell Anda atau di env pengaturan Anda. Sebelum v2.1.304, pencarian tool dimatikan di belakang gateway kecuali ENABLE_TOOL_SEARCH bernilai true, auto, atau auto:N.
Pada v2.1.305 atau lebih baru, Claude Code dapat mencoba ulang permintaan tanpa pencarian tool setelah 400 atau 422 yang penyebabnya tidak dikenalinya. Ketika retry berhasil, tidak ada yang ditampilkan di layar dan Anda tidak perlu melakukan apa pun: tool MCP dimuat di awal sebagai gantinya. Claude Code mencoba pencarian tool lagi nanti, dengan konsekuensi satu permintaan lain yang ditolak. Untuk melewati permintaan tersebut, atur ENABLE_TOOL_SEARCH=false.
Tool yang tetap ditunda di bawah ambang ENABLE_TOOL_SEARCH=auto
Jika /context memberi label (deferred) atau (loaded on-demand) pada tool meskipun total definisinya berada di bawah ambang auto, pencarian tool sudah aktif dalam percakapan ini dan tetap aktif. Totalnya dapat turun kemudian, misalnya saat server MCP terhubung kembali setelah Anda melanjutkan sesi. Anda tidak perlu melakukan apa pun: Claude memuat setiap tool tersebut ketika suatu tugas membutuhkannya.
Bebaskan server dari penundaan
Jika tool server harus selalu terlihat oleh Claude tanpa langkah pencarian, aturalwaysLoad ke true dalam konfigurasi server tersebut. Tool dari server tersebut kemudian dimuat ke dalam konteks terlepas dari pengaturan ENABLE_TOOL_SEARCH. Gunakan ini untuk sejumlah kecil tool yang Claude butuhkan di setiap giliran, karena setiap tool di awal mengonsumsi konteks yang akan tersedia untuk percakapan Anda.
Entri .mcp.json berikut membebaskan satu server HTTP sambil membiarkan server lain ditunda:
alwaysLoad tersedia di semua jenis server.
Mengatur alwaysLoad: true juga membuat startup menunggu tool server, dibatasi pada timeout koneksi standar 5 detik, karena mereka harus ada ketika prompt pertama dibangun. Server jarak jauh dengan entri cached yang valid menyediakan tool-nya dari cache tanpa terhubung, jadi tidak menahan startup. Server lain terhubung di latar belakang secara default; atur MCP_CONNECTION_NONBLOCKING=0 untuk membuat startup menunggu mereka juga.
Tunda tool server
Untuk menyimpan semua tool server di balik pencarian tool, atur"alwaysLoad": false dalam entri server tersebut di konfigurasi MCP Anda. Itu mencakup tool yang telah ditandai untuk dimuat di awal oleh penulis server. Jika Anda tidak menyertakan alwaysLoad, tool yang ditandai tersebut dimuat di awal. Memerlukan Claude Code v2.1.287 atau lebih baru.
Gunakan MCP prompts sebagai perintah
Server MCP dapat mengekspos prompts yang menjadi tersedia sebagai perintah di Claude Code. Prompts dari server bernamaanthropic-skills tidak muncul, karena Claude Code mereservasi nama tersebut untuk skills yang disinkronkan dari claude.ai. Tools server masih berfungsi. Ubah nama server di konfigurasi MCP Anda untuk menampilkan promptsnya.
Jalankan MCP prompts
Temukan prompts yang tersedia
/ untuk melihat perintah yang tersedia untuk Anda, termasuk yang dari server MCP. Claude Code mencantumkan setiap MCP prompt sebagai /servername:promptname (MCP). Mengetik /mcp__servername__promptname juga menjalankannya.Jalankan prompt tanpa argumen
Jalankan prompt dengan argumen
Konfigurasi MCP yang dikelola
Untuk organisasi yang memerlukan kontrol terpusat atas server MCP mana yang dapat dihubungkan pengguna, lihat Konfigurasi MCP yang dikelola. Ini mencakup penerapan set server tetap denganmanaged-mcp.json, menyediakan server kepada setiap pengguna dengan managedMcpServers, membatasi server dengan allowedMcpServers dan deniedMcpServers, dan apa yang dilihat pengguna ketika server diblokir.