Wszystkie artykuły
AnthropicClaudeAItool use

Anthropic tool use lokalnie: tunele dla Claude

Tool use Claude to nie webhook. Twój backend wysyła wiadomość, Claude odpowiada — czasem z prośbą o wywołanie narzędzia — twój kod uruchamia narzędzie i odsyła wynik. Całość dzieje się przez wychodzące HTTPS z twojej maszyny. To dlaczego ten artykuł jest o tunelach?

Bo w chwili, gdy budujesz coś realnego z Claude — agenta do kodu, automatyzację wsparcia, serwer MCP, długie workflow — zaczynasz potrzebować łączności przychodzącej. Dla klientów przeglądarkowych. Dla serwerów MCP udostępnionych innym aplikacjom. Dla webhooków od narzędzi zewnętrznych, które model wywołuje.

Gdzie tunel naprawdę pomaga

Frontendy przeglądarkowe dla aplikacji z Claude

Ten sam kształt co w konfiguracji OpenAI Realtime. Twój frontend nie może trzymać klucza API Anthropic, więc rozmawia z backendem, a ten z Anthropic. Frontend potrzebuje HTTPS, by odpowiedzi strumieniowe renderowały się czysto (część przeglądarek pogarsza obsługę SSE po zwykłym HTTP), a backend potrzebuje HTTPS, jeśli frontend jest na HTTPS. Tunel załatwia oba.

Serwery MCP działające lokalnie

Model Context Protocol pozwala Claude (i innym klientom) łączyć się z narzędziami, które udostępniasz jako serwery MCP. Dla serwerów MCP z transportem HTTP — w odróżnieniu od stdio — klient musi dotrzeć do twojego serwera. Jeśli prototypujesz serwer MCP i chcesz przetestować go z Claude Desktop lub innym zdalnym klientem, udostępnienie lokalnego serwera MCP przez tunel to droga najmniejszego oporu.

Callbacki computer use

Jeśli używasz bety computer use Claude, a model wchodzi w interakcję z usługą, która wysyła webhooki z powrotem do twojej maszyny, jesteś na terytorium webhooków. Te same wzorce co u każdego dostawcy: przechwyć, ponów, zweryfikuj (jeśli dotyczy).

Czego tunel nie robi

Nie potrzebujesz tunelu, by wywołać Claude z lokalnego skryptu. curl https://api.anthropic.com/v1/messages działa z każdej maszyny. SDK dla Pythona i TypeScript działają dobrze. Sam tool use to interakcja wychodząca — Claude nie dzwoni do twojej maszyny, gdy chce użyć narzędzia; to twój kod wywołuje na podstawie odpowiedzi Claude.

Za pierwszym razem to myli. Wzorzec jest taki:

  1. Twój kod wysyła do Claude wiadomość użytkownika z listą dostępnych narzędzi.
  2. Claude odpowiada, być może blokiem tool_use opisującym narzędzie do wywołania.
  3. Twój kod uruchamia narzędzie w twoim lokalnym systemie.
  4. Twój kod odsyła wynik narzędzia do Claude jako kolejną wiadomość.
  5. Pętla aż do końca.

Wszystkie pięć kroków dzieje się w jednym procesie Pythona lub TypeScript. Brak ruchu przychodzącego. Brak tunelu.

Prawdziwy powód, dla którego tunelowanie pomaga w workflow z Claude

Powodem, dla którego ostatecznie uruchamiamy tunel podczas pracy z Claude, nie jest sam model. To wszystko wokół niego: panel pokazujący postęp agenta, frontend strumieniujący wyniki narzędzi, serwer MCP udostępniony do testów, webhook od narzędzia zewnętrznego, które agent wywołał („wyślij wiadomość na Slacku", „utwórz zgłoszenie w Linear"). Agent uruchamia reakcję łańcuchową, a gdzieś w tym łańcuchu zewnętrzna usługa ostatecznie chce uderzyć w twoją maszynę.

Konfiguracja pętli deweloperskiej serwera MCP

  1. Zaimplementuj serwer MCP z transportem HTTP.
  2. Uruchom go lokalnie na wybranym porcie.
  3. npx portpreview 3000 (lub twój port).
  4. W Claude Desktop lub innym kliencie MCP skonfiguruj URL zdalnego serwera wskazujący na twój tunel.
  5. Wydawaj polecenia. Obserwuj przechwytywanie żądań w tunelu i odpowiedzi twojego serwera.

Jeśli twój serwer MCP jest w transporcie stdio, to nie dotyczy — serwery stdio komunikują się przez potoki procesów i z założenia pozostają lokalne.

Odpowiedzi strumieniowe a tunele

Claude strumieniuje odpowiedzi przez SSE. Tunele muszą poprawnie obsłużyć długotrwałą odpowiedź strumieniową — większość to robi, ale niektóre starsze proxy HTTP buforują odpowiedź i zwalniają ją dopiero na końcu, co niweczy sens strumieniowania. PortPreview, Cloudflare i ngrok obsługują SSE bez buforowania. Jeśli twój frontend dostaje całą odpowiedź naraz po długim czekaniu, twój tunel buforuje. To problem tunelu, nie Claude.

Debugowanie pętli agenta

Najtrudniejsza część pracy z tool use Claude to nie API. To zrozumienie, co model zdecydował zrobić na każdym kroku. Loguj każdy blok tool_use przed wykonaniem. Loguj każdy wynik narzędzia przed zwróceniem do Claude. Jeśli masz tunel między frontendem a backendem, przechwytywanie żądań daje też zapis wiadomości użytkownika — przydatny do odtwarzania przebiegów agenta bez ponownego wpisywania promptów.

Dokąd to zmierza

Ekosystem tool use Anthropic rozwija się szybko — MCP, computer use, dłuższe okna kontekstu, niższe opóźnienia. Wzorce webhooków z debugowania webhooków lokalnie i matematyka podpisów z przewodnika po weryfikacji podpisów mają zastosowanie, gdy dowolne zewnętrzne narzędzie wywołane przez agenta wysyła callback do twojej maszyny.

Dołącz do listy oczekujących PortPreview po tunel z wbudowanym przechwytywaniem, ponawianiem i bezpiecznym dla SSE przekazywaniem.

Najczęściej zadawane pytania

Czy potrzebuję tunelu, by używać tool use Claude?
Nie do podstawowego API. Tool use Claude to interakcja wychodząca — twój kod wywołuje Anthropic, Claude odpowiada żądaniami narzędzi, twój kod je wykonuje, odsyłasz wyniki. Wszystko wychodzące. Tunel jest potrzebny tylko, gdy usługi zewnętrzne dzwonią do twojej maszyny: frontendy przeglądarkowe, zdalnie udostępnione serwery MCP lub narzędzia zewnętrzne wysyłające webhooki z powrotem.
Jak przetestować serwer MCP z Claude lokalnie?
Dla serwerów MCP z transportem HTTP uruchom serwer lokalnie i udostępnij go przez tunel. Skonfiguruj Claude Desktop (lub innego zdalnego klienta MCP) adresem tunelu. Serwery MCP stdio nie potrzebują tunelu, bo komunikują się przez potoki procesów.
Czy tunele psują strumieniowe odpowiedzi Claude?
Większość nowoczesnych tuneli obsługuje strumieniowanie SSE bez buforowania. Jeśli frontend dostaje całą odpowiedź naraz po długim opóźnieniu, tunel buforuje i psuje strumieniowanie. PortPreview i inne nowe tunele tego unikają.