Wprowadzenie

W tym praktycznym przewodniku krok po kroku skonfigurujesz połączenie mobilnego proxy z klientem MCP, aby Twoje narzędzia AI działały stabilnie i przewidywalnie z zewnętrznymi źródłami danych i API. Zaczniemy od krótkiego wyjaśnienia, dlaczego potrzebne są mobilne proxy i jak działa MCP (Model Context Protocol), potem przygotujemy środowisko, podłączymy proxy, przeanalizujemy rzeczywisty przykład na podstawie serwera MCP mobileproxy.space, przeprowadzimy weryfikację, omówimy typowe błędy i zakończymy rozszerzonymi możliwościami. Rezultatem będzie działająca konfiguracja, którą będziesz mógł przenieść do zespołu lub na produkcję.

Przewodnik ten jest skierowany do programistów, analityków danych i inżynierów integracji, którzy chcą osiągnąć powtarzalne zachowanie sieciowe narzędzi AI i zredukować niestabilność przy dostępie do zewnętrznych stron i API. Nawet jeśli po raz pierwszy spotykasz się z MCP, będziesz mógł przejść przez wszystkie kroki. Zaawansowani użytkownicy znajdą gotowe przykłady kodu oraz porady dotyczące optymalizacji.

Przed rozpoczęciem przydatne jest zrozumienie podstawowych rzeczy: jak otworzyć terminal, zainstalować Node.js, edytować plik konfiguracyjny JSON i czytać logi. Głębokie znajomości sieci nie są wymagane. Wyjaśnimy wszystko, co potrzebne, w trakcie przewodnika.

Czas wykonania: od 60 do 90 minut, w zależności od tego, czy masz zainstalowane narzędzia oraz czy masz gotowe dane logowania do mobilnego proxy. Jeśli po raz pierwszy konfigurujesz klienta MCP, przewiduj 90 minut, aby dokładnie przejść przez wszystkie kontrole i diagnostykę.

Porada: Jeśli wprowadzasz tę konfigurację w środowisku zespołowym, wcześniej uzgodnij wspólne miejsce przechowywania konfiguracji i sekretów, aby nie rozpraszać haseł do proxy w osobistych plikach programistów.

Weryfikacja: Pod koniec sekcji "Weryfikacja wyniku" otrzymasz listę kontrolną, dzięki której upewnisz się, że proxy jest rzeczywiście używane, a narzędzia skutecznie łączą się z internetem poprzez mobilną sieć.

Przygotowanie wstępne

Aby prawidłowo i szybko skonfigurować, zbierz wszystkie narzędzia i dostęp z góry. To zaoszczędzi Twój czas i pomoże uniknąć błędów w trakcie procesu.

Wymagane narzędzia, programy i dostęp

  • System operacyjny: Windows 10/11, macOS 12+ lub Linux z prawami do instalacji programów.
  • Node.js LTS 20+ (razem z npm) do uruchamiania serwerów MCP na JavaScript/TypeScript.
  • Edytor kodu: VS Code, JetBrains lub dowolny inny, który wybierzesz.
  • Dane logowania do mobilnego proxy: host, port, login, hasło. W idealnym przypadku także URL rotacji IP i parametry "sticky" sesji.
  • Klient MCP: na przykład Claude Desktop lub Cline (rozszerzenie VS Code), które wspierają połączenie z zewnętrznymi serwerami MCP.
  • Podstawowe narzędzia diagnostyki sieci: curl lub podobne do sprawdzania wyjścia do internetu przez proxy.

Wymagania systemowe

  • Stabilny internet na Twoim komputerze roboczym.
  • Otwarty dostęp do portów mobilnego proxy (często 3128, 8000, 8080 lub inny wskazany przez dostawcę).
  • Dysk: minimum 200 MB na pakiety Node.js i logi.

Co należy pobrać, zainstalować i skonfigurować

  1. Zainstaluj Node.js LTS 20+ z oficjalnego dystrybucji Twojego systemu operacyjnego.
  2. Przygotuj roboczy folder projektu, na przykład mcp-mobileproxy, gdzie będą przechowywane kod i konfiguracje.
  3. Sprawdź, czy Twój klient MCP jest zainstalowany: uruchom Claude Desktop lub otwórz VS Code z zainstalowanym Cline.
  4. Przygotuj dane logowania do mobilnego proxy (host, port, user, password), a także URL lub komendę rotacji IP i parametry "sticky" sesji, jeśli są przewidziane w Twoim planie taryfowym.

Tworzenie kopii zapasowych

Jeśli edytujesz konfigurację klienta MCP (na przykład plik JSON), wykonaj kopię zapasową oryginalnego pliku przed wprowadzeniem zmian. Skopiuj go w tym samym miejscu, dodając sufiks .bak. Jeśli coś pójdzie nie tak, szybko wrócisz do oryginalnych ustawień.

Uwaga: Nigdy nie przechowuj haseł do proxy w publicznych repozytoriach. Do pracy zespołowej używaj menedżerów sekretów lub zmiennych środowiskowych, aby zapobiec wyciekom danych logowania.

Weryfikacja: Upewnij się, że Node.js jest zainstalowany (komenda node -v wyświetla wersję) i że wiesz, gdzie znajduje się plik konfiguracyjny Twojego klienta MCP. Twoje dane logowania do mobilnego proxy są pod ręką, a dostęp do internetu jest stabilny.

