LocalCan

offiziell

Gibt KI-Agenten öffentliche URLs (Tunnel) für localhost, Live-HTTP-Datenverkehrsinspektion, Snapshot-Veröffentlichung und Zugriffskontrolle.

Was kann man mit LocalCan MCP machen?

  • Erfassten Datenverkehr prüfen — Bitten Sie Ihren Assistenten, aktuelle Austauschvorgänge mit list_traffic aufzulisten oder eine vollständige Anfrage/Antwort über get_exchange im Markdown-, curl- oder HAR-Format abzurufen.
  • Öffentliche Tunnel verwalten — Erstellen, pausieren, fortsetzen oder entfernen Sie öffentliche URLs mit Tools wie create_public_url und pause_public_url, einschließlich der Festlegung benutzerdefinierter Anfrage-Header.
  • Snapshots veröffentlichen und aktualisieren — Stellen Sie einen Ordner als teilbaren Snapshot mit publish_snapshot bereit und aktualisieren Sie ihn später mit update_snapshot, damit Vorschau-Links aktuell bleiben.
  • Zugriff und Kommentare steuern — Schützen Sie eine URL mit einem Passwort über set_password, prüfen Sie Kommentarthreads über list_comments und antworten Sie darauf oder lösen Sie sie direkt über Ihren Assistenten auf.
  • Tunnel- und Dienststatus prüfen — Verwenden Sie get_status, um zu bestätigen, dass die Erfassung läuft, oder list_public_urls, um zu sehen, welche Links aktiv, pausiert oder als Snapshots bereitgestellt sind.

Dokumentation

MCP-Server

Führen Sie den Model Context Protocol Server von LocalCan aus und binden Sie ihn in Ihren MCP-Host ein, mit einer vollständigen Referenz der Tools und Schalter.

localcan mcp führt einen Model Context Protocol Server über stdio aus. Ein MCP-Host (Claude Code, Codex, Cursor, Claude Desktop und andere) startet ihn und ruft die Tools von LocalCan auf, um erfassten Datenverkehr zu lesen, Public URLs (Tunnel) zu verwalten und Snapshots zu veröffentlichen. LocalCan muss ausgeführt werden, damit die Tools Daten zurückgeben. Öffnen Sie daher zuerst die Desktop-App oder führen Sie localcan start -d aus.

Tools

Der Server stellt sechsundzwanzig Tools bereit. Das Lesen funktioniert sofort. Die sechzehn Tools, die Dinge verändern, benötigen Schreibzugriff, der standardmäßig deaktiviert ist (siehe die Schalter unten). Das Erstellen oder Hinzufügen einer Public URL erfordert eine aktive Lizenz. Das Veröffentlichen eines Snapshots und das Schützen einer URL mit einem Passwort erfordern einen Abonnementplan. Eine unbefristete Lizenz wird daher abgelehnt, auch wenn sie weiterhin Public URLs öffnen kann. Ohne Lizenz geben die gesperrten Tools eine klare Aktivierungsmeldung zurück, während das Anhalten, Fortsetzen und Entfernen vorhandener URLs weiterhin funktioniert.

Datenverkehr:

ToolFunktionParameter
get_statusMeldet, ob die Erfassung aktiv ist und wie viel Datenverkehr gepuffert ist.keine
enable_captureAktiviert die Erfassung. Die Erfassung ist standardmäßig deaktiviert und wird beim Neustart des Daemons zurückgesetzt.keine
list_trafficListet aktuelle Austausche auf, neueste zuerst.last (Standard 20), host Teilzeichenfolge, project ID, method, status (exakter Code oder eine Klasse wie 5xx)
get_exchangeGibt einen Austausch anhand der ID zurück.id erforderlich (vollständige ID oder ein beliebiges eindeutiges Präfix), format einer von markdown, curl, http, har, json (Standard markdown), include_response (Standard true)

Ein Austausch ist die Anfrage, die LocalCan an Ihr Backend weitergeleitet hat, keine bytegenaue Kopie der ursprünglichen Anfrage des Clients. Siehe Datenverkehr für das Datenmodell.

Public URLs:

