SpyBara
Go Premium

mcp.md 2026-11-11 22:59 UTC to 2026-11-12 22:01 UTC

No changes for this document in this history range.

2026
Mon 2 23:57 Fri 6 23:01 Sat 7 23:58 Tue 10 21:57 Wed 11 22:59

Hubungkan Claude Code ke alat melalui MCP

Pelajari cara menghubungkan Claude Code ke alat Anda dengan Model Context Protocol.

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.

[!WARNING]

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:

/plugin install mcp-server-dev@claude-plugins-official

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

/mcp-server-dev:build-mcp-server

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 tergantung pada 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.

# Basic syntax
claude mcp add --transport http <name> <url>

# Real example: Connect to Notion
claude mcp add --transport http notion https://mcp.notion.com/mcp

# Example with Bearer token
claude mcp add --transport http secure-api https://api.example.com/mcp \
  --header "Authorization: Bearer your-token"

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 langsung digunakan 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.

[!NOTE]

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 tidak pernah dimuat.

Opsi 2: Menambahkan server SSE jarak jauh

[!WARNING]

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 yang lebih lama, atau untuk terhubung melalui SSE secara langsung, berikan --transport sse sebagai gantinya:

# Basic syntax
claude mcp add --transport sse <name> <url>

# Real example: Connect to Asana
claude mcp add --transport sse asana https://mcp.asana.com/sse

# Example with authentication header
claude mcp add --transport sse private-api https://api.company.com/sse \
  --header "X-API-Key: your-key-here"

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 environment server yang dijalankan ke root proyek, sehingga server Anda dapat me-resolve path relatif terhadap proyek tanpa bergantung pada direktori kerja. Ini adalah direktori yang sama yang diterima hook dalam variabel CLAUDE_PROJECT_DIR mereka. Baca variabel ini 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 saat Anda menambahkan atau menghapus direktori kerja di tengah sesi. Server yang membatasi akses sistem filenya 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 environment server, bukan di environment Claude Code sendiri, sehingga mereferensikannya melalui ekspansi ${VAR} di command atau args dari 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.

# Basic syntax
claude mcp add [options] <name> -- <command> [args...]

# Real example: Add Airtable server
claude mcp add --env AIRTABLE_API_KEY=YOUR_KEY --transport stdio airtable \
  -- npx -y airtable-mcp-server

[!NOTE]

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.

Contohnya:

  • 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 environment

Tanpa --, Claude Code akan mencoba mem-parse flag server, seperti --port di atas, sebagai opsinya sendiri.

--env menerima beberapa pasangan KEY=value. Jika nama server langsung mengikuti --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 shutdown, tangani sinyal untuk platform Anda dan selesaikan dalam 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 mengirimkan 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:

claude mcp add-json events-server \
  '{"type":"ws","url":"wss://mcp.example.com/socket","headers":{"Authorization":"Bearer YOUR_TOKEN"}}'

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 terhubung 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 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 oleh empat 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 jarak jauh. Untuk endpoint https://, tambahkan dengan --transport http, atau ikuti Opsi 2 ketika instruksi menyatakan bahwa endpoint menggunakan SSE. Untuk endpoint wss://, gunakan Opsi 4 sebagai gantinya, karena --transport tidak menerima ws:

claude mcp add --transport http example https://mcp.example.com/mcp

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

claude mcp add example --env API_KEY=your-key -- npx -y @example/mcp-server

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

{
  "mcpServers": {
    "example": {
      "command": "npx",
      "args": ["-y", "@example/mcp-server"]
    }
  }
}

menjadi perintah ini:

claude mcp add-json example '{"command":"npx","args":["-y","@example/mcp-server"]}'

Menambahkan server MCP dari konfigurasi JSON membahas escaping shell dan flag --scope untuk add-json. Untuk membagikan server dengan tim Anda, tambahkan --scope project, atau tambahkan entri di bawah mcpServers dalam .mcp.json di 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 bahwa Claude Code telah 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-perintah berikut:

# List all configured servers
claude mcp list

# Get details for a specific server
claude mcp get notion

# Remove a server
claude mcp remove notion

# (within Claude Code) Check server status
/mcp

Ketika 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 ini melaporkan keputusan konfigurasi, bukan upaya koneksi, sehingga Claude Code mencetaknya tanpa terhubung ke server:

  • ⏸ Pending approval (run `claude` to approve): server bercakupan 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 dan 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 tepercaya, dan server tetap berstatus ⏸ Pending approval alih-alih terhubung dan diperiksa kesehatannya.

Persetujuan dari sumber-sumber berikut tetap berlaku di folder yang tidak tepercaya:

  • ~/.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 itu di folder tepercaya. Di folder yang belum pernah Anda percayai, Claude Code menunggu dialog kepercayaan sebelum menerapkan persetujuan dari file tersebut, kecuali folder tersebut adalah home 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 menu server di sana, dan di pengelola /plugin, server HTTP atau SSE jarak jauh yang pernah Anda gunakan sebelumnya 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, jadi Anda tidak perlu melakukan apa pun. Cache penemuan dan status cached-nya memerlukan Claude Code v2.1.221 atau yang lebih baru.

Cache penemuan nonaktif secara default kecuali peluncuran bertahap telah mengaktifkannya untuk akun Anda. Tetapkan MCP_DISCOVERY_CACHE=1 untuk mengaktifkannya, atau 0 untuk tetap menonaktifkannya bahkan ketika peluncuran 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 menghubungkan server saat itu juga 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.

