Setiap MCP server di HostedMCP memiliki catatan singkat di bagian bawah: server yang terdaftar berjalan dengan izin yang Anda berikan, jadi tinjau kembali source code-nya sebelum melakukan install. Kami mencantumkan hal tersebut karena masalah keamanan MCP yang paling umum bukanlah exploit yang canggih. Melainkan seseorang yang menempelkan URL database dengan akses tulis penuh ke dalam server yang baru saja mereka temukan lima menit sebelumnya.
Panduan ini mencakup kedua jenis risiko tersebut. Risiko biasa, seperti kredensial yang terlalu luas, adalah tempat di mana sebagian besar insiden bermula. Risiko di level protokol, seperti token passthrough dan confused deputies, menjadi penting jika Anda membangun atau menghosting server. Kami mendasarkan setiap poin pada praktik terbaik keamanan MCP resmi untuk revisi 2026-07-28, ditambah dengan apa yang kami temukan di katalog kami sendiri.
Poin penting
- Sebagian besar insiden MCP bermula dari kesalahan biasa: kredensial yang terlalu luas dan server yang tidak diperiksa oleh siapa pun.
- Model membaca teks yang tidak terpercaya, sehingga tool apa pun yang ia miliki dapat diarahkan oleh halaman web, issue, atau email.
- Server lokal berjalan dengan izin Anda; server remote harus mengikuti OAuth 2.1 dan tidak boleh melakukan token passthrough.
- Prinsip least access, persetujuan untuk segala hal yang melakukan operasi tulis, penggunaan pinned versions, dan membatasi jumlah server per agent dapat mencegah sebagian besar masalah.
| Risiko | Siapa yang terdampak | Pertahanan utama |
|---|---|---|
| Prompt injection melalui konten | Siapa pun yang agent-nya membaca halaman web, issue, atau email | Persetujuan sebelum melakukan operasi tulis; jangan letakkan tool yang tidak bisa dibatalkan (irreversible) di dekat input yang tidak terpercaya |
| Server lokal berjalan sebagai Anda | Siapa pun yang melakukan install stdio servers | Publisher terpercaya, scoped secrets, pinned versions |
| Kesalahan OAuth pada server remote | Pembuat dan host server | Ikuti spec otorisasi MCP; jangan lakukan token passthrough |
| Terlalu banyak hal di satu tempat | Agent dengan banyak server | Berikan setiap agent hanya server yang dibutuhkan untuk tugasnya |
Mengapa MCP mengubah lanskap keamanan
Integrasi tradisional biasanya berupa kode yang ditulis developer untuk memanggil API dengan cara yang sudah ditentukan sebelumnya. Dengan MCP, model akan memutuskan saat runtime tool mana yang harus dipanggil dan argumen apa yang digunakan, berdasarkan seluruh informasi dalam konteksnya. Sebagian dari konteks tersebut adalah teks yang tidak ditulis oleh siapa pun di tim Anda: halaman web yang diambil oleh model, GitHub issue, email, atau hasil dari tool lainnya.
Itulah inti permasalahannya dalam satu kalimat. Model adalah pengambil keputusan yang membaca input yang tidak terpercaya. Sebagian besar risiko MCP adalah variasi dari "teks tidak terpercaya yang mengarahkan pemanggilan tool" atau "sebuah tool memiliki akses lebih besar dari yang dibutuhkan saat hal itu terjadi".
Risiko 1: prompt injection melalui konten
Misalnya Anda telah menghubungkan GitHub server dengan izin untuk memberikan komentar dan menutup issue, lalu Anda meminta agent Anda untuk melakukan triage pada issue baru. Salah satu issue berisi baris perintah yang tersembunyi di dalam log yang panjang, yang menyuruh assistant untuk menutup semua issue yang sedang terbuka sebagai duplikat. Model yang mengikuti instruksi di dalam data bisa saja melakukan hal tersebut.
Tidak ada dalam protocol yang mencegah hal ini, karena penalaran model bukanlah sesuatu yang bisa divalidasi oleh sebuah protocol. Yang membantu adalah penerapan lapisan keamanan (layering). Host yang baik akan meminta persetujuan sebelum menjalankan tool yang mengubah data dan akan menampilkan argumennya kepada Anda. Server yang baik akan menandai tool yang melakukan penulisan atau penghapusan, sehingga host dapat memperlakukannya secara berbeda. Selain itu, Anda bisa membatasi akses agent agar sesuai dengan tugasnya: triage hanya perlu membaca dan memberi label, bukan menutup atau menghapus.
Perhatian
Agent yang membaca konten yang tidak terpercaya tidak boleh memiliki tool yang dapat melakukan tindakan yang tidak dapat dibatalkan (irreversible) tanpa konfirmasi dari manusia. Ini adalah aturan yang kami terapkan sendiri.
Risiko 2: server lokal berjalan dengan hak akses Anda
Server lokal adalah program di komputer Anda yang dijalankan oleh aplikasi AI Anda dengan izin user Anda. Program ini dapat membaca file yang bisa Anda baca dan mengakses jaringan yang bisa Anda akses. Praktik terbaik keamanan MCP menganggap hal ini sebagai risiko tersendiri: server lokal yang berbahaya atau telah disusupi dapat menjalankan perintah arbitrer dengan hak istimewa client, itulah sebabnya alur install satu klik harus mendapatkan persetujuan eksplisit dan menampilkan perintah yang tepat.
Server lokal mencakup porsi besar dalam katalog kami, terutama di kategori developer tools, dan banyak di antaranya membutuhkan secrets. Pada 11 November 2026, 11.660 server mendeklarasikan environment variables, dan 12.757 dari variabel tersebut ditandai sebagai secrets: API keys, token, dan password yang tersimpan di file config client Anda.
Cara server dalam katalog kami menyatakan metode autentikasinya, berdasarkan README yang dibaca oleh model enrichment kami (diukur November 14, 2026):
| Autentikasi | Servers | Bagikan |
|---|---|---|
| Tidak ada | 18.605 | 46% |
| API key atau OAuth | 10.520 | 26% |
| API key atau token | 9.248 | 23% |
| OAuth | 2.389 | 6% |
Cara menanganinya sebagian besar adalah dengan menggunakan logika umum yang diterapkan secara konsisten.
Utamakan server dari vendor produk tersebut, atau dari publisher yang karya lainnya dapat Anda lihat. Halaman server kami menampilkan publisher dan menandai server resmi.
Pastikan source-nya bersifat publik dan aktif. Package tanpa link repository, atau repository yang terakhir kali diupdate setahun lalu, memiliki risiko lebih tinggi. Setiap halaman HostedMCP menampilkan commit terakhir dan tanggal release.
Baca daftar tool sebelum melakukan install. Jika server "weather" memiliki tool yang menjalankan shell commands, segera hentikan.
Batasi scope secret. Berikan user read-only untuk server database. Berikan fine-grained token untuk satu repository saja pada server GitHub. Arahkan server filesystem ke satu folder proyek saja, jangan pernah ke home directory Anda.
Tips
Pin versi untuk hal-hal yang penting.
npx -y some-server@latestakan menjalankan apa pun yang baru saja dipublikasikan setiap kali dijalankan;npx -y some-server@1.4.2akan menjalankan versi yang sudah Anda periksa.
Spesifikasi menyebutkan satu lagi risiko lokal yang perlu diketahui jika Anda menjalankan proxy: dalam setup di mana sebuah halaman web dapat mengakses local MCP proxy, bug cross-site scripting pada halaman tersebut dapat meningkat menjadi eksekusi perintah melalui stdio server milik proxy tersebut. Jika Anda menjalankan MCP gateway atau proxy di localhost, perlakukan ia seperti layanan lokal lainnya yang memiliki attack surface.
Risiko 3: remote servers dan OAuth
Remote servers tidak menyentuh mesin Anda, tetapi mereka menyimpan token untuk banyak pengguna dan berkomunikasi dengan layanan lain atas nama mereka, yang membawa serangkaian masalah berbeda. Praktik terbaik keamanan MCP menyebutkan beberapa di antaranya secara spesifik.
| Serangan | Apa yang salah | Pertahanan |
|---|---|---|
| Token passthrough | Sebuah server menerima token yang tidak diterbitkan untuknya, atau meneruskan token pengguna ke upstream | Hanya terima token yang diterbitkan khusus untuk server ini; jangan pernah meneruskannya |
| Confused deputy | Sebuah proxy dengan client ID statis memberikan code kepada client berbahaya tanpa persetujuan yang sah | Persetujuan per-client di dalam proxy |
| Server-side request forgery | OAuth discovery mengarahkan client ke URL internal seperti cloud metadata | Client melakukan validasi terhadap URL discovery |
| Mix-up attack | Authorization server yang berbahaya mengirimkan code ke token endpoint milik server yang jujur | Validasi iss (RFC 9207), ditambahkan pada 2026-07-28 |
| Authorization URL abuse | Sebuah server mengembalikan URL javascript: atau shell metacharacters |
Client melakukan validasi URL sebelum membukanya |
| Localhost redirect impersonation | Proses lokal lain menangkap code yang dikirim ke localhost |
Penanganan redirect yang hati-hati pada desktop clients |
| Over-broad scopes | Token yang bocor dapat melakukan jauh lebih banyak hal daripada tugas yang dibutuhkan | Minta scope yang paling sempit |
Aturan di balik baris pertama sangat jelas: MCP server tidak boleh menerima token apa pun yang tidak diterbitkan secara eksplisit untuk MCP server tersebut.
Revisi 2026-07-28 juga telah mendepresiasi OAuth Dynamic Client Registration dan menggantinya dengan Client ID Metadata Documents, serta desain stateless yang menggantikan protocol sessions, sehingga kekhawatiran session-hijacking lama kini bergeser menjadi pembajakan terhadap state handles yang diterbitkan oleh server. Jika server Anda menyimpan state, pastikan handles tersebut tidak dapat ditebak dan terikat pada pengguna.
Risiko 4: terlalu banyak dalam satu tempat
Risiko yang paling tidak terlihat adalah konsentrasi. Satu agent yang memiliki GitHub server, Slack server, database server, dan browser server dapat membaca kode, membaca pesan, melakukan query ke customer, dan mengunjungi situs web apa pun, semuanya dalam satu context yang sama. Satu instruksi yang terinjeksi kemudian memiliki banyak celah untuk dieksploitasi, termasuk cara untuk mengirim data keluar.
Melakukan pembagian (splitting) dapat membantu. Berikan agent server yang hanya dibutuhkan untuk tugas yang sedang dikerjakan, alih-alih memberikan semua yang Anda miliki. Jauhkan server yang membaca data sensitif dari server yang dapat melakukan posting ke dunia luar, atau setidaknya buatlah server outbound tersebut memerlukan approval.
Checklist bagi Anda yang menginstal server
Sebelum menambahkan server, meluangkan waktu beberapa menit untuk pengecekan dapat menghindari sebagian besar masalah.
- Ketahui siapa penerbitnya. Apakah resmi dari vendor, atau maintainer yang bisa Anda telusuri.
- Pastikan kodenya bersifat publik dan baru saja di-maintain.
- Baca setiap nama tool dan deskripsinya. Segala sesuatu yang tidak sesuai dengan tujuan server tersebut adalah tanda peringatan.
- Berikan akses seminimal mungkin: user read-only, token single-repository, atau satu folder saja.
- Pastikan aksi write dan delete memerlukan persetujuan Anda, dan jangan berikan persetujuan permanen sampai Anda benar-benar mempercayainya.
- Gunakan pin version untuk server yang Anda andalkan, dan lakukan update secara sengaja.
- Hapus server yang tidak lagi Anda gunakan. Setiap server yang terinstal adalah attack surface dan memakan context window.
Setiap halaman server di HostedMCP menampilkan penerbit, commit terakhir, environment variables yang dibutuhkan, serta daftar tool lengkapnya, yang mencakup empat poin pengecekan pertama hanya dalam satu menit.
Checklist untuk Anda yang membangun server
Jika Anda mengelola sebuah server, Anda memikul tanggung jawab yang lebih besar.
- Ekspos set tool paling minimal yang dapat menyelesaikan tugas, dan beri nama sesuai dengan fungsinya.
- Tandai tool yang melakukan operasi tulis atau hapus dengan destructive hint agar host dapat meminta konfirmasi terlebih dahulu.
- Validasi setiap argumen seolah-olah datang dari penyerang, karena hal itu bisa saja terjadi.
- Gunakan stderr untuk logging, jangan pernah gunakan stdout, dan jangan pernah melakukan log pada data rahasia.
- Untuk remote server, ikuti spesifikasi otorisasi MCP: OAuth 2.1, hanya terima token yang diterbitkan khusus untuk server Anda, jangan lakukan token passthrough, dan gunakan scope yang sempit.
- Perlakukan state handles sebagai data rahasia: buat secara random, terikat pada user, dan memiliki masa berlaku yang singkat.
- Dokumentasikan setiap permission dan environment variable yang dibutuhkan server Anda, dengan menggunakan placeholder values saja.
Panduan kami tentang cara membangun MCP server menjelaskan dasar-dasarnya menggunakan SDK yang ada saat ini, dan MCP vs API menjelaskan mengapa mengembalikan data yang lebih sedikit juga merupakan keuntungan dari sisi keamanan.
Menjalankan MCP dalam tim
Ketika sudah lebih dari beberapa orang menggunakan MCP di tempat kerja, instalasi ad-hoc tidak akan bisa berskala dengan baik. Ada beberapa kebiasaan yang dapat membuatnya lebih mudah dikelola.
| Kebiasaan | Mengapa ini membantu |
|---|---|
| Daftar server yang disetujui dan di-pin di dalam repository | Semua orang menjalankan versi yang sama yang sudah direview |
| Identitas terpisah untuk agent | Audit log menunjukkan tindakan apa saja yang dilakukan agent; mencabut aksesnya tidak akan mengunci akses orang lain |
| Hosted server untuk produk SaaS | Tidak ada API key di laptop; akses mengikuti kontrol admin produk tersebut |
| Log tool calls | Setelah terjadi sesuatu yang tidak terduga, log akan menunjukkan konten mana yang mengarahkan model |
| Update direview layaknya dependency | Kode baru dengan izin Anda akan dibaca sebelum dijalankan |
Kelola daftar yang sudah disetujui. Pilih server yang mungkin digunakan tim Anda, pin versinya, dan bagikan config melalui repository daripada menyimpannya di home directory masing-masing orang. File .mcp.json milik Claude Code yang berbasis project scope dan .vscode/mcp.json milik VS Code yang berbasis workspace dibuat khusus untuk tujuan ini, dan panduan client kami menunjukkan di mana setiap tool menyimpan config project.
Berikan identitas sendiri untuk agent. Menggunakan service account atau bot token untuk agent, yang terpisah dari kredensial orang lain, akan memudahkan Anda melihat tindakan apa saja yang dilakukan agent di audit log dan memungkinkan Anda mencabut aksesnya tanpa mengunci akses siapa pun.
Utamakan hosted server untuk SaaS. Ketika vendor menjalankan MCP server untuk produk mereka sendiri, Anda tidak perlu mendistribusikan API key ke laptop, dan aksesnya diatur oleh OAuth grants dan kontrol admin yang sama dengan produk tersebut. Daftar remote server kami adalah cara cepat untuk melihat vendor mana saja yang menyediakannya.
Log tool calls. Sebagian besar host dapat mencatat tool mana yang dijalankan beserta argumennya. Simpan log tersebut di tempat Anda menyimpan audit log lainnya, dan periksa setelah terjadi sesuatu yang tidak terduga; log tersebut biasanya menunjukkan dengan tepat bagian konten mana yang mengarahkan model.
Review update layaknya dependency. Update pada server adalah kode baru yang berjalan dengan izin Anda. Baca changelog untuk server yang memiliki akses menulis ke sistem produksi, sama seperti Anda membaca changelog sebuah library.
Apa yang diperiksa dan tidak diperiksa oleh HostedMCP
Kami adalah sebuah direktori, bukan auditor keamanan, dan penting bagi kami untuk memperjelas batasan tersebut. Untuk setiap listing, kami membaca repository, package, dan README, mencatat publisher, commit terakhir, release, serta environment variables yang dideklarasikan, dan menampilkan daftar tool secara lengkap. Listing dari publisher massal akan ditandai, sementara fork dan mirror akan digabungkan ke versi aslinya.
Kami tidak menjalankan server atau mengaudit kodenya. Sebuah listing di HostedMCP berarti kami telah menemukannya dan mendeskripsikannya secara akurat, bukan berarti listing tersebut aman untuk environment Anda. Keputusan tersebut sepenuhnya ada di tangan Anda, dan checklist di atas adalah cara yang kami sarankan untuk melakukannya.
Jika Anda baru mengenal hal ini, apa itu MCP dan apa itu MCP server adalah tempat yang tepat untuk memulai, dan daftar remote server kami adalah cara termudah untuk mencoba server yang tidak akan menyentuh mesin Anda sama sekali.