Jawaban langsung: Jalankan MCPMCPAturan standar yang memungkinkan program AI memakai alat dan data Anda dengan izin yang jelas.Buka glosarium server lokal lewat stdio bila semua pengguna memakai klien di mesin yang sama dan tidak ada hosting yang perlu dibayar. Pilih Cloudflare Workers bila server harus jarak jauh dan dipakai Claude connector atau ChatGPT. Free memberi 100.000 request per hari, Paid mulai USD 5 per bulan. Pilih VPS bila server harus berada di jaringan yang sama dengan sistem sumber, atau Anda sudah mengelola server sendiri. Ketiganya memakai server yang sama; yang berbeda hanya transport dan pengerasan.

Kondisi utama: langkah pada artikel ini mengikuti spesifikasi transport MCP revisi 2026-07-28 dan dokumentasi Cloudflare Agents yang diperbarui Juni sampai Juli 2026. Harga Workers memakai halaman harga 28 Agustus 2026. Batas: harga VPS dan harga APIAPIPintu resmi yang dipakai 2 sistem untuk saling mengirim data, tanpa orang menyalin data secara manual.Buka glosarium model tidak ditulis karena tidak dibuka hari ini, jadi hitung itu terpisah dengan penyedia Anda. Artikel ini tidak membahas McpAgent (Durable Object) karena statusnya deprecated. Perintah shell ditulis generik; nama proyek dan domain hanya contoh.

Kami menulis panduan ini pada 13 September 2026 dari spesifikasi transport MCP, dokumentasi Cloudflare Agents, dan halaman harga Cloudflare Workers. Pada sistem kami sendiri, 3 MCP server berjalan di Cloudflare Workers dengan Streamable HTTP.

Masalah: server jalan di laptop, tetapi tim butuh dari 3 tempat

MCP server yang Anda uji di laptop berjalan lewat stdio: klien menjalankannya sebagai proses anak, dan server itu mati begitu laptop tertutup atau klien berhenti. Ini bekerja untuk 1 orang, tetapi tim yang memakai ChatGPT atau Claude connector butuh 1 alamat yang selalu hidup, bukan proses di laptop 1 orang. Latar belakang MCP ada di artikel apa itu MCP, dan istilah MCP server dijelaskan di glosarium MCP.

Masalah kedua muncul begitu tim pindah ke VPS tanpa pengerasan. Header Origin tidak diperiksa, dan token dikirim tanpa validasi audience. Server bisa dipanggil siapa saja yang menemukan alamatnya. Langkah 3 dan 4 pada artikel ini menutup celah itu.

3 tempat menjalankan MCP server

Spesifikasi transport MCP netral terhadap penyedia hosting: ada 2 transport standar, stdio dan Streamable HTTP, dan keduanya bisa dipasang di mana saja. Sumber: spesifikasi transport MCP. Praktiknya ada 3 tempat yang lazim dipakai untuk 1 server yang sama.

Tiga tempat menjalankan MCP server: lokal lewat stdio di laptop, Cloudflare Workers stateless lewat Streamable HTTP, dan VPS di balik reverse proxy dengan TLS
Lokal (1) tanpa biaya hosting tetapi hanya untuk klien di mesin yang sama. Workers (2) untuk klien jarak jauh. VPS (3) bila server harus dekat sistem sumber.

stdio menjalankan server sebagai proses anak klien; stdout hanya boleh membawa pesan MCP. Sumber: spesifikasi transport stdio. Cloudflare mendukung server jarak jauh lewat Streamable HTTP dan menyatakan SSE untuk MCP jarak jauh sudah deprecated; server baru memakai handler yang stateless. Sumber: dokumentasi Cloudflare Agents.

PilihanTransportSiapa menjalankanAutentikasiBiaya hosting yang terbacaCocok bila
Lokal (stdio)stdioKlien di mesin pengguna, sebagai proses anakKredensial dari environmentTidak ada biaya hostingSemua pengguna memakai Claude Desktop, Claude Code, OpenClaw, atau Hermes AgentAgent AIProgram AI yang mengerjakan langkah pekerjaan sendiri, misalnya membaca pesan, menyiapkan balasan, lalu mencatat hasilnya.Buka glosarium di mesin sendiri
Cloudflare WorkersStreamable HTTPCloudflare, stateless per requestAPI key (Bearer) atau OAuth 2.1 lewat templatFree 100.000 request/hari, 10 ms CPU; Paid USD 5/bulan minimumKlien jarak jauh (Claude connector, ChatGPT, Gemini API); tanpa server sendiri untuk dikelola
VPS sendiriStreamable HTTPTim Anda, di balik reverse proxy dengan TLSAPI key atau OAuth 2.1Dibayar terpisah ke penyedia; harga tidak dibaca hari iniServer harus 1 jaringan dengan sistem sumber, atau tim sudah mengelola server