Kegagalan koneksi dan server yang tidak dikonfigurasi

Ketika status server adalah ✘ Failed to connect, claude mcp list menambahkan detail kegagalan ke baris status tersebut, dan claude mcp get <name> menampilkannya di baris Issue:. Detail tersebut 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 menyematkan 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 di 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 pengelola /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 menyebutkan apa yang diperiksa Claude Code dan cara menghilangkan peringatan:

  • 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, menyebutkan field yang terdampak 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 sign-in OAuth per endpoint, sehingga ketika Anda mengautentikasi definisi yang dimuat di satu proyek, Anda tetap perlu masuk secara terpisah di proyek tempat definisi yang berbeda dimuat. Pertahankan endpoint yang Anda inginkan dan hapus yang lain dengan claude mcp remove <name> --scope <scope>. Dalam peringatan, Claude Code mengutip endpoint setiap cakupan sebagaimana ditulis dalam konfigurasi Anda, dengan referensi ${VAR} yang tidak diekspansi, sehingga tidak pernah menampilkan nilai yang telah 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 memuat dan menampilkan peringatan yang meminta Anda untuk 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, 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.

Jumlah tool dalam sesi cloud

Dalam sesi cloud, jumlah seperti 3 of 13 tools available berarti Claude tidak dapat menggunakan 10 tool lainnya. Periksa penyebab-penyebab berikut, di antara yang lain:

  • Aturan deny di .claude/settings.json repositori Anda menyebutkan tool tersebut atau seluruh servernya: hapus aturan tersebut, jika sesi Anda membaca file tersebut
  • Nama lengkap tool lebih dari 128 karakter: ikuti langkah-langkah untuk nama yang terlalu panjang
  • Server mencantumkan tool untuk antarmukanya sendiri dan bukan untuk Claude: jika Anda memelihara server tersebut, tambahkan model ke _meta.ui.visibility tool untuk memberikan tool tersebut kepada Claude. Jika tidak, tidak ada yang perlu diperbaiki.
Tool dari server yang masih terhubung

Jika permintaan Anda memerlukan tool dari server yang masih dalam proses terhubung di latar belakang, Claude menunggu server tersebut sebelum melanjutkan. Cara penantian terjadi bergantung pada konfigurasi Anda:

  • Dengan tool search, yang merupakan default: penantian 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 Microsoft Foundry yang di-host di Azure: Claude memulai di jalur tool search alih-alih dengan WaitForMcpServers, karena Claude Code baru mengetahui penolakan sisi server dari deployment tersebut melalui 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 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 nonaktif.

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 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 sendiri oleh Claude Code, 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 terhubung ke server yang nonaktif secara default hanya ketika Anda mencantumkannya di sini.

Claude Code 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 selebihnya dari 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 yang mengambil feature flag, Claude Code menggunakan runtime v2 pada Claude Code v2.1.232 atau yang lebih baru.

Dalam sesi yang 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 on AWS, Agent Platform Google Cloud, atau Microsoft Foundry, kecuali platform host yang menyematkan Claude Code menetapkan CLAUDE_CODE_PROVIDER_MANAGED_BY_HOST
  • Sesi yang masuk melalui Claude apps gateway
  • Sesi di mana Anda menonaktifkan 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 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 dibiarkannya tetap terbuka.
  • Tidak mendaftarkan server channel yang terhubung pada revisi yang lebih baru, karena revisi tersebut tidak dapat membawa pesan channel.
  • Menggagalkan sign-in MCP OAuth yang respons otorisasinya menyebutkan penerbit yang tidak terduga.
  • Mengirim kredensial MCP OAuth hanya ke token endpoint yang dilayani melalui HTTPS atau di localhost, 127.0.0.1, atau ::1. Sign-in gagal untuk server yang token endpoint-nya berupa 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 yang lebih lama, 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 revisi yang lebih baru kepada server, tetapkan MCP_PROTOCOL_NEGOTIATION ke auto atau legacy. Jika variabel tersebut tidak ditetapkan, Claude Code dapat melewatkan pertanyaan kepada server stdio selama 7 hari, misalnya setelah server keluar ketika ditanya. Agar server yang telah ditingkatkan ditanya lebih cepat, tetapkan auto.

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 kembali.
  • Dalam mode non-interaktif dengan flag -p dan di Agent SDK, Claude Code hanya menyegarkan daftar tool pada notifikasi tersebut.

Jika permintaan penyegaran gagal, Claude Code mempertahankan tool, prompt, dan resource server yang ditemukan sebelumnya hingga penyegaran 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 dibiarkannya tetap 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 kembali server dari /mcp.

Koneksi ulang otomatis

Claude Code menghubungkan kembali 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 kembali 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 saat Claude Code menghubungkan kembali. Setelah lima upaya yang 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 satu retry berhasil terhubung. Hingga saat itu, sesi Agent SDK melaporkan status failed, dan kode Anda dapat menghubungkan kembali server. Untuk menghubungkannya kembali di claude -p, mulai eksekusi lagi.
    • Ketika server memerlukan Anda untuk masuk lagi: Claude Code berhenti mencoba ulang, dan sesi Agent SDK melaporkan status server sebagai needs-auth. Masuk dengan claude mcp login <name> di shell Anda. Lalu mulai eksekusi lagi atau, dalam sesi Agent SDK, hubungkan kembali 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-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 diselesaikan. 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.