ToolFunktionParameter
list_servicesListet die Dienste auf, die LocalCan bereitstellt, jeweils mit einem <project>/<service>-Handle, seinem lokalen Ziel und der Anzahl der Endpunkte.keine
list_public_urlsListet Ihre Public URLs auf, einschließlich angehaltener, jeweils mit ihrem Status (aktiv, angehalten, Fehler, startend, inaktiv) und was sie bereitstellt (live, Snapshot, keine). Jede Zeile enthält auch access: keine, Passwort, Link oder einen Team-Richtliniennamen. Eine geparkte URL, die einen Snapshot bereitstellt, liest Status angehalten, aber bereitstellt Snapshot. Beantworten Sie also „Ist der Link aktiv?" anhand von bereitstellt, nicht von Status.keine
get_public_url_statusMeldet den Status einer Public URL, was sie bereitstellt (live, Snapshot, keine) und ihren access-Schutz, mit demselben Vokabular wie die Liste, plus ihr lokales Ziel und alle Anforderungs-Header-Regeln.url erforderlich
create_public_urlErstellt eine Public URL für einen lokalen Port in einem neuen Projekt und gibt die zugewiesene Adresse zurück, wie my-app-12.localcan.dev. Dauert einige Sekunden. Wenn der Tunnel abgelehnt wird (z. B. das Public-URL-Limit Ihres Plans) oder ein Timeout auftritt, wird der Versuch zurückgerollt und nichts bleibt zurück. Für einen Link, der erreichbar bleibt, nachdem Ihre Maschine offline geht, fügen Sie einen Snapshot mit add_snapshot hinzu. Für eine App, die als virtueller Host bereitgestellt wird, übergeben Sie host und eine Host-Regel in headers (siehe unten).port erforderlich, name optional (formt die Adresse), protocol http oder tcp (Standard http), host optional (Standard localhost), headers optional (Anforderungs-Header-Regeln, jeweils {name, value, mode?, enabled?})
add_public_urlFügt eine Public URL zu einem Dienst hinzu, den Sie bereits konfiguriert haben. Das Protokoll folgt dem Ziel des Dienstes, sodass ein tcp://-Ziel einen TCP-Tunnel erhält. Gleicher Rollback bei Fehler wie beim Erstellen.service Handle erforderlich
pause_public_urlNimmt eine Public URL offline, während ihre Adresse erhalten bleibt, sodass sie später fortgesetzt werden kann. Eine generierte *.localcan.dev-Adresse bleibt 7 Tage lang reserviert, während sie angehalten ist. Benutzerdefinierte Domains laufen nie ab.url erforderlich
resume_public_urlBringt eine angehaltene Public URL unter derselben Adresse wieder online.url erforderlich
remove_public_urlEntfernt eine Public URL dauerhaft. Eine generierte Adresse wird freigegeben, eine benutzerdefinierte Domain bleibt Ihre und kann erneut hinzugefügt werden. Das Entfernen des letzten Endpunkts eines Dienstes entfernt auch den geleerten Dienst und das Projekt. Um die Adresse zu behalten, aber die Bereitstellung eines Snapshots zu stoppen, verwenden Sie remove_snapshot. Als destruktiv markiert, sodass Hosts normalerweise um Bestätigung bitten.url erforderlich
set_public_url_headersErsetzt die Anforderungs-Header-Regeln auf einer Public URL, die Header, die LocalCan vor der Weiterleitung an Ihre App setzt. Übergeben Sie die vollständige Liste, eine leere Liste löscht sie. get_public_url_status meldet die Regeln in derselben Form (mode setzen, anhängen oder entfernen, und enabled), sodass eine dort gelesene Liste bearbeitet und zurückgeschrieben werden kann.url und headers erforderlich

Eine App, die als virtueller Host bereitgestellt wird (eine Laravel-Herd- oder Valet-Site unter myapp.test, ein nginx server_name), muss ihren eigenen Hostnamen sehen, und LocalCan leitet den öffentlichen Hostnamen standardmäßig weiter. Übergeben Sie host und eine Host-Regel, headers: [{"name": "Host", "value": "{{target_host}}"}], und die App stellt die richtige Site bereit. Die Wertvorlagen sind die aus Header.

Snapshots (siehe Snapshots):