Czym jest MCP (Model Context Protocol)

MCP to otwarty protokół, który standaryzuje interakcję klientów AI (na przykład aplikacji desktopowych i wtyczek IDE) z zewnętrznymi możliwościami dostarczanymi przez serwery MCP. Idea jest prosta: klient wyświetla w interfejsie "narzędzia" i "zasoby", a serwer realizuje ich logikę. Dzięki temu ten sam serwer można podłączyć do różnych klientów, a narzędzia będą wyglądać i działać identycznie.

Kluczowe pojęcia w prostych słowach

  • Klient MCP — aplikacja, w której komunikujesz się z modelem i wybierasz, jakie narzędzia są dostępne. Przykłady: Claude Desktop, Cline.
  • Serwer MCP — zewnętrzny program realizujący "narzędzia" (tools), "zasoby" (resources), "podpowiedzi" (prompts). Serwer dostarcza opisy możliwości i przetwarza wezwania od klienta.
  • Narzędzia — działania, które model może wykonywać: zapytanie do API webowego, odczyt pliku, parsowanie HTML, HTTP-zapytanie przez proxy itp.
  • Transport — sposób komunikacji klienta z serwerem (zazwyczaj stdio lub połączenie webowe). Dla Ciebie jest to przejrzyste: wskazujesz komendę uruchamiania serwera i parametry.

Podstawowe zasady działania

Klient nawiązuje sesję z serwerem MCP i otrzymuje od niego deklaratywny opis możliwości: jakie narzędzia są dostępne, jakie parametry przyjmują, co zwracają. Gdy podczas komunikacji z modelem prosisz o wykonanie działania, klient wywołuje odpowiednie narzędzie na serwerze. Serwer wykonuje całą "brudną" robotę — chodzi po internecie, stuka w bazy, parsuje pliki — i zwraca wynik klientowi. W tym scenariuszu istotne jest, aby wyjścia sieciowe serwera następowały przez mobilne proxy, a nie bezpośrednio. Wówczas wszystkie zapytania narzędzi AI będą przekierowywane w przewidywalny sposób: stabilne IP, rotacje, "sticky" sesje, regionalność itp.

Co ważne zrozumieć przed rozpoczęciem

  • Gdzie dokładnie włączysz proxy: globalnie przez zmienne środowiskowe czy lokalnie w kodzie serwera MCP. Oba warianty są ważne, ale każdy ma swoje zalety.
  • Jak będziesz potwierdzać, że zapytanie rzeczywiście przebiega przez proxy: na przykład, zapytaniem o Twój zewnętrzny IP, logami dostawcy proxy czy znacznikami w nagłówkach.
  • Jaka strategia rotacji IP jest potrzebna: ręczny przycisk rotacji, automatyczna po N zapytaniach lub "sticky" sesje na czas zadania.

Porada: Dokładnie przemyśl strategię rotacji przed rozpoczęciem. Częste rotacje nie zawsze są korzystne: wiele stron preferuje stabilną "sticky" sesję w ramach jednego zadania zbierania danych lub testowania API.

Weryfikacja: Rozumiesz, że MCP to "most" między klientem a zewnętrznymi narzędziami, a mobilne proxy to kontrolowany szlak dla wywołań sieciowych tych narzędzi. Celem jest, aby wszystkie kroki sieciowe odbywały się przez określonego dostawcę proxy.

Dlaczego narzędzia AI potrzebują mobilnych proxy

Mobilne proxy dają ważne zalety przy pracy narzędzi AI z zewnętrznymi zasobami i API:

  • Stabilność dostępu: niektóre serwisy są wrażliwe na typ IP i aktywność z niego. Mobilne IP często mają inną heurystykę filtrowania, co zwiększa przewidywalność.
  • Elastyczna rotacja: możesz rotować IP na przycisk, według czasu czy liczby zapytań, unikając nagromadzenia "szumu" i zbędnych blokad na jednym adresie.
  • Sesje: "sticky" sesje pozwalają zachować ten sam IP na czas wykonywania zadania agenta (na przykład przez 10–30 minut), by nie zaburzać strumienia interakcji.
  • Regionalność: wybór geograficznego połączenia, jeśli jest to przewidziane w taryfie, pomaga testować działanie serwisów dla różnych krajów.

W kontekście MCP oznacza to, że każde narzędzie, zrealizowane po stronie serwera, będzie korzystać z tej samej trasy sieciowej, którą ustaliłeś, co zapewnia powtarzalność i zmniejsza chaos podczas debugowania.

Uwaga: Używaj mobilnych proxy ściśle zgodnie z prawem i zasadami docelowych serwisów. Konfiguracja proxy w tym przewodniku została zaprojektowana, aby zapewnić stabilność i powtarzalność pracy narzędzi AI, a nie do obejścia ograniczeń.

Porada: Jeśli Twój przypadek to integracja agenta z kilkoma źródłami, rozdziel je według sesji: jedne narzędzia na "sticky" sesje, inne na szybko rotującym IP. To zmniejsza nakładanie się i artefakty.