Riwayat 5 revisi spesifikasi dan pergantian dari HTTP+SSE ke Streamable HTTP sudah kami tulis di artikel generasi transport pada 5 versi MCP. Artikel ini tidak mengulanginya.

Sebelum mulai langkah, siapkan hal berikut.

  • Akses ke sistem sumber yang ingin disambungkan, termasuk kredensial uji.
  • 1 klien MCP yang sudah terpasang untuk uji: Claude Desktop, Claude Code, atau OpenClaw.
  • Akun Cloudflare bila memilih Workers, atau akses root VPS bila memilih server sendiri.
  • 1 identitas uji yang boleh dipakai untuk mencoba tool baca dan tool tulis.

Enam langkah berikut membawa server dari uji lokal sampai siap dibuka untuk tim.

Langkah 1: Pilih transport dari klien yang dipakai

Klien yang menghubungi server dari jaringan lain butuh Streamable HTTP: Claude connector, ChatGPT, dan Gemini API termasuk golongan ini. Klien yang berjalan di mesin yang sama dengan server bisa memakai stdio: Claude Desktop, Claude Code, OpenClaw, dan Hermes Agent semuanya mendukung stdio. Rincian dukungan tiap klien, termasuk transport, autentikasi, dan batas pemakaian, ada di artikel klien MCP 2026.

Bukti langkah ini: Anda punya 1 daftar klien dengan transport yang didukung, diambil dari dokumentasi resmi tiap klien, bukan dari asumsi.

Langkah 2: Bangun server stateless era modern

Revisi 2026-07-28 menghapus sesi protokol dan handshake initialize; setiap request membawa versi dan capability pada _meta, dan server wajib menjawab RPC server/discover. Sumber: changelog spesifikasi MCP dan halaman versioning MCP.

State bisnis tidak lagi disimpan di sesi protokol; MCP menyimpannya sebagai handle eksplisit yang dikirim sebagai argumen tool, sehingga server lebih mudah di-scale dan di-proxy. Sumber: spesifikasi tool MCP, bagian Stateful Tools.

SDK TypeScript v2 memisahkan paket @modelcontextprotocol/server 2.0.0 (terbit 27 Juli 2026) dari paket lama @modelcontextprotocol/sdk 1.30.0. Sumber: registry npm @modelcontextprotocol/server. Pada sistem kami, 3 MCP server memakai createMcpHandler dari SDK v2.

Bukti langkah ini: respons server/discover menyebut versi 2026-07-28 dan daftar capability server.

Langkah 3: Pasang autentikasi sesuai transport

Transport stdio mengambil kredensial dari environment; spesifikasi menyatakan implementasi stdio sebaiknya tidak mengikuti spesifikasi otorisasi HTTP, dan membaca kredensial dari environment saja. Streamable HTTP mengirim token lewat header Authorization: Bearer pada setiap request, dan token dilarang berada di query string. Sumber: spesifikasi otorisasi MCP.

Bila klien membutuhkan OAuth 2.1, seperti Claude connector, server menerbitkan Protected Resource Metadata. Server wajib memvalidasi audience token. Token milik pihak lain tidak boleh diterima atau diteruskan. Cloudflare menyediakan templat remote-mcp-authless untuk server tanpa auth dan remote-mcp-github-oauth untuk OAuth lewat OAuthProvider. Sumber: panduan remote MCP server Cloudflare.

Bukti langkah ini: permintaan tanpa token dijawab kode status 401.

Langkah 4: Keraskan HTTP di Workers dan di balik reverse proxy

Server Streamable HTTP wajib memvalidasi header Origin dan menjawab 403 untuk Origin asing. Saat berjalan lokal, server sebaiknya mengikat ke 127.0.0.1 agar tidak kena DNS rebinding. Sumber: spesifikasi Streamable HTTP.