Cara Anda menjalankan Claude Code Proses server keluar di tengah sesi Koneksi pertama server gagal
Sesi interaktif Claude Code menandai server sebagai gagal. Untuk memulainya lagi, pilih Reconnect dari menu server di /mcp Claude Code menandai server sebagai gagal. Untuk memulainya lagi, pilih Reconnect dari menu server di /mcp
Eksekusi claude -p Claude Code memulai server lagi saat berikutnya Claude memanggil salah satu tool server, dan panggilan berjalan begitu server terhubung Eksekusi berlanjut tanpa tool server. Agar Claude Code mencoba koneksi lagi, mulai eksekusi lagi. Ketika plugin menyediakan server tersebut, eksekusi baru melewatkan koneksi selama 15 menit setelah kegagalan, jadi tunggu selama itu terlebih dahulu atau coba ulang lebih cepat
Sesi Agent SDK Claude Code memulai server lagi saat berikutnya Claude memanggil salah satu tool server, dan panggilan berjalan begitu server terhubung Sesi berlanjut tanpa tool server. Kode Anda dapat menghubungkan kembali server

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 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 terkonfigurasi 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.

Mengirim pesan dengan channel

Server MCP juga dapat mengirim pesan langsung ke sesi Anda sehingga Claude dapat bereaksi terhadap event eksternal seperti hasil CI, peringatan pemantauan, atau pesan obrolan. 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 menggunakan handshake yang lebih lama dan terdaftar seperti sebelumnya.

Claude Code menanyakan revisi tersebut kepada server stdio secara default. Untuk mempertahankan server channel stdio pada handshake yang lebih lama, tetapkan MCP_PROTOCOL_NEGOTIATION ke legacy, yang mempertahankan setiap server pada handshake tersebut.

[!TIP]

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
  • Di seluruh 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 juga ada timer kedua per permintaan yang mencakup setiap permintaan hingga byte respons pertama dari 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 masuk 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 setidaknya 1000 juga bertindak 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 mengirimkan respons dan tidak ada notifikasi progres selama jendela idle akan dibatalkan dengan kesalahan alih-alih menunggu batas wall-clock. Idle timeout berlaku untuk setiap jenis server kecuali server IDE dan server in-process SDK. Jendela idle default-nya 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 tersebut memblokir sesi: panggilan percakapan utama yang berjalan lebih dari dua menit berpindah 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 dalam percakapan utama yang masih berjalan setelah dua menit berpindah 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 Anda keluar dari sesi. Entri tugas menampilkan progres terbaru yang telah dilaporkan server. Jika Anda menghentikan tugas, Claude Code membatalkan panggilan dan memberi tahu Claude bahwa tidak akan ada hasil. Menghentikan tugas tidak menjamin server berhenti: server mungkin sudah melakukan sebagian pekerjaan, atau mungkin masih menyelesaikannya.

Batas per panggilan tetap berlaku saat panggilan berjalan di latar belakang: batas 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 menonaktifkan pemindahan otomatis ke latar belakang:

Beberapa panggilan tidak pernah berpindah 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 elicitation 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 begitu server menerima pekerjaan tersebut, sehingga Claude terus bekerja kecuali Anda membuat Claude menunggu. Ketika pekerjaan berakhir, transkrip menyatakannya dan Claude mendapatkan hasilnya. Mintalah hasilnya kepada Claude.

Sementara itu, footer menampilkan jumlah seperti 1 MCP task, dan Claude Code mengikuti tugas tersebut dengan memeriksa statusnya ke server. Tugas di server jarak jauh tetap berjalan setelah Anda keluar. Untuk mengikutinya lagi, lanjutkan sesi yang sama.

[!NOTE]

Tugas MCP berada dalam beta publik di Claude Code CLI dan memerlukan Claude Code v2.1.304 atau yang lebih baru. Apa 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 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; jika tidak, tidak ada permintaan pembatalan yang dikirim dan Claude Code melupakan tugas tersebut serta tidak dapat mengikutinya lagi. Menekan Esc tidak menghentikan tugas latar belakang.

Ketika tugas berakhir, baris seperti ini muncul di transkrip:

MCP task <server task id> (<server>/<tool>) completed.

Hasilnya dikirim ke Claude, bukan ke transkrip, jadi mintalah hasilnya kepada Claude. Jika Claude sedang idle ketika hasilnya tiba, Claude mulai mengerjakannya tanpa diminta.

Menjawab pertanyaan dari tugas MCP

Tugas yang sedang berjalan dapat membuka dialog elicitation 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, mengosongkan, 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-tugas tersebut selesai atau hentikan di /tasks terlebih dahulu.

Situasi Apa yang terjadi pada tugas Apa yang dapat Anda lakukan
Anda menjalankan /clear atau /branch, atau /resume sesi lain Selama Claude Code tetap terbuka, hasilnya tiba di percakapan Anda saat ini Setelah keluar, claude --resume sesi tempat tugas dimulai
Anda keluar dari Claude Code Tidak ada opsi keluar yang membatalkan tugas server jarak jauh, bahkan ketika dialog keluar mencantumkannya di bawah The following will stop when you exit: Hentikan tugas di /tasks terlebih dahulu, atau lanjutkan sesi yang sama nanti
Anda kembali ke sesi tugas secara interaktif: claude --resume, claude --continue, atau /resume Begitu server terhubung, Claude Code mengikuti tugas lagi, dan Claude mendapatkan hasilnya jika tugas selesai sementara itu dan server masih mengetahuinya Pertahankan nama dan pengaturan koneksi server tanpa perubahan
Anda melanjutkan sesi tugas dengan --resume atau --continue dalam eksekusi sekali jalan claude -p "<prompt>" Eksekusi tersebut tidak mengikuti tugas Lanjutkan secara interaktif, atau dengan --input-format stream-json
Anda memulai sesi baru atau menggunakan --fork-session Sesi baru tidak mengikuti tugas Lanjutkan sesi yang memulainya