Weryfikacja: Sformułuj swój scenariusz: dlaczego potrzebujesz mobilnego proxy (stabilność, sesje, regionalność), jak będziesz mierzyć sukces (mniej błędów połączenia, stabilne IP w logach, brak niespodziewanych blokad).

Krok 1: Planowanie strategii i uzyskanie dostępu do mobilnego proxy

Cel etapu

Określenie parametrów użycia mobilnego proxy (typ sesji, rotacji, regionalność) i uzyskanie działających danych logowania do dalszej integracji z klientem MCP i serwerem.

Kroki do wykonania

  1. Określ, czy będziesz mieć "sticky" sesję. Jeśli agent musi utrzymać kontekst przez całe zadanie, wybierz tryb "sticky" na 10–30 minut.
  2. Wybierz strategię rotacji: ręcznie na przycisku/URL, zgodnie z harmonogramem, czy po liczbie zapytań. Na początek odpowiednia będzie ręczna rotacja.
  3. Uzyskaj od dostawcy parametry połączenia: host, port, user, password. W razie potrzeby — URL rotacji IP i wzór logowania dla "sticky" sesji.
  4. Sprawdź, czy wymagane są listy dozwolonych IP (whitelist). Jeśli dostawca wymaga powiązania Twojego wychodzącego IP, wcześniej dodaj je w panelu dostawcy.
  5. Przeprowadź test curl. Komenda: curl -x http://user:password@host:port https://api.ipify.org. Powinien zwrócić Twój zewnętrzny IP przez proxy.
  6. Zapisz dane logowania w zmiennych środowiskowych: na przykład, PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS. To bezpieczniejsze, niż przechowywanie ich bezpośrednio w kodzie.

Uwaga: Nigdy nie wysyłaj danych proxy przez otwarte kanały. Podczas przesyłania kolegom korzystaj z szyfrowanych metod wymiany i rotacji haseł zgodnie z regulaminem.

Porada: Jeśli dostawca wspiera generowanie oddzielnych loginów z ograniczeniami (czas życia, geografia), stwórz oddzielne dane logowania dla rozwoju, testowania i produkcji. Dzięki temu unikniesz przypadkowego obciążenia taryfy.

Oczekiwany rezultat

Masz host, port, login i hasło do mobilnego proxy, opcjonalnie — URL rotacji i instrukcję dotyczącą "sticky" sesji. Test curl potwierdza, że ruch rzeczywiście przechodzi przez proxy.

Możliwe problemy i rozwiązania

  • Błąd 407 Proxy Authentication Required → Nieprawidłowy login/hasło. Sprawdź dane logowania. Upewnij się, że znaki specjalne są poprawnie zakodowane, jeśli używasz ich w URL.
  • Timeout → Port zablokowany przez firewall. Umożliwiaj wychodzące połączenia na port dostawcy lub sprawdź alternatywny port.
  • Zewnętrzny IP się nie zmienia → Ruch poszedł pomijając proxy. Sprawdź składnię klucza -x i obecność autoryzacji.

Weryfikacja: Komenda curl zwraca zewnętrzny IP, różny od Twojego zwykłego, i zgodny z tym, co pokazuje panel dostawcy proxy.

Krok 2: Instalacja klienta MCP i przygotowanie środowiska

Cel etapu

Przygotowanie infrastruktury: zainstalowanie lub sprawdzenie klienta MCP (na przykład Claude Desktop), stworzenie projektu serwera MCP i skonfigurowanie zależności do pracy przez proxy.

Kroki do wykonania

  1. Sprawdź, czy Node.js jest dostępny: w terminalu wykonaj node -v. Jeśli wersja jest niższa niż 20, zainstaluj aktualną wersję LTS.
  2. Utwórz folder projektu: mkdir mcp-mobileproxy && cd mcp-mobileproxy.
  3. Inicjalizuj projekt: npm init -y. To utworzy package.json.
  4. Zainstaluj zależności MCP: npm install @modelcontextprotocol/sdk axios https-proxy-agent.
  5. Stwórz plik index.js, do którego wstawimy kod przykładu serwera MCP.
  6. Otwórz klienta MCP. Dla Claude Desktop znajdź plik konfiguracyjny ustawień. W systemie Windows zazwyczaj znajduje się on w profilu użytkownika w katalogu danych aplikacji, na macOS — w katalogu Library/Application Support. Wykonaj kopię zapasową pliku ustawień przed wprowadzeniem zmian.
  7. Jeśli używasz Cline (VS Code), otwórz ustawienia rozszerzenia i znajdź sekcję dodawania własnych serwerów MCP (zazwyczaj wpis z konfiguracją "mcp servers"). Przygotuj się na dodanie skryptu serwera z Twojego projektu.

Porada: Przechowuj ścieżkę do projektu serwera MCP bez spacji i nieużywanych znaków specjalnych. To uprości konfigurację i zmniejszy ryzyko błędów z cudzysłowami.

Oczekiwany rezultat

Gotowy folder projektu serwera MCP z zainstalowanymi zależnościami. Wiesz, gdzie i jak w Twoim kliencie MCP dodać nowy serwer oraz gdzie znajduje się plik konfiguracyjny klienta.