ToolFunktionParameter
publish_snapshotVeröffentlicht einen Ordner als Snapshot auf einer neuen Public URL, sodass er erreichbar bleibt, nachdem Ihre Maschine offline geht. Zeigen Sie darauf, wenn möglich, auf gebaute statische Ausgabe oder auf ein Projektstammverzeichnis, damit LocalCan baut (Abhängigkeiten müssen bereits installiert sein). Gibt die neue Adresse zurück. Erstellt immer eine neue URL. Verwenden Sie zum Aktualisieren einer vorhandenen Vorschau update_snapshot.path erforderlich (absolut), name optional (formt die Adresse)
add_snapshotFügt einer vorhandenen Public URL einen Snapshot hinzu, sodass ein vorhandener Link weiterhin offline bereitstellt. Zeigt auf update_snapshot, wenn die URL bereits einen hat.url und path erforderlich
update_snapshotVeröffentlicht den Snapshot auf einer Public URL erneut. Lassen Sie path weg, um aus derselben Quelle neu zu bauen, oder übergeben Sie es, um auf einen anderen Ordner zu zeigen. Zeigt auf add_snapshot, wenn die URL keinen hat.url erforderlich, path optional
remove_snapshotEntfernt den Snapshot von einer Public URL. Die URL bleibt reserviert und stellt weiterhin live bereit, während Ihr Tunnel aktiv ist. Als destruktiv markiert.url erforderlich
get_snapshot_statusMeldet den Snapshot einer Public URL: seinen Quellordner, wann er veröffentlicht wurde, ob sich die Quelle seitdem geändert hat (veraltet) und ob die URL gerade live oder den Snapshot bereitstellt. Enthält auch die Überprüfungskommentare (Status und Anzahl) und, sobald Kommentare aktiv waren, die Versionsnummer des Snapshots.url erforderlich

Zugriffskontrolle (siehe Zugriffskontrolle):

ToolFunktionParameter
set_passwordSchützt eine Public URL mit einem Passwort, sodass nur Personen mit dem Passwort sie öffnen können. Wird auf den Servern von LocalCan durchgesetzt und deckt daher auch einen Snapshot auf dieser URL ab. Generiert ein starkes Passwort, sofern Sie keins übergeben, und gibt es zurück, damit Sie es teilen können. Erfordert einen Abonnementplan.url erforderlich, password optional (weglassen, um eines zu generieren)
clear_accessEntfernt den Passwortschutz und macht die URL wieder öffentlich. Entfernt nicht die URL oder ihren Snapshot. Als destruktiv markiert, sodass Hosts normalerweise um Bestätigung bitten.url erforderlich
get_access_statusMeldet den Schutz einer Public URL und gibt ihr aktuelles Passwort zurück, wenn sie passwortgeschützt ist. Das Passwort wird nie von list_public_urls zurückgegeben, nur hier.url erforderlich

Kommentare (die Überprüfungskommentare, die Prüfer auf einem Snapshot hinterlassen, siehe Kommentare):

ToolFunktionParameter
list_commentsListet die Kommentarthreads auf dem Snapshot einer Public URL mit ihren Antworten auf. Jeder Thread enthält den Seitenpfad, den Anker (einen CSS-Selektor und die Position des Pins in diesem Element), den Viewport und Browser des Prüfers und die Snapshot-Version, auf der er hinterlassen wurde. Markiert nie etwas als gelesen.url erforderlich, status offen, gelöst oder alle (Standard offen), page Pfad, version Nummer
reply_commentPostet eine Antwort in einen Thread unter dem Namen Ihres Kontos. Prüfer im Thread erhalten sie per E-Mail, es sei denn, Antwortbenachrichtigungen sind für das Team deaktiviert oder sie haben sich abgemeldet. Nur Antworten, neue Threads werden auf der Seite gepinnt.url, comment_id, body erforderlich
resolve_commentMarkiert einen Thread als gelöst, einschließlich Antworten.url und comment_id erforderlich
reopen_commentÖffnet einen gelösten Thread erneut.url und comment_id erforderlich
set_commentsSchaltet Kommentare auf einem Snapshot um: ein, angehalten (vorhandene Threads bleiben lesbar, keine neuen) oder aus. Erfordert eine geschützte URL und einen Abonnementplan.url und state erforderlich

Die Feedback-Schleife

