Tunnel MCP sedang dalam pratinjau riset. Minta akses untuk mencobanya.
Proxy membaca konfigurasinya dari /etc/mcp-gateway/config.yaml (Compose) atau ConfigMap yang di-render (Helm, diisi dari gateway.config.*).
| Bidang | Deskripsi | Default |
|---|---|---|
listen_addr | Alamat dan port untuk mendengarkan. | Wajib |
log_level | Tingkat detail logging: debug, info, warn, atau error. | info |
shutdown_timeout | Berapa lama menunggu permintaan yang sedang berjalan selama graceful shutdown. | 30s |
tunnel_domain | Domain dasar yang ditetapkan untuk tunnel. Ketika diatur, pencarian rute menghapus sufiks ini dari hostname yang masuk sehingga kunci routes dapat berupa subdomain saja (wiki). Ketika kosong, kunci routes harus berupa hostname lengkap yang persis. | Wajib ketika kunci routes berupa subdomain saja |
tls.cert_file | Path ke sertifikat TLS server. | Wajib |
tls.key_file | Path ke kunci privat TLS server. | Wajib |
routes | Map dari subdomain atau hostname lengkap ke URL upstream. Lihat Pencocokan rute. | Wajib |
upstream.allowed_ips | Rentang CIDR IPv4 atau alamat tunggal yang diizinkan untuk dihubungi oleh proxy. Saling eksklusif dengan disable_ip_validation. | Rentang privat RFC1918 |
upstream.disable_ip_validation | Menonaktifkan validasi IP upstream sepenuhnya. Saling eksklusif dengan allowed_ips. | false |
upstream.tls.ca_file | Bundle CA untuk memvalidasi TLS upstream. | Tidak ada |
upstream.tls.include_system_cas | Juga mempercayai bundle CA sistem untuk TLS upstream. | false |
Untuk rute upstream https://, atur setidaknya salah satu dari upstream.tls.ca_file atau upstream.tls.include_system_cas; jika tidak, proxy tidak memiliki trust anchor untuk sertifikat upstream.
routes adalah map string datar (map[string]string), bukan list. Proxy mencari hostname yang masuk dengan pencocokan persis terlebih dahulu, kemudian dengan menghapus sufiks tunnel_domain dan mencocokkan subdomain yang tersisa. Pencocokan hanya mempertimbangkan hostname; path permintaan dan query string diteruskan ke server MCP upstream tanpa perubahan.
Setiap nilai upstream harus persis berupa scheme://host:port. Port bersifat wajib. Menyertakan path akan ditolak saat pemuatan konfigurasi dengan pesan invalid upstream (must be scheme://host:port).
Lihat referensi Admin API MCP tunnels untuk semua endpoint, skema permintaan dan respons, serta contoh per bahasa pemrograman.
Semua endpoint MCP tunnels memerlukan bearer token dengan scope org:manage_tunnels yang diperoleh melalui Workload Identity Federation. Kunci Admin API tidak diterima.
Header yang wajib pada setiap permintaan:
| Header | Nilai |
|---|---|
Authorization | Bearer <token> (token hasil pertukaran WIF) |
anthropic-version | 2023-06-01 |
anthropic-beta | mcp-tunnels-2026-05-19 |
Komponen setup menghasilkan sertifikat yang sesuai secara otomatis. Persyaratan ini hanya berlaku jika Anda menerbitkan sertifikat melalui PKI Anda sendiri.
Unggah dengan POST /v1/organizations/tunnels/{tunnel_id}/certificates. Sebuah tunnel dapat menyimpan hingga dua sertifikat CA aktif sekaligus, yang memungkinkan rotasi tanpa downtime.
BasicConstraints ada dengan CA:TRUE, ditandai critical.SubjectKeyIdentifier ada.KeyUsage mencakup keyCertSign.Disajikan oleh proxy selama inner TLS.
AuthorityKeyIdentifier ada dan cocok dengan SubjectKeyIdentifier milik CA.<route>.<tunnel-domain>. Wildcard *.<tunnel-domain> mencakup semua rute.ExtendedKeyUsage ada, ekstensi tersebut mencakup serverAuth.Komponen setup menghasilkan CA ECDSA P-256 dengan validitas lima tahun dan sertifikat server RSA 4096-bit dengan SAN wildcard dan validitas 90 hari.
Komponen setup disertakan di dalam image mcp-proxy sebagai binary setup. Jalankan dengan docker compose run --rm setup <subcommand> (Compose) atau andalkan hook dan CronJob dari chart (Helm).
setup initMenghubungkan ke tunnel yang Anda buat di Console, menghasilkan CA dan sertifikat server, mendaftarkan CA, mengambil token tunnel, dan menulis semua output ke tujuan.
| Flag | Deskripsi | Default |
|---|---|---|
--api-url | URL dasar API Claude. Juga dibaca dari API_URL. | Wajib |
--tunnel-id | ID tunnel yang akan dihubungkan (tnl_...). Juga dibaca dari TUNNEL_ID. | Wajib |
--output | Tujuan output: dir:/path atau k8s-secret:NAME. Chart Helm meneruskan k8s-secret:<release>. | k8s-secret:mcp-tunnel (terdeteksi otomatis ketika berjalan di pod Kubernetes; wajib jika tidak) |
--cert-duration | Periode validitas sertifikat server. | 2160h (90 hari) |
--token-version | String deteksi perubahan. Nilai baru memicu rotasi token saat dijalankan ulang. Chart Helm dan contoh Compose keduanya meneruskan 1 sebagai nilai awal. | Tidak ada |
Perintah ini mengautentikasi melalui Workload Identity Federation. Perintah ini membaca ANTHROPIC_FEDERATION_RULE_ID, ANTHROPIC_ORGANIZATION_ID, ANTHROPIC_WORKSPACE_ID (opsional), dan tepat salah satu dari ANTHROPIC_IDENTITY_TOKEN_FILE atau ANTHROPIC_IDENTITY_TOKEN. Lihat referensi WIF untuk semantik terkini dari variabel-variabel ini; komponen setup menurunkan service account dari federation rule, sehingga tidak memerlukan ANTHROPIC_SERVICE_ACCOUNT_ID secara terpisah.
setup renew-certMenerbitkan sertifikat server baru yang ditandatangani oleh CA yang tersimpan. Tidak melakukan panggilan API.
| Flag | Deskripsi | Default |
|---|---|---|
--output | Tujuan output: dir:/path atau k8s-secret:NAME. Chart Helm meneruskan k8s-secret:<release>. | k8s-secret:mcp-tunnel (terdeteksi otomatis ketika berjalan di pod Kubernetes; wajib jika tidak) |
--cert-duration | Periode validitas sertifikat baru. | 2160h (90 hari) |
--renew-before | Lewati pembaruan jika sertifikat yang ada memiliki sisa durasi lebih dari nilai ini. | 0 (selalu perbarui) |
Mengatur --renew-before=720h membuat perintah ini menjadi no-op ketika masih tersisa lebih dari 30 hari validitas, sehingga aman untuk dijalankan pada jadwal tetap.
Was this page helpful?