Możliwe problemy i rozwiązania

  • npm nie znaleziono → Node.js został zainstalowany bez npm lub nie dodano go do PATH. Przeinstaluj Node.js z włączeniem npm i uruchom ponownie terminal.
  • Brak dostępu do katalogu → Uruchom terminal z prawami użytkownika z uprawnieniami do zapisu lub użyj folderu w swoim profilu.
  • Nie znaleziono pliku konfiguracyjnego klienta → Otwórz pomoc swojego klienta MCP lub lokalną dokumentację na stronie mcp.html, aby wyjaśnić ścieżkę.

Weryfikacja: Wykonaj npm list w folderze projektu i upewnij się, że pakiety @modelcontextprotocol/sdk, axios i https-proxy-agent są zainstalowane. Plik konfiguracyjny klienta MCP został znaleziony, a kopia jego oryginalnego stanu została zachowana.

Podłączenie mobilnego proxy do klienta MCP

Cel etapu

Aby wszystkie wywołania sieciowe narzędzi wykonywanych przez serwer MCP przechodziły przez mobilne proxy. Rozważymy dwa podejścia: globalne zmienne środowiskowe i proxy na poziomie kodu.

Kroki do wykonania (przez zmienne środowiskowe klienta)

  1. Otwórz konfigurację klienta MCP i znajdź sekcję dodawania własnych serwerów (na przykład mcpServers).
  2. Dodaj nowy serwer, określając komendę uruchomienia Node.js i ścieżkę do Twojego index.js. Przykład struktury: nazwa serwera, pole command: node, args: ["ścieżka/do/index.js"].
  3. W sekcji env podaj zmienne: HTTP_PROXY i HTTPS_PROXY z wartością http://user:password@host:port. Jeśli używasz nieautoryzowanego proxy przez IP, podaj tylko host:port.
  4. W razie potrzeby dodaj NO_PROXY dla wewnętrznych adresów, które nie powinny przechodzić przez proxy (na przykład localhost, 127.0.0.1).
  5. Dodaj zmienne do rotacji, jeśli chcesz ją wywołać z serwera: na przykład MOBILEPROXY_ROTATE_URL i MOBILEPROXY_API_KEY, jeśli dostawca wymaga klucza.
  6. Zapisz konfigurację i uruchom ponownie klienta MCP, aby przeczytał nowy wpis i uruchomił Twój serwer z odpowiednimi zmiennymi środowiskowymi.

Kroki do wykonania (przez proxy na poziomie kodu)

  1. Otwórz index.js i połącz https-proxy-agent lub axios-proxy-config.
  2. Stwórz agenta z danymi z process.env: host, port, user, password.
  3. Przekaż agenta w każdym HTTP-zapytaniu w ramach narzędzi serwera MCP.
  4. Dla elastyczności dodaj możliwość wyboru: jeśli zmienne środowiskowe nie są określone, użyj bezpośredniego połączenia; jeśli są określone — użyj proxy.

Porada: Zacznij od zmiennych środowiskowych na poziomie klienta: to szybsze i prostsze na pierwszy start. Później, w miarę potrzeby, dodaj drobną kontrolę w kodzie.

Oczekiwany rezultat

Klient MCP uruchamia Twój serwer z ustawionymi zmiennymi środowiskowymi, a wszystkie wychodzące wywołania HTTP od narzędzi serwera są realizowane przez mobilne proxy.

Możliwe problemy i rozwiązania

  • Serwer się nie uruchamia → Nieprawidłowa ścieżka do skryptu w args lub brak uprawnień do uruchomienia. Sprawdź ścieżkę, użyj ścieżek absolutnych, jeśli to konieczne.
  • Proxy jest ignorowane → Klient nie przekazał env serwerowi. Upewnij się, że ustawiasz env w konfiguracji konkretnego serwera MCP, a nie globalnie lub w innej sekcji.
  • Autoryzacja do proxy nie przechodzi → Sprawdź, czy login/hasło nie zawierają znaków @ i : bez kodowania URL. W razie potrzeby ustaw je jako oddzielne zmienne (PROXY_USER, PROXY_PASS) i zbierz URI w kodzie.

Weryfikacja: Uruchom narzędzie, które wykonuje HTTP-zapytanie, i porównaj zewnętrzny IP przed i po włączeniu proxy. Powinien on zgadzać się z IP Twojego mobilnego proxy.

Przykład na bazie serwera MCP mobileproxy.space

Cel etapu

Stworzyć minimalny serwer MCP, który: 1) potrafi uzyskać zewnętrzny IP przez mobilne proxy, 2) potrafi wywołać rotację IP, 3) wykonuje dowolne HTTP-zapytanie przez mobilne proxy. Używamy pakietu @modelcontextprotocol/sdk oraz axios, a dostawcą jest serwer MCP mobileproxy.space jako przykład integracji z dostawcą mobilnych proxy.

Kod serwera MCP (index.js)

Poniżej znajduje się przykład w JavaScript. Rejestruje trzy narzędzia: get_external_ip, rotate_ip i fetch_url. Narzędzia używają proxy, a parametry są pobierane z zmiennych środowiskowych. Jako URL zewnętrznego IP używamy standardowego endpointu ipify, a rotację — przez MOBILEPROXY_ROTATE_URL.

Przykład kodu:

Zachowaj jako index.js

