Aturan Block AI bots di Cloudflare bisa diam-diam mematikan server MCP Anda sendiri
21 September 2026
Jika server MCP Anda berada di belakang Cloudflare Access dengan managed OAuth, dan klien berhasil masuk tetapi kemudian tidak menampilkan tools apa pun, periksa pengaturan Block AI bots di Cloudflare (atau AI bot policies yang lebih baru) sebelum menyentuh kode. Kami mengalaminya saat membangun server MCP untuk shrtnr, pemendek URL kami, dan setiap lapisan dalam stack melaporkan sukses sementara koneksinya tidak ke mana-mana.
Kondisi errornya seperti ini. Handshake OAuth selesai. Cloudflare Access mencatat login yang berhasil. Klien MCP melaporkan terhubung, atau timeout setelah beberapa saat. Lalu tidak terjadi apa-apa: tidak ada tools, tidak ada error dari server, dan tidak ada request di log Worker, karena request itu tidak pernah sampai ke Worker.
Konfigurasinya
Sebuah Cloudflare Worker melayani endpoint MCP melalui Streamable HTTP di subdomainnya sendiri, mcp.your-domain.com. Aplikasi Cloudflare Access self-hosted melindungi subdomain itu dengan Managed OAuth diaktifkan. Access kemudian bertindak sebagai OAuth authorization server: menangani registrasi klien, penerbitan token, dan validasi di edge. Worker tidak mengimplementasikan endpoint OAuth sendiri. Ia menerima request yang sudah terautentikasi beserta header identitas dan harus memvalidasi JWT Access yang datang di header Cf-Access-Jwt-Assertion; Cloudflare mewajibkan ini untuk Managed OAuth pada server MCP.
Ini adalah konfigurasi yang didokumentasikan Cloudflare untuk server MCP, dan berfungsi. Managed OAuth masih beta, sehingga sebagian label di dashboard mungkin berubah.
Setiap lapisan bilang ya
Yang membuat ini sulit didiagnosis adalah tidak ada yang gagal di tempat Anda melihat.
Access menampilkan login. Zero Trust > Insights > Logs > Access authentication logs mencantumkan autentikasi yang berhasil untuk pengguna Anda terhadap aplikasi MCP. Hanya itu yang dicatatnya. Dokumentasi Cloudflare sendiri menyebutkan bahwa log autentikasi tidak merekam apa yang terjadi selama sesi setelahnya.
Worker tidak menampilkan apa pun. Tidak ada invokasi, tidak ada baris log, tidak ada exception. Worker tidak bisa mencatat request yang tidak pernah diterimanya, sehingga log yang kosong terbaca sebagai "tidak ada traffic", bukan "traffic diblokir".
Klien paling sedikit informasinya. Ia mendapat token, membuka koneksi, dan koneksi itu kembali kosong atau menggantung. Pesan errornya, kalau ada, tidak menyebut aturan keamanan.
Tempat blokir itu tercatat adalah Security Analytics milik zone, yang dirujuk dokumentasi Cloudflare untuk melihat traffic AI bot yang diblokir. Anda hanya akan melihat ke sana jika sudah mencurigai aturan keamanan. Tidak ada apa pun di alur OAuth, dashboard Access, atau Worker yang mengarahkan Anda ke sana.
Penyebabnya
Block AI bots adalah managed rule dalam proteksi bot Cloudflare. Cloudflare menjelaskannya sebagai pemblokiran verified bot yang diklasifikasikan sebagai crawler untuk pelatihan AI, ditambah sejumlah unverified bot yang berperilaku serupa. Aturan ini berjalan di edge, sebelum request apa pun mencapai Worker Anda.
Dalam kasus kami, Cloudflare mengklasifikasikan traffic MCP sebagai traffic AI bot, dan managed rule itu mencegatnya sebelum mencapai Worker. Bagian browser dari alur OAuth tetap berhasil, karena klien membuka jendela browser untuk Cloudflare Access pada koneksi pertama, dan itu adalah traffic browser biasa. Autentikasi selesai, dan request MCP yang menyusul diblokir di edge Cloudflare, sementara klien hanya memberi sedikit atau tidak ada informasi berguna tentang alasannya.
Ini tidak berarti setiap klien MCP diklasifikasikan seperti itu. MCP adalah protokol, dan kliennya bisa berupa asisten yang di-hosting, aplikasi desktop, editor, atau CLI Anda sendiri. Klasifikasi bergantung pada klien dan pada bagaimana request-nya mencapai Cloudflare. Tetapi jika OAuth berhasil sementara Worker Anda tidak melihat traffic MCP sama sekali, AI bot policies Cloudflare layak diperiksa sebelum Anda men-debug aplikasinya sendiri.
Solusinya
Matikan aturan itu pada zone yang menampung subdomain MCP:
Cloudflare Dashboard > your zone > Security > filter by Bot traffic > Block AI bots > Do not block (off)Pengaturan ini berlaku untuk seluruh zone, sehingga harus dilakukan pada setiap zone yang menampung subdomain MCP. Jika endpoint MCP Anda berada di subdomain dari domain yang juga melayani situs marketing, mematikannya di sana berarti mematikannya juga untuk situs marketing tersebut.
Cloudflare sedang mengganti pengaturan ini. Menurut dokumentasi saat tulisan ini dibuat, opsi tunggal Block AI bots dinyatakan usang mulai 15 September 2026 dan digantikan oleh Security Settings > Configure AI bot policies, yang membagi traffic AI menjadi tiga preset: Search, Agent, dan Training. Setiap preset dapat diatur ke Block (on all pages), Block on pages with ads, atau Allow (do not block). Definisi Cloudflare untuk Agent, aktivitas otomatis yang bertindak secara real-time atas nama seseorang, cukup dekat menggambarkan banyak interaksi klien MCP. Pada model policy yang lebih baru, periksa kategori Agent terlebih dahulu. Kategori mana yang perlu diizinkan bisa bergantung pada bagaimana Cloudflare mengklasifikasikan traffic klien MCP tertentu. Domain baru yang dibuat setelah tanggal itu secara default memblokir traffic Training dan Agent pada halaman yang menampilkan iklan.
Tiga jebakan di sekitarnya
Beri endpoint MCP hostname-nya sendiri. Dalam konfigurasi kami, endpoint berada di mcp.your-domain.com, bukan di belakang sebuah path pada aplikasi yang sudah ada. Ini membuat aplikasi Access, policy-nya, dan pengaturan bot lebih mudah dipahami. Hostname itu ditambahkan pada Worker sebagai custom domain kedua di Workers & Pages > your Worker > Settings > Domains & Routes > Add Custom Domain. Cloudflare membuat record DNS-nya untuk Anda.
Redirect URI berlaku per klien. Di Advanced settings aplikasi Access, Allowed redirect URIs adalah allowlist untuk klien OAuth yang diregistrasikan secara dinamis. Setiap klien MCP yang Anda hubungkan perlu callback-nya tercantum, dan daftarnya tidak sama antar produk:
https://claude.ai/api/mcp/auth_callback Claude.ai (legacy domain) and Claude Desktop
https://claude.com/api/mcp/auth_callback Claude.ai (current domain)
https://dash.cloudflare.com/* Cloudflare Access AI Controls portalUntuk menemukan callback persis sebuah klien: coba hubungkan, biarkan alurnya gagal, lalu baca parameter redirect_uri dari URL error di browser. Klien lokal yang mem-proxy koneksi dari komputer Anda juga membutuhkan Allow localhost clients dan Allow loopback clients diaktifkan.
Perubahan Access butuh waktu untuk tersebar. Menyimpan perubahan pada aplikasi Access bisa memakan waktu 30 sampai 60 detik sebelum berlaku. Uji sekali, tunggu satu menit, uji lagi sebelum mengubah hal lain, atau Anda akan men-debug kondisi yang sudah tidak ada.
Server MCP Anda terhubung tapi tidak melakukan apa pun: periksa ini secara berurutan
- Block AI bots pada zone. Security > filter by Bot traffic > Block AI bots > Do not block (off). Pada dashboard yang lebih baru: Security Settings > Configure AI bot policies, periksa Agent terlebih dahulu. Ulangi untuk setiap zone yang menampung subdomain MCP.
- Security > Analytics pada zone itu. Cari request yang diblokir ke hostname MCP. Jika ada, itu aturan keamanan, bukan kode Anda.
- Aplikasi Access mencakup hostname MCP yang benar-benar dihubungi klien.
- Managed OAuth aktif, dan redirect URI klien ada di Allowed redirect URIs. Klien localhost dan loopback diizinkan jika Anda memakai proxy lokal.
- Anda sudah menunggu 60 detik setelah perubahan Access terakhir.
- Worker memiliki subdomain MCP yang terdaftar sebagai custom domain, dan secret untuk Access audience dan JWKS sudah diatur.
- Baru sekarang, baca log Worker.
Konfigurasi lengkap yang kami pakai, termasuk secret Worker dan konfigurasi klien untuk Claude, Claude Code, dan VS Code, ada di README shrtnr di GitHub.
Tentang Oddbit
Kami adalah tim pengembang perangkat lunak senior yang berbasis di Bali, Indonesia, dengan akar di Swedia. Kami membangun perangkat lunak kustom untuk startup dan scale-up: aplikasi web, aplikasi mobile, platform SaaS, dan integrasi yang menghubungkan semuanya. Klien kami tersebar di Nordik, Eropa, dan Asia Tenggara.
Kami membangun dan merilis tools yang kami butuhkan sendiri, termasuk Tanam (CMS Firebase dengan pembuatan konten AI), paket Flutter dengan sekitar seratus ribu unduhan di pub.dev, dan plugin Firebase Genkit untuk integrasi model AI.
Jika Anda menempatkan agen AI di depan sistem Anda sendiri dan ingin semuanya terhubung dengan benar, bicaralah dengan kami. Kami lebih suka menunjukkan hasil kerja kami daripada menceritakannya.