Apa 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 mana di antaranya yang berpindah 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 tugas atau di baris penutup transkripnya, berarti Claude Code tidak dapat menjangkau server atau tugas tersebut. Selama salah satunya ditampilkan 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.

Pesan Apa yang terjadi Apa yang dapat Anda lakukan
reconnecting… Server belum menjawab sejak sesi dilanjutkan, atau pemeriksaan status tidak mendapat jawaban Jika pesan tetap ada, hubungkan kembali dari /mcp
needs a sign-in to <server> Server menolak pemeriksaan status Masuk dari /mcp
status requests come back with errors; retrying… Server, atau proxy di depannya, menjawab pemeriksaan status dengan kesalahan Tunggu selagi Claude Code mencoba ulang
server '<name>' did not reconnect within 300s Tidak ada pemeriksaan yang terjawab selama lima menit, misalnya karena koneksi terputus atau server dinonaktifkan Hubungkan kembali dari /mcp
server '<name>' asked for a sign-in, and none was accepted within 300s Setelah lima menit server masih meminta sign-in Masuk dari /mcp
status requests to server '<name>' came back with errors, and none succeeded in 300s Lima menit jawaban berupa kesalahan Periksa kesehatan atau log server itu sendiri
server '<name>' is not configured in this session; the task may still be running on it Sesi tidak memiliki server dengan nama tersebut, misalnya server dihapus, diganti namanya, atau tidak disertakan dalam --mcp-config, atau konektor claude.ai masih dimuat Pulihkan server dengan nama yang sama, lalu lanjutkan sesi lagi. Untuk konektor yang sedang dimuat, tidak perlu melakukan apa pun: Claude Code mengikuti tugas begitu konektor muncul
Pesan yang diawali dengan server '<name>' was reconfigured to a different transport since this task was created Server dengan nama tersebut ada dengan pengaturan koneksi yang berubah sejak tugas dimulai, seperti URL, command, args, env, headers, atau timeout-nya Pulihkan pengaturan sebelumnya, lalu lanjutkan sesi lagi
the server rejected this task's id; asking again… Server menyatakan tidak mengetahui ID tugas. Claude Code terus bertanya hingga lima menit Tunggu: pesan hilang jika server mengenali ID lagi, atau baris outcome unknown. akan menyusul
Baris transkrip yang diakhiri dengan outcome unknown., dalam salah satu bentuk expired on the server: outcome unknown. Server menolak ID atau menolak dengan kesalahan permanen lain, dan Claude Code berhenti mengikuti tugas Panggilan kedua dapat mengulangi pekerjaan. Sebelum memanggil tool lagi, cari tahu dari server apa yang telah dilakukan, misalnya dengan meminta Claude menggunakan tool lain dari server tersebut

Batas waktu pada tugas MCP

Secara default, tugas di latar belakang tidak memiliki batas waktu dari Claude Code. Batas waktu panggilan tool, termasuk batas wall-clock dan idle timeout, berlaku hingga server menjawab panggilan dengan tugas. Jika Anda membuat Claude menunggu, batas tersebut berlaku untuk seluruh tugas. Pemeriksaan status yang terjawab dihitung sebagai aktivitas untuk idle timeout.

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 dari settings.json:

Selama Claude menunggu, menekan Esc atau mencapai batas wall-clock atau idle timeout 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:

{
  "env": {
    "CLAUDE_CODE_MCP_AUTO_BACKGROUND_MS": "0"
  }
}

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 menghilangkan ekstensi tersebut.

Menjawab panggilan dengan tugas

Jawab dengan tugas hanya ketika permintaan membawa ekstensi tersebut; jika tidak, panggilan gagal dengan kesalahan tool Unsupported result type 'task' for tools/call. Panggilan gagal dengan cara yang sama jika jawaban Anda tidak memiliki taskId atau tidak memiliki status yang valid. Objek tugas adalah result JSON-RPC dari respons tools/call Anda, tidak memerlukan array content, dan di sini menyertakan statusMessage dan pollIntervalMs yang opsional:

{
  "resultType": "task",
  "taskId": "build-7f3a9c2e",
  "status": "working",
  "statusMessage": "Compiling, 40 of 212 files done",
  "createdAt": "2026-10-22T14:03:07Z",
  "lastUpdatedAt": "2026-10-22T14:03:07Z",
  "ttlMs": null,
  "pollIntervalMs": 5000
}
Field Cara Claude Code menanganinya
resultType Tetapkan ke "task" untuk menandai balasan sebagai tugas. Tanpa field ini, Claude Code membaca balasan sebagai hasil biasa
taskId Wajib. Paling banyak 128 karakter ASCII yang dapat dicetak tanpa spasi; jika tidak, Claude mendapatkan kesalahan tool yang diawali dengan MCP server "<name>" returned a malformed task handle for tool "<tool>". Pastikan ID tetap dapat dijawab di berbagai koneksi, karena setelah sesi dilanjutkan Claude Code menanyakannya melalui koneksi baru
status Wajib. Salah satu dari working, input_required, completed, failed, atau cancelled. Nilai lain memberikan kesalahan Unsupported result type
createdAt, lastUpdatedAt, ttlMs Diwajibkan oleh ekstensi tugas, dan ttlMs boleh bernilai null. Claude Code tidak membuang tugas karena ttlMs-nya telah lewat
pollIntervalMs Opsional. Milidetik di antara permintaan tasks/get, dibatasi antara 250 dan 30000. Claude Code menggunakan 2000 ketika field tidak ada atau bernilai null, dan membaca nilainya lagi dari setiap respons tasks/get
statusMessage Opsional. /tasks menampilkan nilai dari respons tasks/get terbaru Anda, bukan dari yang pertama ini, dan respons yang menghilangkan field ini akan mengosongkannya. Pesan status dari Claude Code dapat menggantikannya

Claude Code menerima jawaban tugas yang menghilangkan createdAt, lastUpdatedAt, atau ttlMs, atau yang menetapkan pollIntervalMs ke null. Sebelum v2.1.317, panggilan gagal dengan kesalahan Unsupported result type sebagai gantinya. Agar juga berfungsi dengan versi-versi tersebut, kirim ketiga field yang diwajibkan oleh ekstensi tugas, dan kirim pollIntervalMs sebagai angka atau tidak sama sekali.

Pada server HTTP atau konektor claude.ai, jawaban tugas harus dimulai dalam timer per permintaan, jadi terima pekerjaan dan jawab terlebih dahulu, lalu kerjakan 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 mewajibkan 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 telah selesai:

{
  "resultType": "complete",
  "taskId": "build-7f3a9c2e",
  "status": "completed",
  "createdAt": "2026-10-22T14:03:07Z",
  "lastUpdatedAt": "2026-10-22T14:09:41Z",
  "ttlMs": null,
  "result": {
    "content": [{ "type": "text", "text": "Build succeeded: 212 files, 0 warnings" }]
  }
}
Status, metode, atau respons Cara Claude Code menanganinya
working Terus melakukan polling
completed Memberikan kepada Claude hasil tools/call normal di objek result tingkat atas. isError: true di dalamnya dilaporkan sebagai kegagalan
failed Memberi tahu Claude message dari objek error tingkat atas { code, message, data }, yang diwajibkan ekstensi tugas pada tugas yang gagal. Tanpa message tersebut, Claude mendapatkan statusMessage sebagai gantinya, atau jika tidak ada, Task failed
cancelled Memberi tahu Claude statusMessage, atau jika tidak ada, Task was cancelled by the server
input_required Membaca inputRequests, objek yang memetakan kunci pilihan Anda ke { method, params }. Claude Code menjawab setiap kunci sekali melalui tasks/update dengan { taskId, inputResponses }, di mana inputResponses memetakan kunci yang sama ke hasil permintaan tersebut. Kunci di atas 16 per tugas diabaikan
Metode di inputRequests elicitation/create hanya dilayani dalam sesi terminal interaktif, dan roots/list di mana saja. Ketika Claude Code tidak dapat melayani permintaan, Claude Code meminta server untuk membatalkan tugas
Nilai status lain Claude Code meminta server untuk membatalkan tugas dan melaporkannya kepada Claude sebagai gagal
Kesalahan JSON-RPC -32602 Dibaca sebagai ID tugas yang tidak dikenal. Untuk tugas di latar belakang, Claude Code terus bertanya hingga lima menit, lalu melaporkan hasilnya kepada Claude sebagai tidak diketahui
tasks/cancel Dikirim, misalnya, ketika Claude atau pengguna menghentikan tugas saat server terhubung. Tidak dikirim saat keluar
tasks/result, tasks/list, notifications/tasks Tidak digunakan, jadi letakkan hasil akhir di respons tasks/get Anda

Server MCP yang disediakan plugin

Plugin dapat menyertakan server MCP yang menyediakan tool dan integrasi saat Anda mengaktifkan plugin tersebut.

Cara kerja server MCP plugin:

  • Plugin mendefinisikan server MCP di .mcp.json pada root plugin atau secara inline di plugin.json
  • Saat Anda mengaktifkan sebuah plugin, Claude Code memulai server MCP-nya secara otomatis
  • Claude Code menawarkan tool MCP plugin berdampingan 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 membuat Claude Code berhenti terhubung ke server tersebut tanpa menghapus plugin

Contoh konfigurasi MCP plugin:

Di .mcp.json pada root plugin:

{
  "mcpServers": {
    "database-tools": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
      "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],
      "env": {
        "DB_URL": "${DB_URL}"
      }
    }
  }
}

Atau secara inline di plugin.json:

{
  "name": "my-plugin",
  "mcpServers": {
    "plugin-api": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/api-server",
      "args": ["--port", "8080"]
    }
  }
}