const { Server } = require('@modelcontextprotocol/sdk'); const axios = require('axios'); const { HttpsProxyAgent } = require('https-proxy-agent'); function buildProxyAgent() { const host = process.env.PROXY_HOST; const port = process.env.PROXY_PORT; const user = process.env.PROXY_USER; const pass = process.env.PROXY_PASS; if (!host || !port) return null; let auth = ''; if (user && pass) {auth = encodeURIComponent(user) + ':' + encodeURIComponent(pass) + '@'; } const proxyUrl = 'http://' + auth + host + ':' + port; return new HttpsProxyAgent(proxyUrl); } async function axiosViaProxy(url, opts = {}) { const agent = buildProxyAgent(); const cfg = { url, method: opts.method || 'GET', headers: opts.headers || {}, data: opts.data, timeout: 20000 }; if (agent) {cfg.httpsAgent = agent;cfg.httpAgent = agent;cfg.proxy = false; } return axios(cfg); } const server = new Server({ name: 'mcp-mobileproxy-space', version: '1.0.0' }); server.tool('get_external_ip', { description: 'Zwraca zewnętrzny IP przez mobilne proxy', inputSchema: { type: 'object', properties: {}, additionalProperties: false } }, async () => { const res = await axiosViaProxy('https://api.ipify.org?format=json'); return { content: [{ type: 'text', text: JSON.stringify(res.data) }] }; }); server.tool('rotate_ip', { description: 'Wywołuje rotację IP u dostawcy mobilnego proxy', inputSchema: { type: 'object', properties: {}, additionalProperties: false } }, async () => { const rotateUrl = process.env.MOBILEPROXY_ROTATE_URL; if (!rotateUrl) {return { content: [{ type: 'text', text: 'MOBILEPROXY_ROTATE_URL nie zostanie wskazany' }] }; } const res = await axiosViaProxy(rotateUrl); return { content: [{ type: 'text', text: 'Rotacja została zażądana: ' + res.status }] }; }); server.tool('fetch_url', { description: 'HTTP-zapytanie przez mobilne proxy', inputSchema: { type: 'object', properties: { url: { type: 'string' }, method: { type: 'string', enum: ['GET','POST','PUT','DELETE'], default: 'GET' }, headers: { type: 'object', additionalProperties: { type: 'string' } }, body: { type: 'string' } }, required: ['url'], additionalProperties: false } }, async (input) => { const cfg = { method: input.method || 'GET', headers: input.headers || {}, data: input.body }; const res = await axiosViaProxy(input.url, cfg); const out = { status: res.status, headers: res.headers, snippet: typeof res.data === 'string' ? res.data.slice(0, 500) : JSON.stringify(res.data).slice(0, 500) }; return { content: [{ type: 'text', text: JSON.stringify(out) }] }; }); server.start();

Ustawienie zmiennych środowiskowych

  1. W konfiguracji klienta MCP, obok wpisu takiego jak serwer, dodaj env: PROXY_HOST, PROXY_PORT, PROXY_USER, PROXY_PASS.
  2. Dodaj MOBILEPROXY_ROTATE_URL, podany przez dostawcę mobilnego. Na przykład, może to być zabezpieczony URL, który przy zapytaniu GET inicjuje zmianę IP.
  3. Na koniec, uruchom ponownie klienta MCP, aby zastosować zmienne.

Porada: Jeśli Twój dostawca mobileproxy.space wspiera "sticky" sesje przez modyfikację nazwy użytkownika lub parametrów zapytania, stwórz oddzielne zmienne, na przykład PROXY_SESSION czy PROXY_ZONE, i na ich podstawie formułuj PROXY_USER dynamicznie.

Weryfikacja działania narzędzi

  1. W interfejsie klienta MCP znajdź listę narzędzi serwera mcp-mobileproxy-space: get_external_ip, rotate_ip, fetch_url.
  2. Wywołaj get_external_ip i upewnij się, że zwraca JSON z Twoim zewnętrznym IP przez proxy.
  3. Wywołaj rotate_ip i poczekaj na potwierdzenie statusu 200 lub innego kodu sukcesu, jeśli dostawca tak odpowiada.
  4. Wywołaj fetch_url z parametrem url: https://example.org i sprawdź, czy w odpowiedzi jest fragment HTML oraz kod 200.

Weryfikacja: Po wywołaniu get_external_ip zewnętrzny IP, który widzisz w odpowiedzi, zgadza się z tym, co pokazuje Twój panel w mobileproxy.space. Po rotate_ip IP zmienia się na nowy (zgodnie z zasadami Twojego planu i dostawcy).

Możliwe problemy i rozwiązania

  • Narzędzia się nie wyświetlają → Serwer się nie uruchomił. Sprawdź logi klienta i ścieżkę do index.js. Uruchom serwer osobno: node index.js, aby zobaczyć możliwe błędy.
  • rotate_ip zwraca błąd → Sprawdź wartość MOBILEPROXY_ROTATE_URL i dostęp z Twojej sieci. Upewnij się, że URL jest poprawny i autoryzacja nie jest wymagana osobno.
  • fetch_url zwraca nieoczekiwane nagłówki → Niektóre strony opierają się na User-Agent i Accept-Language. Przekaż je w nagłówkach, aby imitować zwykłą przeglądarkę.