Die Tools verketten sich zu einer Schleife, die ein Agent selbst ausführen kann: list_comments, um die offenen Threads zu lesen, die Quelle bearbeiten, update_snapshot, um die neue Version zu veröffentlichen, dann reply_comment und resolve_comment pro Thread. Kommentare werden auf die neue Version übertragen, sodass der Prüfer die Antwort auf demselben Pin sieht. Der Server teilt dies dem Agenten selbst mit. Seine MCP-Anweisungen, die Hosts zum Prompt des Agenten hinzufügen, beschreiben die Schleife, das Überprüfungsrunden-Setup (publish_snapshot, set_password, set_comments) und das Rezept für virtuelle Hosts. Zwei Dinge, die ein Agent nicht tun kann: einen Thread starten (Prüfer pinnen diese auf der Seite) und Threads als gelesen markieren (ungelesen ist Ihr eigener Posteingangsstatus in der App).

Verbinden eines Agenten

Wie Sie verbinden, hängt davon ab, wie der Agent ausgeführt wird. Terminal-Agenten (Claude Code, Codex) erben den PATH Ihrer Shell, sodass ein einfacher localcan-Befehl funktioniert. GUI-Apps (Cursor, Claude Desktop, VS Code und andere) laden den PATH Ihrer Shell nicht, daher benötigen sie den absoluten Pfad zur Binärdatei, z. B. /Users/you/.localcan/bin/localcan. Die Einstellungen der Desktop-App können eine vorgefertigte Konfiguration mit dem richtigen Pfad kopieren, was auch auf Windows der zuverlässige Weg ist.

Claude Code

claude mcp add --scope user localcan -- localcan mcp

Das Flag --scope user registriert den Server für jedes Projekt. Lassen Sie es weg, um ihn nur im aktuellen Projekt zu registrieren.

Codex

codex mcp add localcan -- localcan mcp

Dies schreibt den Server nach ~/.codex/config.toml. Für die Codex-Desktop-App oder IDE-Erweiterung übergeben Sie den absoluten Pfad anstelle von localcan.

Cursor, Claude Desktop und Windsurf

Diese teilen sich dasselbe mcpServers-Format:

{
  "mcpServers": {
    "localcan": {
      "command": "/Users/you/.localcan/bin/localcan",
      "args": ["mcp"]
    }
  }
}

Fügen Sie es zur richtigen Datei hinzu und laden Sie dann neu:

  • Cursor: ~/.cursor/mcp.json, dann aktivieren Sie den Server in den Einstellungen.
  • Claude Desktop: claude_desktop_config.json (Einstellungen, Entwickler, Konfiguration bearbeiten), dann beenden und neu starten.
  • Windsurf: ~/.codeium/windsurf/mcp_config.json, dann das MCP-Panel aktualisieren.

VS Code

VS Code (Copilot-Agentenmodus) verwendet einen servers-Schlüssel mit einem expliziten Typ. Fügen Sie dies zu .vscode/mcp.json in Ihrem Arbeitsbereich hinzu:

{
  "servers": {
    "localcan": {
      "type": "stdio",
      "command": "/Users/you/.localcan/bin/localcan",
      "args": ["mcp"]
    }
  }
}

Sie können auch code --add-mcp mit demselben Serverobjekt ausführen.

Zed

Zed verwendet context_servers in seiner settings.json:

{
  "context_servers": {
    "localcan": {
      "source": "custom",
      "command": "/Users/you/.localcan/bin/localcan",
      "args": ["mcp"]
    }
  }
}

Sie können es auch aus den Einstellungen des Agent-Panels hinzufügen.

Agentenzugriff, Schwärzung und Schreibzugriff

