Langsung ke konten utama
Claude Code dapat terhubung ke ratusan alat eksternal dan sumber data melalui Model Context Protocol (MCP), standar sumber terbuka untuk integrasi AI-alat. Server MCP memberikan Claude Code akses ke alat, database, dan API Anda. Hubungkan server ketika Anda menemukan diri Anda menyalin data ke dalam chat dari alat lain, seperti pelacak masalah atau dasbor pemantauan. Setelah terhubung, Claude dapat membaca dan bertindak pada sistem tersebut secara langsung alih-alih bekerja dari apa yang Anda tempel. Jika Anda menghubungkan server pertama Anda, mulai dengan panduan cepat MCP untuk panduan langkah demi langkah. Halaman ini adalah referensi lengkap.

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 dengan claude mcp add.
Verifikasi bahwa Anda mempercayai setiap server sebelum menghubungkannya. Server yang mengambil konten eksternal dapat mengekspos Anda ke risiko injeksi prompt.
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.
1

Instal plugin

Di ekstensi VS Code atau aplikasi desktop, ikuti Instal plugin alih-alih langkah ini. Di terminal, mulai Claude Code dengan menjalankan claude, lalu masukkan ini di prompt-nya:
Jika instalasi gagal, cocokkan pesan yang dilaporkan Claude Code:
  • 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.
Jika ringkasan instalasi melaporkan 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.
2

Jalankan skill build

Claude menanyakan tentang kasus penggunaan Anda dan membangun server HTTP jarak jauh atau server stdio lokal.

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.
Saat mengonfigurasi server MCP melalui JSON di .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.
Dalam eksekusi --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