Porada: Aby stabilizować zapytania, włącz w nagłówkach User-Agent, Accept, Accept-Language. Jest to szczególnie przydatne przy parsowaniu HTML i interakcji z API oczekującymi klienta z określoną sygnaturą.

Krok 4: Dostosowanie dla klienta i serwera

Cel etapu

Debugowanie i stabilizacja konfiguracji: logowanie, time-outy, "sticky" sesje, ponowne uruchamianie serwera w przypadku błędów, ograniczenie częstotliwości zapytań i właściwa strategia rotacji.

Szczegółowa instrukcja krok po kroku

  1. Dodaj zaawansowane logowanie. W index.js otocz wywołania axiosViaProxy w try/catch, logując kody odpowiedzi, opóźnienia i błędy z znacznikami czasu.
  2. Skonfiguruj time-outy. Dla niestabilnych zasobów zmniejsz time-outy i włącz powtórzenie zapytania z opóźnieniem wykładniczym (backoff), jeśli to wskazane.
  3. Włącz "sticky" sesje dla zadań, które wymagają sekwencyjności: przechowuj session_id w env lub w stanie serwera i dynamicznie formułuj PROXY_USER.
  4. Ogranicz częstotliwość wywołań fetch_url: dodaj licznik zapytań i odstęp oczekiwania pomiędzy zapytaniami do tego samego domeny. Zmniejsza to ryzyko czasowych blokad u docelowych zasobów.
  5. Skonfiguruj ponowne uruchamianie serwera. Jeśli upada z powodu błędów sieci, użyj menedżera procesów (na przykład node z flagą — lub alternatywnych narzędzi, które są stosowne w Twoim środowisku), aby serwer uruchamiał się automatycznie.
  6. Odzwierciedl w kodzie swój regulamin rotacji IP: na przykład, po N pomyślnych zapytaniach lub co M minut, jeśli to jest dozwolone przez zasady dostawcy.

Porada: Dodaj komendę-narzędzie server_status, która zwraca Twoje aktualne stan: aktywne session_id, licznik zapytań, czas do następnej rotacji. Ułatwi to wsparcie i kontrolę.

Oczekiwany rezultat

Twój serwer MCP jest odporny na losowe błędy, poprawnie wykorzystuje "sticky" sesje i rotację, loguje ważne wydarzenia, a częstotliwość zapytań można regulować bez modyfikacji kodu klienta.

Możliwe problemy i rozwiązania

  • Nadmierne logi → Wprowadź poziomy logowania (info, warn, error) i przełączaj je przez zmienną środowiskową LOG_LEVEL.
  • Wolne przetwarzanie → Sprawdź, czy nie włączyłeś zbyt agresywnych opóźnień lub nie za często rotujesz IP.
  • Losowe zerwania połączeń → Włącz keep-alive na agentach i zmniejsz liczbę jednoczesnych połączeń do jednego hosta.

Weryfikacja: Z logów wynika, że zapytania stabilnie się wykonują, a przy rotacji nowy IP jest sprawnie potwierdzany przez wywołanie get_external_ip. Błędy są obsługiwane bez upadku serwera.

Krok 5: Diagnostyka i logowanie

Cel etapu

Nauczyć się szybko identyfikować i rozwiązywać problemy sieciowe: a) autoryzacja do proxy, b) time-outy, c) nieprawidłowe nagłówki, d) błędy routingu i e) konflikty zmiennych środowiskowych.

Kroki do wykonania

  1. Sprawdź zmienne środowiskowe przed uruchomieniem: wyświetl process.env.PROXY_HOST i inne kluczowe zmienne w logach podczas uruchamiania serwera (bez haseł).
  2. Zrób oddzielne testowe zapytanie z kodu (na przykład, do ipify) i wyświetl pełny obiekt odpowiedzi: kod, nagłówki, pierwsze bajty treści.
  3. Wykonaj minimalne metryki: czas DNS, czas ustanowienia TLS, całkowity czas odpowiedzi. To pomoże zrozumieć, gdzie jest "wąskie gardło".
  4. Sprawdź nagłówki, które wysyłasz: User-Agent, Accept, Content-Type. Upewnij się, że odpowiadają one oczekiwaniom docelowego API lub strony.
  5. Przeprowadź test z curl w celu porównania. Jeśli curl przez ten sam proxy działa stabilnie, a serwer już nie, szukaj problemu w kodzie (agent, time-out, proxy=false dla axios).

Porada: Przechowuj zamaskowane logi autoryzacji: zamieniaj część loginu i hasła gwiazdkami przy wyjściu do logów. To przyspieszy analizę incydentów bez ryzyka wycieku sekretów.

Oczekiwany rezultat

Potrafisz szybko zlokalizować problem: odróżniać time-outy sieciowe od błędów autoryzacji lub nieprawidłowych nagłówków, widzieć, gdzie i dlaczego zapytania spowalniają lub są odrzucane.

Możliwe problemy i rozwiązania

  • HTTP 403 lub 429 → Zbyt częste zapytania lub podejrzana sygnatura klienta. Zmniejsz częstotliwość, skonfiguruj nagłówki, użyj "sticky" sesji w ramach zadania.
  • Rzadkie błędy połączenia → Zwiększ time-outy i włącz powtórki zapytań z stopniowym zwiększaniem opóźnienia. Sprawdź stabilność mobilnego kanału u dostawcy.
  • Nieodpowiedniość danych → Porównaj odpowiedzi przez i bez proxy na testowej konfiguracji. Sprawdź kodowanie i przekazuj odpowiednie nagłówki Accept-Charset.

