LocalCan
官方為AI代理提供localhost的公開URL(隧道)、即時HTTP流量檢查、快照發布和存取控制。
你可以用 LocalCan MCP 做什麼?
要求你的AI助手檢查捕獲的流量、管理公開URL,並通過LocalCan的MCP伺服器發布離線快照。
- 檢查捕獲的流量 — 要求你的助手使用
list_traffic列出最近的HTTP交換,並通過get_exchange查看任何交換的詳細信息。 - 創建和管理公開URL — 讓你的助手使用
create_public_url創建隧道,使用list_public_urls列出現有的,並暫停或恢復它們。 - 發布離線快照 — 要求你的助手使用
publish_snapshot將文件夾發布為快照,這樣當你的機器離線時鏈接仍然可達。 - 用密碼保護URL — 讓你的助手使用
set_password為公開URL設置密碼保護,並通過get_access_status檢查保護狀態。 - 檢查捕獲狀態 — 要求你的助手使用
get_status驗證捕獲是否開啟以及緩衝了多少流量。
文件
MCP 伺服器
執行 LocalCan 的 Model Context Protocol 伺服器,並將其接入你的 MCP 主機,附上工具與開關的完整參考。
localcan mcp 透過 stdio 執行 Model Context Protocol 伺服器。MCP 主機(Claude Code、Codex、Cursor、Claude Desktop 等)會啟動它,並呼叫 LocalCan 的工具來讀取擷取的流量、管理 Public URL(隧道)以及發布 Snapshots。LocalCan 必須正在執行,工具才能回傳資料,因此請先開啟桌面應用程式,或先執行 localcan start -d。
工具
伺服器提供二十個工具。讀取功能開箱即用。其中十一個會變更狀態的工具需要寫入權限,而寫入權限預設為關閉(請參閱下方的開關)。建立或新增 Public URL 需要有效的授權。發布 Snapshot 以及為 URL 設定密碼保護需要訂閱方案,因此永久授權即使仍可開啟 Public URL,也無法使用這些功能。未授權時,受限工具會回傳明確的啟用訊息,而暫停、恢復和移除既有 URL 仍可正常運作。
流量:
| 工具 | 功能 | 參數 |
|---|---|---|
get_status | 回報擷取是否開啟,以及緩衝了多少流量。 | 無 |
enable_capture | 開啟擷取。擷取預設為關閉,且會在 daemon 重新啟動時重設。 | 無 |
list_traffic | 列出最近的交換記錄,最新的在前。 | last(預設 20)、host 子字串、project id、method、status(確切代碼或如 5xx 的類別) |
get_exchange | 依 id 回傳單一交換記錄。 | 必填 id(完整 id 或任何唯一前綴)、format 為 markdown、curl、http、har、json 之一(預設 markdown)、include_response(預設 true) |
交換記錄是 LocalCan 轉發到你後端的請求,而非用戶端原始請求的逐位元組副本。資料模型請參閱 Traffic。
Public URLs:
| 工具 | 功能 | 參數 |
|---|---|---|
list_services | 列出 LocalCan 提供的服務,每個服務都有 <project>/<service> 代號、其本機目標和端點數量。 | 無 |
list_public_urls | 列出你的 Public URLs,包括已暫停的,每個都帶有其狀態(active、paused、error、starting、inactive)以及服務內容(live、snapshot、none)。每一列也帶有 access:none、password、link 或團隊政策名稱。停放且服務 Snapshot 的 URL 會顯示狀態為 paused 但服務內容為 snapshot,因此回答「連結是否上線?」時應依據服務內容而非狀態。 | 無 |
get_public_url_status | 回報單一 Public URL 的狀態、服務內容(live、snapshot、none)及其 access 保護,詞彙與清單相同。 | 必填 url |
create_public_url | 在新專案中為本機連接埠建立 Public URL,並回傳指派的位址,例如 my-app-12.localcan.dev。需要數秒鐘。如果隧道被拒絕(例如你的方案有 Public URL 上限)或逾時,嘗試會回滾,不會留下任何東西。若要讓連結在你機器離線後仍可存取,請使用 add_snapshot 新增 Snapshot。 | 必填 port、選填 name(影響位址形式)、protocol 為 http 或 tcp(預設 http) |
add_public_url | 為你已設定的服務新增 Public URL。協定會遵循服務的目標,因此 tcp:// 目標會取得 TCP 隧道。失敗時的回滾行為與建立相同。 | 必填 service 代號 |
pause_public_url | 讓 Public URL 離線,同時保留其位址,以便日後恢復。產生的 *.localcan.dev 位址在暫停期間會保留 7 天,自訂網域則永不過期。 | 必填 url |
resume_public_url | 將已暫停的 Public URL 以相同位址恢復上線。 | 必填 url |
remove_public_url | 永久移除 Public URL。產生的位址會被釋放,自訂網域仍歸你所有,可再次新增。移除服務的最後一個端點也會移除已清空的服務和專案。若要保留位址但停止服務 Snapshot,請使用 remove_snapshot。標記為破壞性操作,因此主機通常會要求確認。 | 必填 url |
Snapshots(請參閱 Snapshots):
| 工具 | 功能 | 參數 |
|---|---|---|
publish_snapshot | 將資料夾發布為新 Public URL 上的 Snapshot,使其在你機器離線後仍可存取。盡可能指向已建置的靜態輸出,或指向專案根目錄讓 LocalCan 建置(相依套件必須已安裝)。回傳新位址。一律建立新 URL,因此若要重新整理既有預覽,請使用 update_snapshot。 | 必填 path(絕對路徑)、選填 name(影響位址形式) |
add_snapshot | 為你已有的 Public URL 新增 Snapshot,讓既有連結在離線時繼續服務。若 URL 已有 Snapshot,則指向 update_snapshot。 | 必填 url 和 path |
update_snapshot | 重新發布 Public URL 上的 Snapshot。省略 path 以從相同來源重建,或傳入以重新指向另一個資料夾。若 URL 沒有 Snapshot,則指向 add_snapshot。 | 必填 url、選填 path |
remove_snapshot | 從 Public URL 移除 Snapshot。URL 會保留,並在隧道上線時繼續服務 live 內容。標記為破壞性操作。 | 必填 url |
get_snapshot_status | 回報 Public URL 的 Snapshot:其來源資料夾、發布時間、來源是否自發布後變更(stale),以及 URL 目前服務的是 live 還是 snapshot。 | 必填 url |
存取控制(請參閱 Access control):
| 工具 | 功能 | 參數 |
|---|---|---|
set_password | 為 Public URL 設定密碼保護,只有擁有密碼的人才能開啟。在 LocalCan 的伺服器上強制執行,因此也涵蓋該 URL 上的 Snapshot。除非你傳入密碼,否則會產生一組強密碼並回傳,方便你分享。需要訂閱方案。 | 必填 url、選填 password(省略則自動產生) |
clear_access | 移除密碼保護,讓 URL 再次公開。不會移除 URL 或其 Snapshot。標記為破壞性操作,因此主機通常會要求確認。 | 必填 url |
get_access_status | 回報 Public URL 的保護狀態,並在受密碼保護時回傳目前的密碼。密碼絕不會由 list_public_urls 回傳,只會在這裡回傳。 | 必填 url |
連接代理
連接方式取決於代理的執行方式。終端代理(Claude Code、Codex)會繼承你的 shell PATH,因此直接使用 localcan 指令即可。GUI 應用程式(Cursor、Claude Desktop、VS Code 等)不會載入你的 shell PATH,因此需要二進位檔的絕對路徑,例如 /Users/you/.localcan/bin/localcan。桌面應用程式的 Settings 可以複製一份已填入正確路徑的現成設定,這在 Windows 上也是最可靠的方式。
Claude Code
claude mcp add --scope user localcan -- localcan mcp
加上 --scope user 旗標會為每個專案註冊伺服器。移除它則只會在目前專案中註冊。
Codex
codex mcp add localcan -- localcan mcp
這會將伺服器寫入 ~/.codex/config.toml。對於 Codex 桌面應用程式或 IDE 擴充功能,請以絕對路徑取代 localcan。
Cursor、Claude Desktop 和 Windsurf
這些共用相同的 mcpServers 格式:
{
"mcpServers": {
"localcan": {
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
將其加入正確的檔案,然後重新載入:
- Cursor:
~/.cursor/mcp.json,然後在 Settings 中啟用伺服器。 - Claude Desktop:
claude_desktop_config.json(Settings、Developer、Edit Config),然後結束並重新啟動。 - Windsurf:
~/.codeium/windsurf/mcp_config.json,然後重新整理 MCP 面板。
VS Code
VS Code(Copilot agent mode)使用帶有明確類型的 servers 鍵。將此加入工作區中的 .vscode/mcp.json:
{
"servers": {
"localcan": {
"type": "stdio",
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
你也可以使用相同的伺服器物件執行 code --add-mcp。
Zed
Zed 在其 settings.json 中使用 context_servers:
{
"context_servers": {
"localcan": {
"source": "custom",
"command": "/Users/you/.localcan/bin/localcan",
"args": ["mcp"]
}
}
}
你也可以從 Agent Panel 設定中新增。
代理存取、編輯(redaction)與寫入權限
三者都在桌面應用程式的 Settings(「AI Agents (MCP)」區段)中控制,或從終端控制:localcan mcp enable / disable 控制代理存取、localcan mcp redact <on|off> 控制編輯、localcan mcp access <read_only|read_write> 控制寫入權限、localcan mcp status 檢視目前狀態。
- 代理存取預設為開啟。將其關閉可完全阻止代理使用 LocalCan。伺服器仍會啟動,但每個工具都會回傳明確的「access is disabled」訊息,直到你重新開啟。
- 編輯(redaction)對代理預設為開啟。敏感標頭(Authorization、cookies、API keys)會從工具回應中移除。URL 和內文不會被編輯。將其關閉可讓你的代理接收原始值。
- 寫入權限預設為關閉。讀取不需寫入權限即可運作,但寫入工具會回傳明確的唯讀訊息,直到你在應用程式中開啟(「Allow agents to create and change Public URLs」)或使用
localcan mcp access read_write開啟。開啟代理存取不會授予寫入權限。它們是獨立的開關。每次寫入呼叫都會記錄到伺服器的診斷輸出,你的主機會擷取這些輸出,因此你可以掌握代理變更了什麼。傳給set_password的密碼會在該記錄中遮罩。
當工具拒絕時
- 每個工具都會以 daemon 連線訊息回報錯誤:LocalCan 未在執行。請開啟桌面應用程式或執行
localcan start -d。 list_traffic回傳空值:擷取已關閉(預設為關閉,且會在 daemon 重新啟動時重設)。請執行localcan traffic enable或讓代理呼叫enable_capture。- 「MCP access is disabled」:代理存取已關閉。請執行
localcan mcp enable或切換 Settings 中的開關。 - 「MCP is read-only」:工具會變更狀態,且寫入權限已關閉。請執行
localcan mcp access read_write或開啟 Settings 中的開關。 - 「public URLs require a license」:建立和新增 Public URL 需要有效的授權。請在應用程式中啟用授權,或使用
localcan license activate <key>。 - 「need a subscription plan」:Snapshots 和 Access control 僅限訂閱方案。永久授權可以開啟 Public URLs,但無法發布 Snapshot 或設定密碼。請從你的 dashboard 訂閱,然後重試。
- 「already has a snapshot」或「has no snapshot yet」:請使用訊息中提到的工具。
add_snapshot會為沒有 Snapshot 的 URL 附加 Snapshot,update_snapshot會重新整理已有 Snapshot 的 URL。 - 「Snapshot limit reached」:你的方案限制了可同時服務 Snapshot 的 Public URLs 數量。訊息會列出已佔用位置的 URLs,你可以使用
update_snapshot重新整理,而不是發布新的。 - 主機顯示伺服器失敗或沒有工具:GUI 應用程式在 PATH 中找不到
localcan。請使用絕對路徑,最簡單的方式是透過 Settings 複製設定。