Alle drei werden in der Desktop-App unter Einstellungen (Abschnitt „AI Agents (MCP)") gesteuert oder vom Terminal aus: localcan mcp enable / disable für den Agentenzugriff, localcan mcp redact <on|off> für die Schwärzung, localcan mcp access <read_only|read_write> für den Schreibzugriff und localcan mcp status, um den aktuellen Zustand zu sehen.

  • Der Agentenzugriff ist standardmäßig aktiviert. Deaktivieren Sie ihn, um Agenten die Nutzung von LocalCan vollständig zu untersagen. Der Server startet weiterhin, aber jedes Tool gibt eine klare Meldung „Zugriff deaktiviert" zurück, bis Sie ihn wieder aktivieren.
  • Die Schwärzung ist für Agenten standardmäßig aktiviert. Sensible Header (Authorization, Cookies, API-Schlüssel) werden aus Tool-Antworten entfernt. URLs und Inhalte werden nicht geschwärzt. Deaktivieren Sie sie, damit Ihr eigener Agent Rohwerte empfangen kann.
  • Der Schreibzugriff ist standardmäßig deaktiviert. Das Lesen funktioniert ohne ihn, aber die Schreib-Tools geben eine klare Nur-Lese-Meldung zurück, bis Sie ihn in der App aktivieren („Agenten erlauben, öffentliche URLs zu erstellen und zu ändern") oder mit localcan mcp access read_write. Das Aktivieren des Agentenzugriffs gewährt keinen Schreibzugriff. Es sind separate Schalter. Jeder Schreibaufruf wird im Diagnoseausgang des Servers protokolliert, den Ihr Host erfasst, sodass Sie eine Aufzeichnung darüber haben, was ein Agent geändert hat. Ein an set_password übergebenes Passwort wird in diesem Protokoll maskiert.

Wenn ein Tool sich weigert

  • Jedes Tool meldet einen Fehler mit einer Daemon-Verbindungsmeldung: LocalCan läuft nicht. Öffnen Sie die Desktop-App oder führen Sie localcan start -d aus.
  • list_traffic gibt nichts zurück: Die Erfassung ist deaktiviert (standardmäßig deaktiviert und wird beim Neustart des Daemons zurückgesetzt). Führen Sie localcan traffic enable aus oder lassen Sie den Agenten enable_capture aufrufen.
  • „MCP-Zugriff deaktiviert": Der Agentenzugriff ist ausgeschaltet. Führen Sie localcan mcp enable aus oder schalten Sie den Schalter in den Einstellungen um.
  • „MCP ist schreibgeschützt": Das Tool ändert Dinge und der Schreibzugriff ist deaktiviert. Führen Sie localcan mcp access read_write aus oder aktivieren Sie den Schalter in den Einstellungen.
  • „Öffentliche URLs erfordern eine Lizenz": Das Erstellen und Hinzufügen einer öffentlichen URL erfordert eine aktive Lizenz. Aktivieren Sie eine in der App oder mit localcan license activate <key>.
  • „Ein Abonnementplan ist erforderlich": Snapshots und Zugriffskontrolle sind nur mit Abonnement verfügbar. Eine unbefristete Lizenz kann öffentliche URLs öffnen, aber keinen Snapshot veröffentlichen oder ein Passwort festlegen. Abonnieren Sie über Ihr Dashboard und versuchen Sie es dann erneut.
  • „Hat bereits einen Snapshot" oder „Hat noch keinen Snapshot": Verwenden Sie das Tool, das in der Meldung genannt wird. add_snapshot fügt einer URL ohne Snapshot einen Snapshot hinzu, update_snapshot aktualisiert einen, der bereits einen hat.
  • „Snapshot-Limit erreicht": Ihr Plan begrenzt, wie viele öffentliche URLs gleichzeitig einen Snapshot bereitstellen können. Die Meldung listet die URLs auf, die bereits einen Platz belegen, die Sie mit update_snapshot aktualisieren können, anstatt einen neuen zu veröffentlichen.
  • „Kommentare erfordern eine geschützte URL": set_comments wurde für eine URL ohne Zugriffskontrolle aufgerufen. Führen Sie zuerst set_password aus.
  • „Ihr Konto hat keinen Anzeigenamen": Eine Antwort benötigt einen Namen, unter dem sie veröffentlicht wird. Legen Sie ihn im Dashboard fest oder antworten Sie einmal auf der Snapshot-Seite, nachdem Sie sie als Eigentümer aus der App geöffnet haben.
  • Der Host zeigt den Server als fehlgeschlagen oder ohne Tools an: Eine GUI-App kann localcan nicht im PATH finden. Verwenden Sie den absoluten Pfad, am einfachsten über die Schaltfläche „Konfiguration kopieren" in den Einstellungen.