Weryfikacja: Na podstawie wyników testów masz mapę problemów: wiesz, ile czasu zajmuje każdy etap zapytania i możesz celowo optymalizować konfigurację.

Weryfikacja wyniku

Lista kontrolna

  • Narzędzia serwera MCP wyświetlają się w kliencie.
  • Wywołanie get_external_ip zwraca IP mobilnego proxy.
  • Rotacja IP jest przeprowadzana i potwierdzana poprzez zmianę IP.
  • Dowolne zapytanie fetch_url przechodzi pomyślnie do kilku domen.
  • Logi są zrozumiałe: widać kody odpowiedzi, czasy i minimalne komunikaty diagnostyczne.

Jak przetestować

  1. Wykonaj trzy sekwencyjne zapytania get_external_ip i zapisz IP. Następnie wywołaj rotate_ip i powtórz get_external_ip. Upewnij się, że IP zmieniło się zgodnie z zasadami Twojego planu.
  2. Wykonaj fetch_url do dwóch różnych domen. Porównaj kody i nagłówki. Upewnij się, że nie ma systematycznych błędów.
  3. Wykorzystaj "sticky" sesję (jeśli jest przewidziana) i sprawdź, czy IP pozostaje niezmienione przez czas sesji.

Wskaźniki udanego wykonania

  • Stabilny procent udanych zapytań (200 OK) do Twoich docelowych zasobów.
  • Przewidywalna rotacja i brak niespodziewanych "skoków" IP podczas "sticky" sesji.
  • Niska liczba time-outów przy właściwych time-outach i retrajach.

Porada: Wdróż automatyczny test "punktu kontrolnego" w swoim CI: uruchomienie get_external_ip i jednego fetch_url przed wdrożeniem. To umożliwi wczesne zauważenie problemów u dostawcy lub w konfiguracji.

Częste błędy

Problem → Przyczyna → Rozwiązanie

  • Proxy się nie stosuje → Zmienne środowiskowe nie są przekazywane do procesu serwera → Ustaw env na poziomie zapisu serwera MCP w konfiguracji klienta i uruchom ponownie klienta.
  • Autoryzacja do proxy nie przechodzi → Znaki specjalne w loginie/haśle psują URI → Ustaw login/hasło jako oddzielne zmienne i zbierz proxyUrl z encodeURIComponent.
  • HTTP 429 Too Many Requests → Zbyt częsta rotacja lub wysoki RPS → Ogranicz częstotliwość zapytań, użyj kolejki, zastosuj "sticky" sesje dla operacji sekwencyjnych.
  • Losowe 5xx u docelowego serwisu → Agresywne retraje „dobijają” niestabilny zasób → Wprowadź jitter w backoff i zmniejsz liczbę powtórzeń.
  • Brak narzędzi na panelu → Serwer MCP upadł przy starcie → Uruchom serwer w terminalu, przeczytaj stack trace, popraw błędy składniowe, a następnie ponownie podłącz.
  • IP się nie zmienia po rotacji → Rotacja się nie zakończyła lub zbuforowano trasę → Poczekaj na interwał przewidziany przez dostawcę lub zażądaj potwierdzenia statusu rotacji przez ich API.
  • Konflikty z lokalnymi serwisami → Zastosowałeś proxy do wszystkiego, w tym do localhost → Użyj NO_PROXY=localhost,127.0.0.1, aby lokalne wywołania odbywały się bezpośrednio.

Weryfikacja: Powtórz problematyczny scenariusz po wprowadzeniu poprawek. Upewnij się, że objaw zniknął: proxy zastosowane, autoryzacja przechodzi, kody odpowiedzi są oczekiwane.

Dodatkowe możliwości

Zaawansowane ustawienia

  • Sekrety i klucze: przenieś wszystkie hasła i klucze do zmiennych środowiskowych lub menedżerów sekretów. Nie zanurzaj ich w kodzie.
  • Geotargeting: jeśli mobileproxy.space oferuje wybór kraju/regionalności, stwórz narzędzie set_region i przełączaj geografię bez ponownego uruchamiania serwera.
  • Pule proxy: dla dużych obciążeń użyj puli z kilku mobilnych punktów i zasady redystrybucji (round-robin, według domeny, według zadania).
  • Kontrola częstotliwości: dodaj globalny rate limiter do serwera, aby nie zależeć od dyscypliny agentów.

Optymalizacja

  • Cache: dla niezmiennych zasobów cache'uj odpowiedzi przez krótki czas. To zmniejszy ruch i przyspieszy odpowiedzi.
  • Równoległość: ograniczaj równoczesne zapytania do jednego hosta, ale pozwalaj na równoległość w hostach, aby nie tworzyć "wąskiego gardła".
  • Profilowanie: zbieraj metryki według domen i typów zapytań. Tak dowiesz się, gdzie optymalizacja przyniesie największy efekt.