Streamable HTTP di balik reverse proxy: klien mengirim POST dengan 3 header wajib dan Bearer, proxy memeriksa Origin dan mematikan buffering, server stateless menjawab 1 JSON atau 1 stream SSE
Tiga header (1) harus cocok dengan body; bila tidak, error -32020 (4). Origin asing ditolak 403 (2). Buffering dimatikan (3) agar stream tidak tertahan.

Setiap POST membawa 3 header wajib: MCP-Protocol-Version, Mcp-Method, dan Mcp-Name. Mcp-Name berlaku untuk tools/call, resources/read, dan prompts/get. Nilai header harus sama dengan body; bila tidak, server menjawab kode -32020 (HeaderMismatch). Kode -32022 menandai versi protokol yang tidak didukung. Sumber: changelog spesifikasi MCP.

Di belakang nginx, matikan buffering dengan X-Accel-Buffering: no, atau respons stream tertahan sampai koneksi selesai. Kontrol autentikasi dan pengerasan yang lebih lengkap, termasuk audit log dan uji prompt injection, ada di artikel keamanan MCP server.

Bukti langkah ini: uji dari Origin asing dijawab 403; header yang salah memicu kode -32020.

Langkah 5: Deploy ke Workers, VPS, atau jalankan lokal

Server yang sama bisa dijalankan di 3 tempat; bedanya hanya perintah deploy dan pengerasan jaringan di depannya.

Cloudflare Workers

npm create cloudflare@latest -- <nama> --template=cloudflare/ai/demos/remote-mcp-authless membuat server tanpa autentikasi; ganti templat menjadi remote-mcp-github-oauth untuk OAuth. Sumber: panduan remote MCP server Cloudflare. Pakai createMcpHandler yang stateless; McpAgent (Durable Object) berstatus deprecated dan feature-frozen, jadi jangan memulai proyek baru di atasnya. Sumber: dokumentasi handler API Cloudflare Agents.

VPS sendiri

Jalankan proses Node di belakang reverse proxy dengan TLS, lalu terapkan pemeriksaan Origin dan autentikasi dari Langkah 3 dan 4. Harga VPS tidak kami tulis karena tidak dibuka hari ini; itu dibayar terpisah ke penyedia Anda. Pola pengerasan server yang lebih lengkap sudah kami tulis untuk OpenClaw di VPS, dan langkahnya sama untuk MCP server: tutorial mengamankan OpenClaw di VPS.

Lokal (stdio)

Claude Desktop menjalankan server lokal lewat berkas konfigurasi stdio. Klien wajib menampilkan perintah lengkap sebelum menjalankannya, karena server lokal berjalan dengan hak akses yang sama dengan klien. Sumber: dokumentasi cara membangun MCP server dan praktik keamanan MCP.

MCP server lokal sebagai subprocess Claude Desktop: stdin dan stdout hanya untuk pesan MCP, log ke stderr, kredensial dari environment
Host (1) menjalankan server sebagai subprocess (2). Pesan lewat stdin/stdout (3); log lewat stderr (4). Menulis log ke stdout memutus koneksi.

Tulis log ke stderr, bukan stdout; menulis ke stdout memutus koneksi, karena stdout hanya boleh membawa pesan MCP.

Bukti langkah ini: tools/list berhasil dipanggil dari 1 klien uji, pada ketiga tempat yang Anda pilih.

Langkah 6: Pantau permintaan dan batasi biaya

Workers Free memberi 100.000 request per hari dan 10 ms CPU per invokasi. Paid mulai USD 5 per bulan. Paket itu sudah termasuk 10 juta request dan 30 juta ms CPU per bulan. Tambahan: USD 0,30 per juta request dan USD 0,02 per juta ms CPU. Tanpa biaya keluar data. Sumber: halaman harga Cloudflare Workers.

Batas CPU per invokasi paling banyak 5 menit, dan defaultnya 30 detik; set batas ini agar tagihan tidak melonjak saat 1 tool berjalan lama. Klien Claude memberi waktu 240 detik untuk 1 panggilan tool di Claude.ai dan Claude Desktop, jadi tool harus selesai sebelum batas itu. Sumber: dokumentasi konektor Claude.

Terapkan juga rate limit per pemanggil. Pada sistem kami sendiri, batas ini mencegah 1 pemanggil memakai jatah permintaan semua pengguna lain.

Bukti langkah ini: dasbor Workers menampilkan jumlah request harian dan ms CPU per invokasi.