Fitur MCP plugin:

  • Siklus hidup otomatis: server terhubung dan terputus pada titik-titik berikut:
    • Saat sesi dimulai, Claude Code menghubungkan server untuk plugin yang diaktifkan secara otomatis. Di /mcp, server plugin jarak jauh (HTTP atau SSE) yang pernah Anda gunakan sebelumnya dapat menampilkan status cached sebagai gantinya; Claude Code menghubungkannya saat Claude pertama kali memanggil salah satu tool-nya. Jika 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 saat 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 pada sesi Anda berikutnya
    • Saat Anda memuat ulang, Claude Code mempertahankan koneksi aktif server plugin yang konfigurasinya tidak berubah, dan melakukan hal yang sama saat Anda mengganti daftar server MCP sesi dari Agent SDK tanpa menyebutkan server-server tersebut
    • Saat Anda memindahkan sesi dengan /cd pada v2.1.246 atau yang lebih baru, Claude Code menghubungkan server dari plugin yang diaktifkan oleh pengaturan direktori baru dan memutuskan server dari 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 yang idle aktif kembali, akan memulai server sesuai permintaan dan menunggu hingga server tersebut terhubung
  • Placeholder path: ${CLAUDE_PLUGIN_ROOT} di-resolve ke direktori instalasi plugin, ${CLAUDE_PLUGIN_DATA} ke direktori state persisten plugin, 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 environment pengguna: akses ke environment variable yang sama dengan server yang dikonfigurasi secara manual
  • Beragam jenis transport: dukungan untuk transport stdio, SSE, HTTP, dan WebSocket, meskipun dukungan transport dapat berbeda-beda per 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 milik plugin, karena nilai tersebut dapat memuat kredensial:

  • Server stdio: perintah ini mencetak Command: stdio, baris Args: yang kosong, dan setiap environment variable sebagai NAME=[REDACTED]
  • Server WebSocket: perintah ini mencetak URL: ws dan setiap header sebagai <name>: [REDACTED], dan claude mcp list menampilkan ws sebagai pengganti URL

Untuk melihat apa yang dikonfigurasi oleh plugin, temukan plugin di disk dan baca .mcp.json atau plugin.json miliknya.

Nama tool MCP plugin:

Tool dari server MCP yang disertakan dalam plugin mencantumkan nama plugin dan kunci server dalam nama yang dapat dipanggil. Bentuk lengkapnya adalah mcp__plugin_<plugin-name>_<server-name>__<tool-name>, dengan 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:

mcp__plugin_my-plugin_database-tools__query

Gunakan nama lengkap ini saat merujuk tool tersebut dalam aturan izin, daftar allowed-tools milik skill, field tools milik subagent, atau matcher hook. Matcher hook 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 berlingkup 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 milik hook mcp_tool.

Lihat referensi komponen plugin untuk detail tentang menyertakan server MCP dalam 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 Dimuat dalam Dibagikan dengan tim Disimpan dalam
Lokal Hanya proyek saat ini Tidak ~/.claude.json
Proyek Hanya proyek saat ini Ya, melalui kontrol versi .mcp.json di root proyek
Pengguna Semua proyek Anda Tidak ~/.claude.json

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.

[!NOTE]

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.

# Tambahkan server dengan cakupan lokal (default)
claude mcp add --transport http stripe https://mcp.stripe.com

# Tentukan cakupan lokal secara eksplisit
claude mcp add --transport http stripe --scope local https://mcp.stripe.com

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:

{
  "projects": {
    "/path/to/your/project": {
      "mcpServers": {
        "stripe": {
          "type": "http",
          "url": "https://mcp.stripe.com"
        }
      }
    }
  }
}

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.

# Tambahkan server dengan cakupan proyek
claude mcp add --transport http shared-server --scope project https://example.com/mcp

File .mcp.json yang dihasilkan mengikuti format standar:

{
  "mcpServers": {
    "shared-server": {
      "type": "http",
      "url": "https://example.com/mcp"
    }
  }
}

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.

# Tambahkan server pengguna
claude mcp add --transport http hubspot --scope user https://mcp.hubspot.com/anthropic

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:

{
  "mcpServers": {
    "api-server": {
      "type": "http",
      "url": "${API_BASE_URL:-https://api.example.com}/mcp",
      "headers": {
        "Authorization": "Bearer ${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:

claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer YOUR_GITHUB_PAT"

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:

Review PR #456 and suggest improvements
Create a new issue for the bug we just found
Show me all open PRs assigned to me

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:

claude mcp add --transport stdio db -- npx -y @bytebase/dbhub \
  --dsn "postgresql://readonly:pass@prod.db.com:5432/analytics"

Untuk mengonfirmasi server dimulai, jalankan /mcp dan periksa bahwa baris db menunjukkan tanda centang.

Kemudian tanyakan database Anda secara alami:

What's our total revenue this month?
Show me the schema for the orders table
Find customers who haven't made a purchase in 90 days

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 menghubungkan kembali dengan atau tanpa token baru:

  • Login tersimpan Anda memiliki token penyegaran: Claude Code menyegarkan token, menghubungkan kembali, dan mencoba ulang permintaan sekali. Server ditandai di /mcp hanya jika retry itu juga gagal.
  • Login tersimpan Anda tidak memiliki token penyegaran: Claude Code terhubung sekali tanpa token. Jika server merespons, tool-nya berfungsi selama Anda dalam keadaan keluar, dan token yang ditolak dihapus. Jika server juga menolak koneksi itu, /mcp menunjukkan bahwa server memerlukan autentikasi.

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.

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:

claude mcp add --transport http sentry https://mcp.sentry.dev/mcp

2. Gunakan perintah /mcp dalam Claude Code

Di Claude Code, gunakan perintah:

/mcp

Kemudian ikuti langkah-langkah di browser Anda untuk masuk.

[!TIP]

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.

claude mcp login sentry

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.

claude mcp login sentry --no-browser

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).

# Port callback tetap dengan pendaftaran klien dinamis
claude mcp add --transport http \
  --callback-port 8080 \
  my-server https://mcp.example.com/mcp

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.

[tab] claude mcp add

Gunakan --client-id untuk meneruskan ID klien aplikasi Anda. Flag --client-secret meminta rahasia dengan input bertopeng:

claude mcp add --transport http \
  --client-id your-client-id --client-secret --callback-port 8080 \
  my-server https://mcp.example.com/mcp

[tab] claude mcp add-json

Sertakan objek oauth dalam konfigurasi JSON dan berikan --client-secret sebagai flag terpisah:

claude mcp add-json my-server \
  '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' \
  --client-secret

[tab] claude mcp add-json (callback port only)

Untuk memperbaiki hanya port callback dan membiarkan Claude Code mendaftarkan klien secara otomatis, atur callbackPort sendiri:

claude mcp add-json my-server \
  '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"callbackPort":8080}}'

[tab] CI / env var

Atur rahasia melalui environment variable untuk melewati prompt interaktif:

MCP_CLIENT_SECRET=your-secret claude mcp add --transport http \
  --client-id your-client-id --client-secret --callback-port 8080 \
  my-server https://mcp.example.com/mcp

3. Autentikasi di Claude Code

Jalankan /mcp di Claude Code dan ikuti alur login browser.

[!TIP]

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:

{
  "mcpServers": {
    "my-server": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "authServerMetadataUrl": "https://auth.example.com/.well-known/openid-configuration"
      }
    }
  }
}

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.

{
  "mcpServers": {
    "slack": {
      "type": "http",
      "url": "https://mcp.slack.com/mcp",
      "oauth": {
        "scopes": "channels:read chat:write search:read"
      }
    }
  }
}

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:

{
  "mcpServers": {
    "internal-api": {
      "type": "http",
      "url": "https://mcp.internal.example.com",
      "headersHelper": "/opt/bin/get-mcp-auth-headers.sh"
    }
  }
}

Perintah juga dapat inline:

{
  "mcpServers": {
    "internal-api": {
      "type": "http",
      "url": "https://mcp.internal.example.com",
      "headersHelper": "echo '{\"Authorization\": \"Bearer '\"$(get-token)\"'\"}'"
    }
  }
}

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:

Variabel Nilai
CLAUDE_CODE_MCP_SERVER_NAME nama server MCP
CLAUDE_CODE_MCP_SERVER_URL URL server MCP
CLAUDE_PLUGIN_ROOT direktori root plugin. Diatur hanya ketika plugin menyediakan server

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.

Di mana Anda mengonfigurasi server Direktori kerja
Plugin Direktori root plugin
.mcp.json proyek atau server cakupan lokal Direktori proyek tempat server dideklarasikan
File agent di proyek Anda, server dari opsi mcpServers SDK atau metode setMcpServers(), atau --mcp-config Direktori kerja utama sesi
Cakupan pengguna, MCP terkelola, konektor claude.ai, atau file agent dari luar proyek Anda, termasuk dari direktori --add-dir Direktori konfigurasi Anda, ~/.claude kecuali Anda menetapkan CLAUDE_CONFIG_DIR

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

# Sintaks dasar
claude mcp add-json <name> '<json>'

# Contoh: Menambahkan server HTTP dengan konfigurasi JSON
claude mcp add-json weather-api '{"type":"http","url":"https://api.weather.com/mcp","headers":{"Authorization":"Bearer token"}}'

# Contoh: Menambahkan server stdio dengan konfigurasi JSON
claude mcp add-json local-weather '{"type":"stdio","command":"/path/to/weather-cli","args":["--api-key","abc123"],"env":{"CACHE_DIR":"/tmp"}}'

# Contoh: Menambahkan server HTTP dengan kredensial OAuth yang telah dikonfigurasi sebelumnya
claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp","oauth":{"clientId":"your-client-id","callbackPort":8080}}' --client-secret

2. Verifikasi server ditambahkan

claude mcp get weather-api

[!TIP]

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

# Sintaks dasar 
claude mcp add-from-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

claude mcp list 

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.

[!TIP]

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:

/mcp

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.

Tempat sesi berjalan Bagaimana connector tiba Apa yang mengontrol mereka
Terminal, VS Code, JetBrains, dan sesi Agent SDK Claude Code mengambilnya dari claude.ai Pengaturan di bagian ini dan konfigurasi MCP yang dikelola
Sesi cloud Host jarak jauh meneruskannya Pengaturan organisasi claude.ai Anda, ditambah pengaturan allowlist dan denylist yang mencapai sesi dan managed-mcp.json apa pun di host yang menjalankannya
Aplikasi desktop sesi lokal dan SSH Aplikasi desktop mengirimkannya dalam proses Entri blocked dalam kontrol alat connector organisasi Anda

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:

{
  "disableClaudeAiConnectors": true
}

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:

ENABLE_CLAUDEAI_MCP_SERVERS=false claude

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:

# Mulai Claude sebagai server MCP stdio
claude mcp serve

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:

{
  "mcpServers": {
    "claude-code": {
      "type": "stdio",
      "command": "claude",
      "args": ["mcp", "serve"],
      "env": {}
    }
  }
}

[!WARNING]

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:

which claude

Kemudian gunakan jalur lengkap dalam konfigurasi Anda:

{
  "mcpServers": {
    "claude-code": {
      "type": "stdio",
      "command": "/full/path/to/claude",
      "args": ["mcp", "serve"],
      "env": {}
    }
  }
}

Tanpa jalur executable yang benar, Anda akan mengalami kesalahan seperti spawn claude ENOENT.

[!TIP]

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:

export MAX_MCP_OUTPUT_TOKENS=50000
claude

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.

{
  "name": "get_schema",
  "description": "Returns the full database schema",
  "_meta": {
    "anthropic/maxResultSizeChars": 200000
  }
}

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

[!NOTE]

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.

{
  "name": "grant_access",
  "description": "Requests access to a protected resource",
  "_meta": {
    "anthropic/requiresUserInteraction": true
  }
}

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:

{
  "name": "set_issue_status",
  "annotations": {
    "idempotentHint": true
  }
}

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 di terminal 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.

Menjawab permintaan elicitation dalam sesi cloud

Ketika tugas Claude dalam sesi cloud Anda menunggu permintaan dari server MCP, server tersebut membutuhkan sesuatu dari Anda, seperti sebuah nilai atau sign-in. Jika permintaan muncul sebagai kartu di claude.ai/code atau di tab Code aplikasi Desktop, jawab pada kartu tersebut:

  • Form mode: isi bidang, lalu klik Submit
  • URL mode: klik Open link, selesaikan alur yang dibukanya, lalu klik I’m done, continue pada kartu

Untuk menolak permintaan, klik Decline. Claude melanjutkan setelah server merespons.

Jika Anda tidak melihat kartu di kedua tempat tersebut, Anda tidak dapat menjawab permintaan di sana. Dalam sesi Anda sendiri, klik tombol stop di sana untuk mengakhiri giliran.

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:

Can you analyze @github:issue://123 and suggest a fix?
Please review the API documentation at @docs:file://api/authentication

3. Referensi sumber daya ganda

Anda dapat mereferensikan beberapa sumber daya dalam satu prompt:

Compare @postgres:schema://users with @docs:file://database/user-model

[!TIP]

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.

Skalakan dengan pencarian tool MCP

Pencarian tool menjaga penggunaan konteks MCP tetap rendah dengan menunda definisi tool hingga Claude membutuhkannya. Hanya nama tool dan instruksi server yang dimuat saat awal sesi, jadi menambahkan lebih banyak server MCP memiliki dampak minimal pada context window Anda. Claude Code tidak memberlakukan batas tool tetap per-server; batas praktisnya adalah anggaran context window Anda.

[!NOTE]

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:

Nilai tool Anda Apa yang terjadi
true Tool dimuat di awal. Startup tidak menunggu server Anda karena nilai ini. Orang yang mengonfigurasi server Anda tetap dapat menunda semua tool-nya
false Tool tetap ditunda ketika konfigurasi mereka mengatur "alwaysLoad": true. Ini berlaku ketika server Anda diteruskan dengan --mcp-config, disediakan oleh aplikasi Agent SDK, atau disediakan oleh plugin. Pada server lain, tool dimuat di awal. Memerlukan Claude Code v2.1.285 atau lebih baru

Entri tools/list berikut meminta satu tool untuk dimuat di awal:

{
  "name": "search_tickets",
  "description": "Searches the ticket tracker by keyword",
  "_meta": {
    "anthropic/alwaysLoad": true
  }
}

Konfigurasi pencarian tool

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.

Kontrol perilaku pencarian tool dengan environment variable ENABLE_TOOL_SEARCH:

Nilai Perilaku
(tidak diatur) Semua tool MCP ditunda dan dimuat sesuai permintaan. Dimuat di awal pada model yang lebih awal dari Opus 4 dan Sonnet 4, pada model Agent Platform yang lebih awal, dan pada deployment Microsoft Foundry yang dihosting di Azure
true Tool MCP ditunda, dengan fallback yang sama seperti (tidak diatur)
auto Mode ambang. Tool yang seharusnya ditunda dimuat di awal selama total definisinya kurang dari 10% context window. Pada 10% atau lebih, pencarian tool diaktifkan, dan tool tersebut dapat tetap ditunda meskipun totalnya turun di bawah 10%
auto:N Mode ambang dengan persentase khusus, di mana N adalah 0-100. Misalnya, auto:5 untuk 5%
false Semua tool MCP dimuat di awal, tidak ada penundaan
# Gunakan ambang khusus 5%
ENABLE_TOOL_SEARCH=auto:5 claude

# Nonaktifkan pencarian tool sepenuhnya
ENABLE_TOOL_SEARCH=false claude

Atau atur nilai dalam bidang env settings.json Anda.

Anda juga dapat menonaktifkan tool ToolSearch secara khusus:

{
  "permissions": {
    "deny": ["ToolSearch"]
  }
}

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

[!NOTE]

Kasus-kasus berikut dibahas di tempat lain:

Ketika ANTHROPIC_BASE_URL menunjuk ke gateway, Claude Code mengharapkan gateway meneruskan bidang tool defer_loading dan blok tool_reference bersama dengan header anthropic-beta. Pencarian tool aktif secara default di belakang gateway, sehingga tool MCP ditunda dan permintaan menyertakan bidang dan blok tersebut. 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. 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.

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:

{
  "mcpServers": {
    "core-tools": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "alwaysLoad": true
    }
  }
}

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

/mcp__github__list_prs

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:

/mcp__github__pr_review 456
/mcp__jira__create_issue login-bug high

[!TIP]

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.