Co jeszcze można zrobić

  • Dodaj narzędzie do sprawdzania dostępności celowych zasobów (healthcheck_url) z raportem.
  • Wbuduj eksport logów do scentralizowanego magazynu, na przykład na dziennik zdarzeń Twojej infrastruktury.
  • Przygotuj instrukcje dla zespołu i umieść je na wewnętrznej stronie mcp.html obok szablonów konfiguracji.
  • Zbadaj szczegółowy materiał o doborze i konfigurowaniu proxy dla agentów na stronie materiał o proxy dla AI-agentów.

Porada: Uformuj "profile połączenia" — dev, stage, prod — z różnymi limitami i stopniem logowania. To uprości utrzymanie i audyt.

FAQ

1. Jak długo trwa "sticky" sesja mobilnego proxy?

To zależy od taryfy dostawcy. Zazwyczaj dostawcy oferują przedziały 10–30 minut. Sprawdź w panelu użytkownika mobileproxy.space i ustaw interwał w swoim serwerze MCP.

2. Jak ustalić, że zapytanie rzeczywiście przechodzi przez mobilne proxy?

Porównaj zewnętrzny IP przed i po włączeniu proxy przez get_external_ip. Dodatkowo prowadź logi po stronie serwera i, jeśli masz, porównuj je z danymi z panelu dostawcy.

3. Czy można ustawić różne proxy dla różnych narzędzi?

Tak. Na poziomie kodu stwórz kilka agentów proxy i wybieraj je w zależności od nazwy narzędzia lub domeny. Na poziomie klienta — uruchom kilka serwerów z różnymi env.

4. Co zrobić, jeśli celowa strona wymaga szczególnych nagłówków?

Przekazuj potrzebne nagłówki przez parametr headers w narzędziu fetch_url. Często przydatne są User-Agent, Accept, Accept-Language, Referer.

5. Jak uniknąć wycieków sekretów w logach?

Maskuj wrażliwe ciągi i nie loguj pełnych URL z hasłami. Przechowuj sekrety tylko w zmiennych środowiskowych i używaj rotacji haseł.

6. Czy można używać proxy tylko dla niektórych domen?

Tak. Na poziomie kodu warunkowo stosuj agenta proxy tylko do potrzebnych domen. Inne zapytania wysyłaj bezpośrednio. Lub stwórz dwa narzędzia: fetch_proxy i fetch_direct.

7. Co zrobić, jeśli rotacja nie zmienia IP?

Poczekaj na czas wskazany przez dostawcę i sprawdź status rotacji. Upewnij się, że nie masz "sticky" sesji, jeśli oczekujesz na natychmiastową zmianę IP.

8. Jak skalować pod wysokie obciążenie?

Użyj puli mobilnych punktów, ogranicz równoległość według domeny, dodaj kolejkę zapytań i inteligentny backoff. Dla pracy agenta — rozdzielaj zadania według profili.

9. Gdzie trzymać dokumentację zespołu?

Wewnętrzna strona mcp.html nadaje się do umieszczenia instrukcji, szablonów konfiguracji i regulaminów rotacji. Aktualizuj ją zgodnie z postępem rzeczowym.

10. Można podłączyć mobileproxy.space jako gotowy serwer MCP?

Tak, jeśli masz odpowiedni serwer lub adapter, który dostarcza narzędzia rotacji i wywołań przez ich infrastrukturę. W powyższym przykładzie pokazane jest, jak zbudować taki serwer samodzielnie na bazie SDK.

Porada: Wprowadź wewnętrzny "paszport" serwera: nazwa, wersja, lista narzędzi, kontakt z osobą odpowiedzialną. To przyspiesza wsparcie i ułatwia szkolenie nowych kolegów.

Podsumowanie

Przeszedłeś wszystkie etapy: zrozumiałeś, czym jest MCP i dlaczego mobilne proxy są ważne dla stabilnej pracy narzędzi AI; przygotowałeś środowisko; podłączyłeś mobilne proxy do klienta MCP; zrealizowałeś działający przykład serwera MCP z narzędziami get_external_ip, rotate_ip i fetch_url na bazie mobileproxy.space; skonfigurowałeś zaawansowaną konfigurację, logi i diagnostykę; przeprowadziłeś testy; omówiłeś typowe błędy i zaawansowane możliwości. Teraz masz powtarzalną architekturę: klient MCP zarządza narzędziami, serwer MCP wykonuje działania sieciowe, a mobilne proxy zapewnia przewidywalną i konfigurowalną trasę sieci.

Teraz możesz: 1) Podzielić serwer na moduły dla różnych zadań; 2) Dodać profile środowisk dev/stage/prod; 3) Włączyć pulę proxy i dynamiczny wybór trasy; 4) Udokumentować niuanse na wewnętrznej stronie mcp.html i odwołać się do rozszerzonego materiału o proxy dla AI-agentów.

Rozwijaj się w kierunku automatyzacji: podłącz metryki, alerty o degradowaniu, testy automatyczne i zarządzaną rotację IP według harmonogramu lub obciążenia. Im lepiej sformalizowana jest Twoja sieć, tym łatwiej jest skalować agentów i utrzymywać jakość usług.

Porada: Regularnie przeglądaj limity i taryfy dostawcy mobileproxy.space, aby nie przekraczać kwot w godzinach szczytu. Planuj pojemność i trzymaj rezerwową konfigurację na wypadek niedostępności jednego punktu.