Contoh: deploy server stok ke Workers dan hitung Free tier

Simulasi berikut memakai data dummy; nama domain dan jumlah request adalah contoh, bukan data klien nyata.

Input (yang dilakukan)Tercatat (di Workers dan server)Output (yang terlihat)
Deploy dari templat remote-mcp-authless, lalu tambah pemeriksaan BearerWorker aktif di domain contoh; server/discover menjawab versi 2026-07-28tools/list dari Claude connector berhasil
Uji tanpa tokenServer menjawab 401 dengan WWW-AuthenticateKlien meminta token
Uji dari halaman web asing (Origin berbeda)Origin ditolak 403Permintaan gagal seperti yang diharapkan
Hari kerja pertama: 3 klien, 1.200 requestDasbor: 1.200 request; CPU rata-rata di bawah 10 md; batas Free 100.000/hariTetap di Free; catatan: naik ke Paid bila lewat 100.000 request/hari

Catatan: nama domain, jumlah request, dan waktu CPU adalah data dummy. Batas Free dan harga Paid memakai halaman harga Workers 28 Agustus 2026.

Checklist sebelum membuka server ke tim

  1. Transport dipilih dari daftar klien: stdio atau Streamable HTTP. Pemilik: kepala IT. Bukti: tabel klien dan transport.
  2. server/discover menjawab versi 2026-07-28 dan capability. Pemilik: developer. Bukti: respons discover.
  3. Tanpa token dijawab 401; token milik server lain juga dijawab 401. Pemilik: developer. Bukti: 2 hasil uji.
  4. Origin asing dijawab 403; server lokal terikat ke 127.0.0.1. Pemilik: developer. Bukti: hasil uji Origin.
  5. Di belakang nginx: buffering mati, dan 3 header wajib diteruskan apa adanya. Pemilik: DevOps. Bukti: konfigurasi proxy dan tidak munculnya kode -32020.
  6. stdio: log ke stderr; tidak ada tulisan lain di stdout. Pemilik: developer. Bukti: uji koneksi dari Claude Desktop.
  7. Batas CPU per invokasi dan rate limit per pemanggil sudah tertulis. Pemilik: DevOps. Bukti: berkas konfigurasi.
  8. Kriteria berhenti: bila klien utama hanya bisa memakai SSE lama, jangan deploy dulu; SSE sudah deprecated pada spesifikasi dan pada Cloudflare.

Pertanyaan yang sering diajukan

Apakah MCP server harus di-hosting? Tidak. Transport stdio menjalankan server sebagai proses anak klien di mesin pengguna, tanpa hosting dan tanpa biaya server terpisah.

Berapa biaya Cloudflare Workers untuk MCP server? Free memberi 100.000 request per hari dan 10 ms CPU per invokasi. Paid mulai USD 5 per bulan, sudah termasuk 10 juta request dan 30 juta ms CPU per bulan.

Kenapa SSE tidak dipakai lagi? Streamable HTTP menggantikan HTTP+SSE sejak revisi 2025-03-26, dan SSE berstatus deprecated pada revisi 2026-07-28. Cloudflare dan Gemini API tidak memakainya untuk server baru.

Apakah McpAgent Cloudflare masih dianjurkan? Tidak. McpAgent (Durable Object) berstatus deprecated dan feature-frozen; Cloudflare menganjurkan createMcpHandler yang stateless untuk server baru.

Bagaimana MCP server di VPS menangani stream di balik nginx? Matikan buffering dengan header X-Accel-Buffering: no, teruskan 3 header wajib Streamable HTTP apa adanya, dan validasi header Origin sebelum memproses request.

Bisakah server yang sama dipakai lokal dan jarak jauh? Bisa. Logika tool tetap sama; yang berbeda hanya transport dan cara autentikasi dipasang di depan server itu.

Langkah berikutnya

Pilihan hosting menentukan pengerasan yang perlu dipasang, bukan tool yang bisa dijalankan server itu. Batas yang masih berlaku: artikel ini tidak menulis harga VPS atau harga API model, karena tidak dibuka hari ini; hitung itu terpisah dengan penyedia Anda. Jika tim Anda ingin kami memasang server, memilih transport, dan mengatur hosting sekaligus, layanan Jasa Pembuatan MCP Server mencakup paket Starter, Standard, dan Custom. Untuk mulai, Kirim kebutuhan atau Jadwalkan konsultasi gratis.

Sumber