LocalCan
resmiMemberikan agen AI URL publik (tunnel) untuk localhost, inspeksi lalu lintas HTTP langsung, publikasi snapshot, dan kontrol akses.
Apa yang bisa Anda lakukan dengan LocalCan MCP?
- Periksa lalu lintas yang ditangkap — Minta asisten Anda untuk mendaftar pertukaran terbaru dengan
list_trafficatau ambil permintaan/respons lengkap melaluiget_exchangedalam format markdown, curl, atau HAR. - Kelola tunnel publik — Buat, jeda, lanjutkan, atau hapus URL Publik dengan alat seperti
create_public_urldanpause_public_url, termasuk mengatur header permintaan kustom. - Terbitkan dan segarkan snapshot — Terapkan folder sebagai Snapshot yang dapat dibagikan dengan
publish_snapshot, lalu perbarui nanti denganupdate_snapshotagar tautan pratinjau tetap terkini. - Kontrol akses dan komentar — Lindungi URL dengan kata sandi menggunakan
set_password, tinjau utas komentar melaluilist_comments, dan balas atau selesaikan langsung dari asisten Anda. - Periksa status tunnel dan layanan — Gunakan
get_statusuntuk memastikan penangkapan berjalan, ataulist_public_urlsuntuk melihat tautan mana yang aktif, dijeda, atau menyajikan snapshot.
Dokumentasi
Server MCP
Jalankan server Model Context Protocol milik LocalCan dan hubungkan ke host MCP Anda, lengkap dengan referensi lengkap alat dan opsi.
localcan mcp menjalankan server Model Context Protocol melalui stdio. Host MCP (Claude Code, Codex, Cursor, Claude Desktop, dan lainnya) meluncurkannya dan memanggil alat-alat LocalCan untuk membaca lalu lintas yang ditangkap, mengelola Public URL (tunnel), dan menerbitkan Snapshot. LocalCan harus berjalan agar alat-alat dapat mengembalikan data, jadi buka aplikasi desktop atau jalankan localcan start -d terlebih dahulu.
Alat-alat
Server ini menyediakan dua puluh enam alat. Pembacaan berfungsi langsung tanpa pengaturan tambahan. Enam belas alat yang mengubah sesuatu memerlukan akses tulis, yang secara bawaan nonaktif (lihat opsi di bawah). Membuat atau menambahkan Public URL memerlukan lisensi aktif. Menerbitkan Snapshot dan melindungi URL dengan kata sandi memerlukan paket berlangganan, sehingga lisensi permanen ditolak meskipun masih dapat membuka Public URL. Tanpa lisensi, alat-alat yang dibatasi mengembalikan pesan aktivasi yang jelas, sementara menjeda, melanjutkan, dan menghapus URL yang sudah ada tetap berfungsi.
Lalu lintas:
| Alat | Fungsinya | Parameter |
|---|---|---|
get_status | Melaporkan apakah penangkapan aktif dan berapa banyak lalu lintas yang di-buffer. | tidak ada |
enable_capture | Mengaktifkan penangkapan. Penangkapan nonaktif secara bawaan dan diatur ulang saat daemon dimulai ulang. | tidak ada |
list_traffic | Menampilkan daftar pertukaran terbaru, yang terbaru terlebih dahulu. | last (bawaan 20), host substring, project id, method, status (kode persis atau kelas seperti 5xx) |
get_exchange | Mengembalikan satu pertukaran berdasarkan id. | id wajib (id lengkap atau awalan unik apa pun), format salah satu dari markdown, curl, http, har, json (bawaan markdown), include_response (bawaan true) |
Pertukaran adalah permintaan yang diteruskan LocalCan ke backend Anda, bukan salinan persis byte-demi-byte dari permintaan asli klien. Lihat Lalu lintas untuk model datanya.
Public URL:
| Alat | Fungsinya | Parameter |
|---|---|---|
list_services | Menampilkan daftar layanan yang dilayani LocalCan, masing-masing dengan pegangan <project>/<service>, target lokalnya, dan jumlah endpoint. | tidak ada |
list_public_urls | Menampilkan daftar Public URL Anda, termasuk yang dijeda, masing-masing dengan statusnya (aktif, dijeda, error, memulai, nonaktif) dan apa yang dilayaninya (live, snapshot, none). Setiap baris juga membawa access: none, password, link, atau nama kebijakan tim. URL yang diparkir yang melayani Snapshot terbaca status dijeda tetapi melayani snapshot, jadi jawablah "apakah tautannya aktif?" berdasarkan serving, bukan status. | tidak ada |
get_public_url_status | Melaporkan status satu Public URL, apa yang dilayaninya (live, snapshot, none), dan perlindungan access-nya, dengan kosakata yang sama seperti daftar, plus target lokalnya dan aturan header permintaan apa pun. | url wajib |
create_public_url | Membuat Public URL untuk port lokal dalam proyek baru dan mengembalikan alamat yang ditetapkan, seperti my-app-12.localcan.dev. Memerlukan beberapa detik. Jika tunnel ditolak (misalnya batas Public URL paket Anda) atau waktu habis, upaya dibatalkan dan tidak ada yang tertinggal. Untuk tautan yang tetap dapat diakses setelah mesin Anda offline, tambahkan Snapshot dengan add_snapshot. Untuk aplikasi yang dilayani sebagai host virtual, berikan host dan aturan Host di headers (lihat di bawah). | port wajib, name opsional (membentuk alamat), protocol http atau tcp (bawaan http), host opsional (bawaan localhost), headers opsional (aturan header permintaan, masing-masing {name, value, mode?, enabled?}) |
add_public_url | Menambahkan Public URL ke layanan yang sudah Anda konfigurasikan. Protokol mengikuti target layanan, sehingga target tcp:// mendapatkan tunnel TCP. Pembatalan yang sama saat gagal seperti create. | Pegangan service wajib |
pause_public_url | Membawa Public URL offline sambil mempertahankan alamatnya, sehingga dapat dilanjutkan nanti. Alamat *.localcan.dev yang dibuat tetap dicadangkan selama 7 hari saat dijeda, domain kustom tidak pernah kedaluwarsa. | url wajib |
resume_public_url | Membawa Public URL yang dijeda kembali online di alamat yang sama. | url wajib |
remove_public_url | Menghapus Public URL secara permanen. Alamat yang dibuat dilepaskan, domain kustom tetap milik Anda dan dapat ditambahkan lagi. Menghapus endpoint terakhir layanan juga menghapus layanan dan proyek yang dikosongkan. Untuk mempertahankan alamat tetapi berhenti melayani Snapshot, gunakan remove_snapshot. Ditandai destruktif, sehingga host biasanya meminta konfirmasi. | url wajib |
set_public_url_headers | Mengganti aturan header permintaan pada Public URL, yaitu header yang diatur LocalCan sebelum diteruskan ke aplikasi Anda. Berikan daftar lengkap, daftar kosong menghapusnya. get_public_url_status melaporkan aturan dalam bentuk yang sama (mode set, append, atau remove, dan enabled), sehingga daftar yang dibaca di sana dapat diedit dan ditulis kembali. | url dan headers wajib |
Aplikasi yang dilayani sebagai host virtual (situs Laravel Herd atau Valet di myapp.test, nginx server_name) perlu melihat nama hostnya sendiri, dan LocalCan meneruskan nama host publik secara bawaan. Berikan host dan aturan Host, headers: [{"name": "Host", "value": "{{target_host}}"}], dan aplikasi melayani situs yang tepat. Templat nilai adalah yang dari Header.
Snapshot (lihat Snapshot):
| Alat | Fungsinya | Parameter |
|---|---|---|
publish_snapshot | Menerbitkan folder sebagai Snapshot di Public URL baru, sehingga tetap dapat diakses setelah mesin Anda offline. Arahkan ke output statis yang sudah dibangun jika memungkinkan, atau ke akar proyek agar LocalCan membangunnya (dependensi harus sudah terinstal). Mengembalikan alamat baru. Selalu membuat URL baru, jadi untuk menyegarkan pratinjau yang ada gunakan update_snapshot. | path wajib (absolut), name opsional (membentuk alamat) |
add_snapshot | Menambahkan Snapshot ke Public URL yang sudah Anda miliki, sehingga tautan yang ada tetap melayani offline. Menunjuk ke update_snapshot jika URL sudah memilikinya. | url dan path wajib |
update_snapshot | Menerbitkan ulang Snapshot di Public URL. Hapus path untuk membangun ulang dari sumber yang sama, atau berikan untuk menunjuk ulang ke folder lain. Menunjuk ke add_snapshot jika URL tidak memilikinya. | url wajib, path opsional |
remove_snapshot | Menghapus Snapshot dari Public URL. URL tetap dicadangkan dan terus melayani live saat tunnel Anda aktif. Ditandai destruktif. | url wajib |
get_snapshot_status | Melaporkan Snapshot Public URL: folder sumbernya, kapan diterbitkan, apakah sumber berubah sejak saat itu (basi), dan apakah URL melayani live atau snapshot saat ini. Juga membawa komentar ulasan padanya (status dan jumlah) dan, setelah komentar aktif, nomor versi Snapshot. | url wajib |
Kontrol akses (lihat Kontrol akses):
| Alat | Fungsinya | Parameter |
|---|---|---|
set_password | Melindungi Public URL dengan kata sandi sehingga hanya orang yang memiliki kata sandi yang dapat membukanya. Diberlakukan di server LocalCan, sehingga juga mencakup Snapshot di URL tersebut. Menghasilkan kata sandi yang kuat kecuali Anda memberikannya, dan mengembalikannya agar dapat Anda bagikan. Memerlukan paket berlangganan. | url wajib, password opsional (hapus untuk menghasilkan satu) |
clear_access | Menghapus perlindungan kata sandi, membuat URL publik kembali. Tidak menghapus URL atau Snapshot-nya. Ditandai destruktif, sehingga host biasanya meminta konfirmasi. | url wajib |
get_access_status | Melaporkan perlindungan Public URL dan mengembalikan kata sandi saat ini jika dilindungi kata sandi. Kata sandi tidak pernah dikembalikan oleh list_public_urls, hanya di sini. | url wajib |
Komentar (komentar ulasan yang ditinggalkan peninjau pada Snapshot, lihat Komentar):
| Alat | Fungsinya | Parameter |
|---|---|---|
list_comments | Menampilkan daftar utas komentar pada Snapshot Public URL beserta balasannya. Setiap utas membawa jalur halaman, jangkar (pemilih CSS dan posisi pin dalam elemen tersebut), viewport dan browser peninjau, serta versi Snapshot tempat komentar ditinggalkan. Tidak pernah menandai apa pun sebagai terbaca. | url wajib, status open, resolved, atau all (bawaan open), page jalur, version nomor |
reply_comment | Mengirim balasan ke dalam utas atas nama akun Anda. Peninjau pada utas menerimanya melalui email kecuali notifikasi balasan nonaktif untuk tim atau mereka berhenti berlangganan. Hanya balasan, utas baru disematkan di halaman. | url, comment_id, body wajib |
resolve_comment | Menandai utas sebagai selesai, termasuk balasannya. | url dan comment_id wajib |
reopen_comment | Membuka kembali utas yang telah diselesaikan. | url dan comment_id wajib |
set_comments | Mengalihkan komentar pada Snapshot: aktif, dijeda (utas yang ada tetap dapat dibaca, tidak ada yang baru), atau nonaktif. Memerlukan URL yang dilindungi dan paket berlangganan. | url dan state wajib |
Putaran umpan balik
Alat-alat dirangkai menjadi satu putaran yang dapat dijalankan agen sendiri: list_comments untuk membaca utas yang terbuka, edit sumbernya, update_snapshot untuk menerbitkan versi baru, lalu reply_comment dan resolve_comment per utas. Komentar terbawa ke versi baru, sehingga peninjau melihat balasan pada pin yang sama. Server memberi tahu agen hal ini sendiri. Instruksi MCP-nya, yang ditambahkan host ke prompt agen, menjelaskan putaran, pengaturan putaran ulasan (publish_snapshot, set_password, set_comments), dan resep host virtual. Dua hal yang tidak dapat dilakukan agen: memulai utas (peninjau menyematkannya di halaman) dan menandai utas sebagai terbaca (belum terbaca adalah status kotak masuk Anda sendiri di aplikasi).
Menghubungkan agen
Cara Anda menghubungkan bergantung pada cara agen berjalan. Agen terminal (Claude Code, Codex) mewarisi PATH shell Anda, sehingga perintah localcan polos berfungsi. Aplikasi GUI (Cursor, Claude Desktop, VS Code, dan lainnya) tidak memuat PATH shell Anda, sehingga mereka memerlukan jalur absolut ke biner, misalnya /Users/you/.localcan/bin/localcan. Pengaturan aplikasi desktop dapat menyalin konfigurasi siap pakai dengan jalur yang benar terisi, yang juga merupakan rute yang andal di Windows.
Claude Code
claude mcp add --scope user localcan -- localcan mcp
Bendera --scope user mendaftarkan server untuk setiap proyek. Hapus untuk mendaftarkannya hanya di proyek saat ini.
Codex
codex mcp add localcan -- localcan mcp
Ini menulis server ke ~/.codex/config.toml. Untuk aplikasi desktop Codex atau ekstensi IDE, berikan jalur absolut sebagai pengganti localcan.
Cursor, Claude Desktop, dan Windsurf
Ini berbagi format mcpServers yang sama:
{
"mcpServers": {
"localcan": {
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
Tambahkan ke file yang tepat, lalu muat ulang:
- Cursor:
~/.cursor/mcp.json, lalu aktifkan server di Pengaturan. - Claude Desktop:
claude_desktop_config.json(Pengaturan, Pengembang, Edit Konfigurasi), lalu keluar dan luncurkan ulang. - Windsurf:
~/.codeium/windsurf/mcp_config.json, lalu segarkan panel MCP.
VS Code
VS Code (mode agen Copilot) menggunakan kunci servers dengan tipe eksplisit. Tambahkan ini ke .vscode/mcp.json di ruang kerja Anda:
{
"servers": {
"localcan": {
"type": "stdio",
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
Anda juga dapat menjalankan code --add-mcp dengan objek server yang sama.
Zed
Zed menggunakan context_servers di settings.json-nya:
{
"context_servers": {
"localcan": {
"source": "custom",
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
Anda juga dapat menambahkannya dari pengaturan Panel Agen.
Akses agen, redaksi, dan akses tulis
Ketiganya dikontrol di aplikasi desktop di bawah Pengaturan (bagian "AI Agents (MCP)"), atau dari terminal: localcan mcp enable / disable untuk akses agen, localcan mcp redact <on|off> untuk redaksi, localcan mcp access <read_only|read_write> untuk akses tulis, dan localcan mcp status untuk melihat status saat ini.
- Akses agen aktif secara default. Matikan untuk menghentikan agen menggunakan LocalCan sama sekali. Server tetap berjalan, tetapi setiap alat mengembalikan pesan "akses dinonaktifkan" yang jelas sampai Anda menyalakannya kembali.
- Redaksi aktif secara default untuk agen. Header sensitif (Authorization, cookie, kunci API) dihapus dari respons alat. URL dan badan tidak diredaksi. Matikan untuk mengizinkan agen Anda sendiri menerima nilai mentah.
- Akses tulis nonaktif secara default. Membaca berfungsi tanpanya, tetapi alat tulis mengembalikan pesan hanya-baca yang jelas sampai Anda menyalakannya, di aplikasi ("Izinkan agen membuat dan mengubah URL Publik") atau dengan
localcan mcp access read_write. Menyalakan akses agen tidak memberikan akses tulis. Keduanya adalah sakelar terpisah. Setiap panggilan tulis dicatat ke output diagnostik server, yang ditangkap oleh host Anda, sehingga Anda memiliki catatan tentang apa yang diubah agen. Kata sandi yang diteruskan keset_passworddisembunyikan dalam log tersebut.
Saat alat menolak
- Setiap alat menghasilkan kesalahan dengan pesan koneksi daemon: LocalCan tidak berjalan. Buka aplikasi desktop atau jalankan
localcan start -d. list_traffictidak mengembalikan apa pun: penangkapan nonaktif (nonaktif secara default dan diatur ulang saat daemon dimulai ulang). Jalankanlocalcan traffic enableatau biarkan agen memanggilenable_capture.- "Akses MCP dinonaktifkan": akses agen dimatikan. Jalankan
localcan mcp enableatau alihkan sakelar Pengaturan. - "MCP hanya-baca": alat mengubah sesuatu dan akses tulis nonaktif. Jalankan
localcan mcp access read_writeatau aktifkan sakelar Pengaturan. - "URL publik memerlukan lisensi": membuat dan menambahkan URL Publik memerlukan lisensi aktif. Aktifkan satu di aplikasi atau dengan
localcan license activate <key>. - "perlu paket berlangganan": Snapshot dan Kontrol akses hanya untuk berlangganan. Lisensi abadi dapat membuka URL Publik tetapi tidak dapat menerbitkan Snapshot atau mengatur kata sandi. Berlangganan dari dasbor Anda, lalu coba lagi.
- "sudah memiliki snapshot" atau "belum memiliki snapshot": gunakan alat yang disebutkan dalam pesan.
add_snapshotmelampirkan Snapshot ke URL yang tidak memilikinya,update_snapshotmenyegarkan yang sudah memilikinya. - "Batas Snapshot tercapai": paket Anda membatasi berapa banyak URL Publik yang dapat melayani Snapshot sekaligus. Pesan mencantumkan URL yang sudah menggunakan slot, yang dapat Anda segarkan dengan
update_snapshotalih-alih menerbitkan yang baru. - "Komentar memerlukan URL yang dilindungi":
set_commentsdipanggil pada URL tanpa Kontrol akses. Jalankanset_passwordterlebih dahulu. - "Akun Anda tidak memiliki nama tampilan": balasan memerlukan nama untuk diposting. Atur di dasbor, atau balas sekali di halaman Snapshot setelah membukanya sebagai pemilik dari aplikasi.
- Host menampilkan server sebagai gagal atau tanpa alat: aplikasi GUI tidak dapat menemukan
localcandi PATH. Gunakan jalur absolut, paling mudah melalui Pengaturan salin konfigurasi.