Transport SSE (Server-Sent Events) sudah deprecated. Gunakan server HTTP sebagai gantinya, jika tersedia.
Beberapa layanan masih hanya menyediakan endpoint SSE. Tambahkan layanan tersebut dengan perintah claude 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 menetapkan CLAUDE_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.
Untuk server stdio, -- (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 → menjalankan npx server
  • claude mcp add --env KEY=value --transport stdio myserver -- python server.py --port 8080 → menjalankan python server.py --port 8080 dengan KEY=value di lingkungan
Tanpa --, 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, lalu SIGTERM jika proses masih berjalan 100 milidetik kemudian, lalu SIGKILL setelah 400 milidetik berikutnya.
  • Di Windows: Claude Code menutup stdin server, lalu mengakhiri pohon proses server jika proses masih berjalan 300 milidetik kemudian.
Sebelum v2.1.296, Claude Code di Windows langsung mengakhiri pohon proses server, tanpa menutup stdin terlebih dahulu atau menunggu.

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 flag claude mcp add --transport, sedangkan WebSocket tidak mendukung keduanya. Konfigurasikan server WebSocket di .mcp.json atau dengan claude mcp add-json:
Entri 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 perintah claude 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.
Masing-masing merupakan salah satu input yang diterima keempat opsi di Menginstal server MCP. Temukan bentuk yang Anda miliki di bawah ini untuk mengubahnya menjadi perintah yang diterima Claude Code. Setiap perintah menulis ke cakupan lokal kecuali Anda menambahkan --scope project atau --scope user.

Menambahkan server dari URL

URL berarti server tersebut adalah server jarak jauh. Untuk endpoint https://, 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:
Jika instruksi juga memberikan kunci API atau header token, berikan dengan --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 --:
Opsi 3 membahas pemisah -- 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:
  • url tanpa type: tambahkan "type": "http", "type": "sse", atau "type": "ws" sesuai endpoint. Claude Code membaca entri tanpa type sebagai server stdio, sehingga entri url tanpa type akan 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.
Misalnya, blok ini:
menjadi perintah ini:
Menambahkan server MCP dari konfigurasi JSON membahas escaping shell dan flag --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:
Saat Anda menghapus server jarak jauh, Claude Code juga menghapus token OAuth dan registrasi klien yang disimpannya untuk server tersebut. Claude Code tidak mencabut token di server otorisasi yang menerbitkannya. Untuk mencabut token jika server otorisasi mendukung pencabutan, jalankan 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.json yang belum Anda setujui. Claude Code menampilkannya di claude mcp list dan claude mcp get <name>. Jalankan claude secara interaktif untuk meninjau dan menyetujuinya.
  • ✘ Rejected (see disabledMcpjsonServers in settings): server .mcp.json yang ditolak oleh entri disabledMcpjsonServers. Claude Code hanya menampilkannya di claude mcp get <name>.
  • ⊘ Disabled for this project (re-enable via /mcp): server yang disebutkan dalam daftar disabledMcpServers proyek. Claude Code menampilkannya di claude mcp list maupun claude 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 di claude mcp list dan claude 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.json pengguna Anda
  • pengaturan terkelola
  • pengaturan yang diberikan dengan --settings
Claude Code juga menerapkan persetujuan dari .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.
Server jarak jauh yang konfigurasinya memiliki 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 entri args, serta nilai dan nama kunci di bawah env dan headers. Claude Code menampilkan peringatan di output claude mcp list dan di /mcp, dengan menyebutkan field yang terpengaruh tanpa menampilkan nilainya, misalnya Leading 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 list dan 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 dengan claude 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, dan Claude 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 add menolak nama yang dicadangkan dengan kesalahan. Claude Preview dan Claude Browser keduanya 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 output claude mcp list dan di /mcp, dengan menyebutkan variabel tersebut, dan tetap memuat server dengan teks ${VAR} yang tidak diekspansi. Tetapkan variabel tersebut atau tambahkan fallback ${VAR:-default}. Di url dan headers server 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 WaitForMcpServers sebagai gantinya. Konfigurasi tanpa tool search mencakup ENABLE_TOOL_SEARCH=false dan model yang lebih lama dari Claude Opus 4.5, Claude Sonnet 4.5, dan Claude Haiku 4.5 di Agent Platform Google Cloud. Untuk gateway ANTHROPIC_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.
Dengan tool search diaktifkan, ketika server selesai terhubung saat Claude sedang bekerja, Claude Code mencantumkan nama-nama tool server tersebut kepada Claude pada permintaan berikutnya dalam giliran yang sama. Claude kemudian dapat mencari dan memanggil tool tersebut tanpa menunggu pesan Anda berikutnya. Setelah Anda melanjutkan sesi, Claude dapat memanggil tool dari percakapan yang tersimpan saat server MCP tool tersebut masih dalam proses terhubung. Selama server berada pada upaya koneksi pertamanya, Claude Code menahan panggilan tersebut hingga 10 detik dan menjalankannya begitu tool tersedia. Jika server tidak terhubung tepat waktu, atau server tersebut sudah mencoba ulang setelah upaya yang gagal, panggilan gagal dengan kesalahan tool 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 /mcp per proyek yang dijelaskan di Menonaktifkan konektor claude.ai, Claude Code menuliskannya ke daftar ini dengan nama tampilannya, misalnya claude.ai Slack.
  • enabledMcpServers: daftar opt-in untuk server bawaan yang nonaktif secara default, seperti computer-use. Claude Code hanya terhubung ke server yang nonaktif secara default ketika Anda mencantumkannya di sini.
Claude Code hanya merujuk tepat satu dari kedua daftar untuk setiap server, sehingga tidak ada daftar yang menimpa daftar lainnya. Jika Anda menambahkan server biasa ke 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
Pada v2, Claude Code juga:
  • 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_changed dari 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 adalah http:// biasa di tempat lain, seperti perangkat di jaringan lokal Anda. Lihat Refusing to send credentials to non-https token endpoint.
Anthropic dapat mempertahankan server tertentu pada protokol sebelumnya, atau di luar stream tersebut, dengan feature flag yang diambil Claude Code. Untuk memilih runtime sendiri, tetapkan 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 notifikasi list_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 -p dan di Agent SDK, Claude Code hanya memperbarui daftar tool pada notifikasi ini.
Jika permintaan pembaruan gagal, Claude Code mempertahankan tool, prompt, dan resource server yang ditemukan sebelumnya hingga pembaruan berikutnya berhasil.

Stream notifikasi pada runtime v2

Pada runtime v2, Claude Code menerima notifikasi list_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.
Hingga stream dibuka kembali, Anda tetap memiliki tool, prompt, dan resource server yang terakhir diambil. Untuk mendapatkan perubahannya lebih cepat, hubungkan ulang server dari /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: /mcp menampilkan 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 notifikasi MCP server "<name>" disconnected · open /mcp to reconnect. Anda dapat mencoba ulang secara manual dari /mcp.
  • Dalam eksekusi claude -p dan sesi Agent SDK: Claude Code melakukan lima upaya yang sama, tanpa panel /mcp untuk 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 di claude -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 dengan claude mcp login <name> di shell Anda. Kemudian mulai eksekusi lagi atau, dalam sesi Agent SDK, hubungkan ulang server sebagai gantinya.

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 headersHelper adalah satu-satunya sumber header Authorization server, 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, eksekusi claude -p, atau sesi Agent SDK.

Permintaan penemuan yang gagal

Setelah server terhubung, Claude Code mengirimkan permintaan penemuan kapabilitas seperti tools/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 ToolSearch yang 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 kapabilitas claude/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.
Tips:
  • Gunakan flag -s atau --scope untuk menentukan tempat konfigurasi disimpan:
    • local (default): hanya tersedia untuk Anda di proyek saat ini
    • project: dibagikan dengan semua orang di proyek melalui file .mcp.json
    • user: tersedia untuk Anda di semua proyek
  • Tetapkan environment variable dengan flag -e atau --env (misalnya, -e KEY=value)
  • Flag --transport dan --header juga menerima bentuk singkat -t dan -H
  • Konfigurasikan timeout startup server MCP menggunakan environment variable MCP_TIMEOUT (misalnya, MCP_TIMEOUT=10000 claude menetapkan timeout 10 detik)
  • Tetapkan timeout eksekusi tool per server dengan menambahkan field timeout dalam milidetik ke entri .mcp.json server tersebut, misalnya "timeout": 600000 untuk sepuluh menit. Ini menimpa environment variable MCP_TOOL_TIMEOUT hanya untuk server tersebut
  • Claude Code menampilkan peringatan ketika output tool MCP melebihi 10.000 token dan membatasi output hingga 25.000 token secara default. Untuk mengubah batas token, tetapkan environment variable MAX_MCP_OUTPUT_TOKENS, misalnya MAX_MCP_OUTPUT_TOKENS=50000. Ambang peringatan bersifat tetap. Kecuali server menaikkan batas milik tool itu sendiri, hasil teks yang berhasil dan lebih panjang dari 50.000 karakter disimpan ke file terlepas dari variabel ini. Lihat Batas output dan peringatan MCP
  • Gunakan /mcp untuk mengautentikasi dengan server jarak jauh yang memerlukan autentikasi OAuth 2.0

Batas waktu pada panggilan tool MCP

Untuk membatasi berapa lama panggilan tool MCP dapat berjalan:
  • Per server: tambahkan field timeout dalam 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: Beberapa panggilan tidak pernah dipindahkan ke 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_TASKS ditetapkan ke 1, karena eksekusi sekali jalan dapat berakhir sebelum hasilnya tiba
Panggilan yang menunggu dialog elisitasi yang terbuka tidak dipindahkan ke latar belakang selama dialog terbuka; server terblokir menunggu input Anda, bukan lambat, sehingga Claude Code menunda pemindahan hingga dialog ditutup.

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 seperti 1 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.
Tugas MCP berada dalam beta publik di Claude Code CLI dan memerlukan Claude Code v2.1.304 atau yang lebih baru. Yang diperlukan agar panggilan menjadi tugas MCP mencantumkan sesi dan server yang mendapatkannya.

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:
Hasilnya dikirim ke Claude, bukan ke transkrip, jadi mintalah hasilnya kepada Claude. Jika Claude sedang idle saat hasil tiba, Claude mulai mengerjakannya tanpa diminta.

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 menampilkan runs 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: Panggilan lainnya adalah panggilan tool biasa, dan Pemindahan otomatis panggilan tool yang panjang ke latar belakang menjelaskan panggilan mana yang dipindahkan ke latar belakang. Biarkan input sesi Agent SDK atau stream-json tetap terbuka, karena eksekusi tidak menunggu tugas MCP setelah input ditutup. Eksekusi sekali jalan 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 blok env pada settings.json: Saat Claude menunggu, menekan 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:
settings.json

Tugas MCP untuk pembuat server

Jika Anda membangun server MCP, Anda dapat menjawab tools/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 tool Unsupported 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:
Pada server HTTP atau konektor claude.ai, jawaban tugas harus dimulai dalam timer per permintaan, jadi terima pekerjaan dan jawab terlebih dahulu, lalu lakukan pekerjaannya.

Melaporkan status, hasil, dan pertanyaan

Tepat setelah jawaban tugas, Claude Code mengirim tasks/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.json pada root plugin atau secara inline di plugin.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
Contoh konfigurasi MCP plugin: Di .mcp.json pada root plugin:
Atau secara inline di plugin.json:
Fitur MCP plugin:
  • 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 status cached sebagai 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-plugins tidak 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 /cd pada 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-plugins setelah 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
  • 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, dan ws: url, headers, dan headersHelper
  • 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
Server plugin muncul di /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, baris Args: kosong, dan setiap environment variable sebagai NAME=[REDACTED]
  • Server WebSocket: mencetak URL: ws dan setiap header sebagai <name>: [REDACTED], dan claude mcp list menampilkan ws sebagai pengganti URL
Untuk melihat apa yang dikonfigurasi plugin, temukan plugin di disk dan baca .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:
Gunakan nama lengkap ini saat mereferensikan tool dalam aturan izin, daftar 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.
Istilah “cakupan lokal” untuk server MCP berbeda dari pengaturan lokal umum. Server MCP dengan cakupan lokal disimpan dalam ~/.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.
Perintah menulis server ke dalam entri untuk proyek saat ini di dalam ~/.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.
File .mcp.json yang dihasilkan mengikuti format standar:
Untuk alasan keamanan, Claude Code meminta persetujuan dalam sesi interaktif sebelum menggunakan server dengan cakupan proyek dari file .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-sources atau opsi settingSources SDK.
  • 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.
Persetujuan server proyek dan kepercayaan workspace mencakup bagaimana persetujuan yang dikomitkan ke repositori berinteraksi dengan kepercayaan workspace.

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.
  1. Cakupan lokal
  2. Cakupan proyek
  3. Cakupan pengguna
  4. Server yang disediakan plugin
  5. Konektor claude.ai
Claude Code mencocokkan duplikat di seluruh tiga cakupan berdasarkan nama. Plugin dan konektor mencocokkan berdasarkan endpoint, jadi yang menunjuk ke URL atau perintah yang sama dengan server di atas diperlakukan sebagai duplikat. Dua ejaan URL dihitung sebagai endpoint yang sama ketika mereka berbeda hanya dalam huruf besar-kecil skema atau host, port default skema, seperti :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 lingkungan VAR
  • ${VAR:-default}: diperluas menjadi nilai VAR jika VAR diatur, atau menjadi default jika tidak diatur

Contoh dengan ekspansi variabel

Dalam entri server ini, URL adalah nilai API_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 output claude 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

Dalam url 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_KEY dan ANTHROPIC_AUTH_TOKEN
  • Kredensial penyedia cloud Anda, seperti AWS_BEARER_TOKEN_BEDROCK
  • Kredensial lain yang dibawa lingkungan Anda, seperti HTTPS_PROXY dan NPM_TOKEN
Nama yang tercakup dibaca sebagai kosong apakah pun Anda telah menetapkan variabel, dan fallback :-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 /mcp server
  • Output claude mcp list dan claude mcp get
Tampilan detail /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:
Ganti 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:
Untuk mengonfirmasi server dimulai, jalankan /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 dengan 401 Unauthorized atau 403 Forbidden. Apa yang Claude Code tampilkan tergantung pada server:
  • Untuk server yang belum Anda masuki, salah satu kode status menandainya di /mcp sehingga Anda dapat menyelesaikan alur OAuth.
  • Untuk konektor claude.ai, 401 yang 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 Authorization Anda konfigurasi, di headers atau melalui headersHelper, 401 atau 403 saat 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.
Ketika server OAuth yang sudah Anda masuki menolak token yang disimpan dengan 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.
1

Tambahkan server yang memerlukan autentikasi

Jika Anda sudah menambahkan server 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:
2

Gunakan perintah /mcp dalam Claude Code

Di Claude Code, gunakan perintah:
Kemudian ikuti langkah-langkah di browser Anda untuk masuk.
Tips:
  • Token autentikasi disimpan dengan aman dan disegarkan secara otomatis
  • Gunakan “Clear authentication” di menu /mcp untuk mencabut akses
  • Jika browser Anda tidak terbuka secara otomatis, salin URL yang disediakan dan buka secara manual
  • Jika pengalihan browser gagal dengan kesalahan koneksi setelah autentikasi, tempel URL callback lengkap dari bilah alamat browser Anda ke prompt URL yang muncul di Claude Code
  • Autentikasi OAuth bekerja dengan server HTTP

Autentikasi dari baris perintah

Perintah claude 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.
Untuk menghapus kredensial yang disimpan nanti, jalankan 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.
1

Daftarkan aplikasi OAuth dengan server

Buat aplikasi melalui portal pengembang server dan catat ID klien dan rahasia klien Anda.Jika formulir pendaftaran meminta URI pengalihan, pilih port yang tersedia dan masukkan 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.
2

Tambahkan server dengan kredensial Anda

Tab mencakup kedua perintah: 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.
Gunakan --client-id untuk meneruskan ID klien aplikasi Anda. Flag --client-secret meminta rahasia dengan input bertopeng:
3

Autentikasi di Claude Code

Jalankan /mcp di Claude Code dan ikuti alur login browser.
Tips:
  • Rahasia klien disimpan dengan aman di keychain sistem Anda (macOS) atau file kredensial, bukan di konfigurasi Anda
  • Anda dapat menetapkan rahasia klien hanya ketika Anda menambahkan server. Ketika Anda autentikasi dengan claude mcp login atau dari /mcp, Claude Code menggunakan rahasia yang disimpan dan tidak meminta satu atau membaca MCP_CLIENT_SECRET
  • Untuk menambah atau mengubah rahasia nanti, hapus server dengan claude mcp remove <name>, kemudian tambahkan lagi dengan --client-secret dan --scope yang sama
  • Jika server menggunakan klien OAuth publik tanpa rahasia, gunakan hanya --client-id tanpa --client-secret
  • Flag ini hanya berlaku untuk transport HTTP dan SSE. Mereka tidak berpengaruh pada server stdio
  • Gunakan claude mcp get <name> untuk memverifikasi bahwa kredensial OAuth dikonfigurasi untuk server

Timpa penemuan metadata OAuth

Arahkan Claude Code ke URL metadata server otorisasi OAuth tertentu untuk melewati rantai penemuan default. Atur authServerMetadataUrl 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:
URL harus menggunakan https://. scopes_supported URL metadata menimpa scope yang diiklankan server hulu.

Batasi scope OAuth

Atur oauth.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, bidang headers, atau headersHelper, dengan nama yang dibaca proxy
  • Proses masuk OAuth: jangan sertakan Authorization dalam header yang dikonfigurasi, lalu masuk dengan claude mcp login <name> di shell Anda. Jika Anda mengonfigurasi header Authorization, 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, atur headersHelper server ke sebuah perintah. Claude Code menjalankannya saat menghubungkan dan menggabungkan outputnya ke dalam header yang dikirimnya. Contoh ini menggunakan skrip:
Perintah juga dapat inline:
Persyaratan:
  • 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 headers statis apa pun dengan nama yang sama
Claude Code menjalankan helper segar pada setiap koneksi, pada awal sesi dan pada sambungan ulang, setelah aturan kepercayaan untuk server cakupan proyek dan lokal membiarkannya berjalan. Ini tidak menyimpan hasil dalam cache, jadi skrip Anda bertanggung jawab untuk penggunaan ulang token apa pun. Jika panggilan tool mengembalikan 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: Gunakan ini untuk menulis satu skrip helper yang melayani beberapa server MCP. 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 perintah headersHelper 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. Sebelum v2.1.238, Claude Code juga menjalankan helper dari server cakupan pengguna, terkelola, dan konektor claude.ai, dan file agent dari luar proyek Anda, dari direktori tempat Anda memulainya.

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.json proyek 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
Kecuali variabel 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 menjalankan headersHelper 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 -p atau SDK untuk hook di file pengaturan
  • Sampai Anda mempercayai folder: Claude Code menghubungkan server dengan headers statis saja. Dalam sesi claude -p atau SDK ini juga mencetak satu baris headersHelper not run per server ke stderr, memberi tahu Anda cara memberikan kepercayaan.
  • Kepercayaan tanpa dialog: atur projects["<path>"].hasTrustDialogAccepted ke true di ~/.claude.json. <path> adalah folder yang menurut Aturan izin proyek dan kepercayaan workspace menjadi kunci kepercayaan Claude Code.
Claude Code menerapkan aturan yang sama ke server yang dideklarasikan inline di file agent, memeriksa di mana file agent itu berasal: proyek Anda, untuk file di direktori .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, seperti X-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: Claude Code kemudian menambahkan header yang dikonfigurasi, kecuali 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:
1

Tambahkan server MCP dari JSON

2

Verifikasi server ditambahkan

Tips:
  • Pastikan JSON diloloskan dengan benar di shell Anda
  • JSON harus sesuai dengan skema konfigurasi server MCP
  • Anda dapat menggunakan --scope user untuk menambahkan server ke konfigurasi pengguna Anda alih-alih yang spesifik proyek

Impor server MCP dari Claude Desktop

Jika Anda telah mengonfigurasi server MCP di Claude Desktop, Anda dapat mengimpornya:
1

Impor server dari Claude Desktop

2

Pilih server mana yang akan diimpor

Setelah menjalankan perintah, Anda akan melihat dialog interaktif yang memungkinkan Anda memilih server mana yang ingin Anda impor.
3

Verifikasi server diimpor

Nama server yang ditambahkan melalui perintah 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.
Tips:
  • Fitur ini hanya bekerja di macOS dan Windows Subsystem for Linux (WSL)
  • Ini membaca file konfigurasi Claude Desktop dari lokasi standarnya di platform tersebut
  • Gunakan flag --scope user untuk menambahkan server ke konfigurasi pengguna Anda
  • Server yang diimpor mempertahankan nama yang sama seperti di Claude Desktop ketika nama hanya berisi huruf, angka, tanda hubung, dan garis bawah. Claude Code melaporkan server yang namanya berisi karakter lain dan melewatkannya
  • Jika server dengan nama yang sama sudah ada, mereka akan mendapatkan akhiran numerik (misalnya, server_1)

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:
1

Konfigurasi server MCP di claude.ai

Tambahkan server di claude.ai/customize/connectors. Pada paket Team dan Enterprise, hanya admin yang dapat menambahkan server.
2

Autentikasi server MCP

Selesaikan langkah-langkah autentikasi yang diperlukan di claude.ai.
3

Lihat dan kelola server di Claude Code

Di Claude Code, gunakan perintah:
Server dari claude.ai muncul dalam daftar dengan indikator yang menunjukkan bahwa mereka berasal dari claude.ai.
Anthropic juga menyediakan beberapa konektor itu sendiri, tanpa Anda atau admin menambahkannya. Pada akun tempat Claude Docs tersedia, /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, atau apiKeyHelper aktif
  • Penyedia pihak ketiga seperti Amazon Bedrock atau Agent Platform Google Cloud aktif
  • ANTHROPIC_PROFILE, variabel federasi, atau profil Anthropic aktif menyediakan kredensial
  • CLAUDE_CODE_OAUTH_TOKEN menyimpan token dari claude setup-token, yang hanya dapat membuat permintaan model
Jika /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:
  1. Jalankan /login untuk masuk lagi.
  2. Hubungkan kembali connector dari /mcp.
Sebelum v2.1.222, Claude Code menandai connector sebagai memerlukan autentikasi, dan mengotorisasi mereka tidak menyelesaikannya. Server yang telah Anda tambahkan di Claude Code mengambil precedence atas connector claude.ai yang menunjuk ke URL yang sama. Ketika ini terjadi, /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 allowedMcpServers dan deniedMcpServers yang mencapai sesi, misalnya melalui pengaturan yang dikelola server, juga memfilter connector yang dikirimkan. Proxy sesi menulis ulang URL setiap connector, jadi pola serverUrl yang ditulis untuk URL connector itu sendiri tidak cocok. Untuk mengakui connector yang dikirimkan bersama allowlist URL di lingkungan yang dihosting sendiri, tambahkan entri serverUrl yang tercantum di bawah Lalu lintas Connector meninggalkan jaringan Anda. Claude Code menghapus connector yang dikirimkan ketika managed-mcp.json ada di host yang menjalankan sesi, seperti host runner yang dihosting sendiri, terlepas dari apakah Anda menetapkan allowAllClaudeAiMcps.
  • Sesi lokal dan SSH aplikasi desktop: aplikasi desktop mendaftarkan connector sebagai server type: "sdk" dalam proses, dan tidak ada pengaturan MCP atau managed-mcp.json yang 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 alat blocked 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 alasan Your organization requires approval for this tool. Prompt muncul bahkan dalam mode izin acceptEdits, auto, dan bypassPermissions. Di terminal, prompt tidak memiliki opsi untuk mengingat pilihan Anda. Aturan Allow yang cocok dengan tool juga tidak melewati prompt. Dalam mode dontAsk, 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 /mcp masih menunjukkan alat, ditandai disabled by your organization.
Aplikasi desktop dan chat claude.ai menerapkan pengaturan 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 menerapkan disableClaudeAiConnectors 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:
Pengaturan ini menggunakan semantik any-source-true: 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:
Untuk memblokir connector claude.ai individual alih-alih semuanya, tambahkan mereka ke 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:
Perintah tidak mencetak apa pun saat dimulai. Server MCP stdio berkomunikasi melalui stdin dan stdout, jadi terminal yang diam dan terblokir berarti server sedang berjalan dan menunggu klien untuk terhubung. Anda dapat menggunakan ini di Claude Desktop dengan menambahkan konfigurasi ini ke claude_desktop_config.json:
Mengonfigurasi jalur executable: bidang command harus mereferensikan executable Claude Code. Jika perintah claude tidak ada di PATH sistem Anda, Anda perlu menentukan jalur lengkap ke executable.Untuk menemukan jalur lengkap:
Kemudian gunakan jalur lengkap dalam konfigurasi Anda:
Tanpa jalur executable yang benar, Anda akan mengalami kesalahan seperti spawn claude ENOENT.
Tips:
  • Di Claude Desktop, coba minta Claude untuk membaca file di direktori, membuat edit, dan lainnya.
  • Server MCP ini hanya mengekspos tools Claude Code ke klien MCP Anda, jadi klien Anda sendiri bertanggung jawab untuk mengimplementasikan konfirmasi pengguna untuk panggilan tool individual.

Membaca output perintah latar belakang sebagai klien MCP

Bidang backgroundOutputPath 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_path ke tool Read milik server
  • Untuk mengetahui kapan perintah telah selesai: tambahkan echo berisi string tetap ke nilai command, seperti npm 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: Read dengan hanya file_path mengembalikan halaman pertama, atau gagal ketika file melebihi batas ukuran. Berikan juga offset dan limit, yang berfungsi pada ukuran file berapa pun:
    1. Panggil Read dengan offset dan limit keduanya ditetapkan ke 1, lalu ambil totalLines dari hasilnya
    2. Panggil Read lagi dengan offset ditetapkan ke totalLines dikurangi sembilan dan limit ditetapkan ke 10
    3. Cari string echo Anda di sepuluh baris terakhir, yang dikembalikan oleh panggilan kedua
Bidang 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/maxResultSizeChars menggunakan nilai tersebut sebagai gantinya untuk konten teks, terlepas dari apa yang ditetapkan MAX_MCP_OUTPUT_TOKENS. Tool yang mengembalikan data gambar masih tunduk pada MAX_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-results sesi 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
Panggilan yang telah dipindahkan Claude Code ke tugas latar belakang melaporkan hasilnya melalui notifikasi tugas. Dua batas tambahan berlaku untuk panggilan yang selesai di latar depan:
  • 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. Menetapkan MAX_MCP_OUTPUT_TOKENS tidak 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
Untuk mengubah batas token, tetapkan 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.
Anotasi berlaku secara independen dari 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 direktori tool-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, dengan anyOf, 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 daftar required setiap cabang masih berlaku
  • anyOf dan oneOf: properti dari setiap cabang digabungkan, dan daftar required setiap cabang dijelaskan dalam deskripsi tool alih-alih diterapkan oleh skema
Server Anda menerima argumen apa pun yang dipilih Claude, jadi terus validasi kombinasi di sisi server. Ketika Claude Code tidak dapat menghasilkan skema yang diterima API, atau pada deployment yang tidak menerima konfigurasi jarak jauh yang mengaktifkan penulisan ulang, Claude Code melewati satu tool tersebut, mencatat alasannya dalam log server, dan membiarkan tool server lainnya tetap tersedia.

Tools dengan skema input yang tidak valid

Jika sesi Anda gagal dengan kesalahan 400 yang menamai tool berdasarkan posisinya, ikuti langkah-langkah di Tool input schema is invalid.
Jika salah satu tool server MCP Anda memiliki skema input yang melanggar salah satu dari dua aturan yang diberlakukan API, Claude Code mengecualikan tool tersebut. Tools lainnya di server tidak terpengaruh. Claude Code memeriksa kedua aturan tersebut saat memuat tools server:
  • 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 $schema dan skema yang mendeklarasikan draft 2020-12. Skema yang mendeklarasikan dialek lain melewati pemeriksaan ini, meskipun pemeriksaan nama properti di atas tetap berlaku
Ketika Claude Code mengecualikan tool, tool tersebut mencatat alasannya dalam log server dan memberi tahu Claude tools mana yang dikecualikan dan mengapa, sehingga Anda dapat menanyakan kepada Claude mengapa tool hilang. Jika Anda memperbaiki skema di server, tool akan kembali lagi saat Claude Code memuat tools server berikutnya. Ketika pengambilan feature flag dimatikan atau flag tidak pernah tiba, seperti pada mesin yang terisolasi udara, tool yang melanggar aturan tidak dikecualikan:
  • Claude menerima tool tanpa perubahan, dan log server mencatat input schema would be rejected by the Anthropic API untuk tool tersebut
  • Jika API kemudian menolak skema tersebut, lihat Tools yang skema inputnya ditolak API
Sebelum v2.1.216, tidak ada deployment yang menjalankan pemeriksaan ini. Penanganan combinator tingkat root terpisah dan mempertahankan perilakunya sendiri ketika pengambilan bendera dimatikan atau bendera tidak pernah tiba.

Tools yang skema inputnya ditolak API

Jika sebuah baris dalam log debug berisi the 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
Sebelum v2.1.300, setiap giliran yang menyertakan skema yang ditolak gagal dengan kesalahan 400 yang menamai tool berdasarkan posisinya.

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.
Beberapa surface, seperti Remote Control dan aplikasi yang dibangun di Agent SDK, biasanya memungkinkan Anda menyetujui panggilan tool dengan satu ketukan. Untuk tool yang ditandai dengan anotasi ini, Claude Code menahan tindakan satu ketukan dan menampilkan dialog izin lengkap tool tersebut sebagai gantinya, sehingga persetujuan tetap berasal dari seseorang yang menjawab dialog izin, bukan dari sebuah ketukan. Claude Code menahan persetujuan satu ketukan dengan cara yang sama untuk permintaan izin apa pun yang hanya dapat dirender sepenuhnya oleh dialog terminal, seperti permintaan yang membawa peringatan keamanan atau opsi selalu-izinkan yang tidak dapat ditampilkan oleh surface jarak jauh. Anda menjawab permintaan itu di dialog terminal, bukan dari Remote Control.

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 dengan connection 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 dilakukan
  • readOnlyHint: tool tidak mengubah apa pun. Claude Code juga menjalankan panggilan tool tersebut secara paralel dengan panggilan read-only lainnya.
Sebagai contoh, field berikut dalam entri 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.
Dalam URL mode, Claude Code meneruskan URL sebagai argumen baris perintah ke penanganan URL sistem Anda, dan membatasi seberapa lama argumen tersebut dapat diterima. Ketika URL, setelah diloloskan untuk baris perintah, melampaui batas tersebut, Anda hanya dapat menolak permintaan. Setiap karakter yang perlu diloloskan, seperti % 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 mendeklarasikan elicitation: {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, dan ws dalam konfigurasi MCP Claude Code milik pengguna. Memerlukan Claude Code v2.1.287 atau yang lebih baru
Pada koneksi lainnya di revisi sebelumnya, seperti ke konektor claude.ai, Claude Code mendeklarasikan 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

1

Daftar sumber daya yang tersedia

Ketik @ dalam prompt Anda untuk melihat sumber daya yang tersedia dari semua server MCP yang terhubung. Sumber daya muncul bersama file dalam menu pelengkapan otomatis.
2

Referensikan sumber daya tertentu

Gunakan format @server:protocol://resource/path untuk mereferensikan sumber daya:
3

Referensi sumber daya ganda

Anda dapat mereferensikan beberapa sumber daya dalam satu prompt:
Tips:
  • Sumber daya diambil secara otomatis dan disertakan sebagai lampiran saat direferensikan
  • Jalur sumber daya dapat dicari dengan fuzzy dalam pelengkapan otomatis penyebutan @
  • Claude Code secara otomatis menyediakan alat untuk membuat daftar dan membaca sumber daya MCP ketika server mendukungnya
  • Sumber daya dapat berisi jenis konten apa pun yang disediakan server MCP (teks, JSON, data terstruktur, dll.)
Sumber daya UI Aplikasi MCP adalah entri dengan URI 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. 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.
Pencarian tool tidak didukung pada Microsoft Foundry deployment yang dihosting di Azure, yang menolaknya di sisi server: Claude Code mendeteksi penolakan dan memuat tool MCP di awal untuk deployment tersebut. 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
Claude Code memotong deskripsi tool atau instruksi server yang melebihi batas default berikut, dan Claude hanya melihat teks sebelum potongan:
  • Instruksi server, dan deskripsi tool yang dimuat di awal: 4.096 karakter
  • Deskripsi tool yang dimuat Claude melalui pencarian tool: 16.384 karakter
Jaga agar deskripsi dan instruksi tetap ringkas, dan letakkan detail penting di dekat awal. Ketika pencarian tool mencocokkan kueri Claude dengan deskripsi tool, pencarian hanya membaca bagian dalam batas yang lebih pendek, jadi letakkan juga kata-kata yang akan dicari Claude di dekat awal. Tool dimuat di awal dan tetap menggunakan batas yang lebih pendek setiap kali tidak ditunda, misalnya ketika pencarian tool dimatikan, ketika tool ditandai untuk dimuat di awal, atau ketika servernya dibebaskan dari penundaan. Sebelum v2.1.296, batas yang lebih pendek adalah 2.048 karakter, dan sebelum v2.1.295 batas tersebut berlaku untuk setiap deskripsi tool, termasuk yang dimuat melalui pencarian tool.

Ubah batas panjang deskripsi

Untuk mengubah batas default sebesar 4.096 dan 16.384 karakter untuk server MCP dalam sesi Anda, atur CLAUDE_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: Entri tools/list berikut meminta satu tool untuk dimuat di awal:
Pencarian tool diaktifkan secara default: tool MCP ditunda dan ditemukan sesuai permintaan. Mengatur CLAUDE_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=true tidak menimpa ini.
Sebelum v2.1.221, Claude Code menonaktifkan pencarian tool untuk semua model di Agent Platform Google Cloud kecuali Anda mengatur ENABLE_TOOL_SEARCH=true. Kontrol perilaku pencarian tool dengan environment variable ENABLE_TOOL_SEARCH:
Atau atur nilai dalam bidang env settings.json Anda. Anda juga dapat menonaktifkan tool ToolSearch secara khusus:
Jika Anda menolak 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

Kasus-kasus berikut dibahas di tempat lain:
Ketika 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, atur alwaysLoad 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:
Bidang 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 bernama anthropic-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

1

Temukan prompts yang tersedia

Ketik / 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.
2

Jalankan prompt tanpa argumen

3

Jalankan prompt dengan argumen

Banyak prompts menerima argumen. Berikan mereka terpisah dengan spasi setelah perintah. Claude Code membagi argumen pada whitespace, jadi setiap argumen adalah satu token:
Tips:
  • MCP prompts ditemukan secara dinamis dari server yang terhubung
  • Argumen diuraikan berdasarkan parameter yang ditentukan oleh prompt
  • Hasil prompt disuntikkan langsung ke dalam percakapan
  • Dalam bentuk /mcp__servername__promptname, Claude Code mengganti karakter apa pun dalam nama server di luar A-Z, a-z, 0-9, _, dan - dengan _, dan menggunakan nama prompt seperti yang dideklarasikan server

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 dengan managed-mcp.json, menyediakan server kepada setiap pengguna dengan managedMcpServers, membatasi server dengan allowedMcpServers dan deniedMcpServers, dan apa yang dilihat pengguna ketika server diblokir.