Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Important
Zdalny serwer protokołu Model Context Protocol (MCP) dla Playwright Workspaces jest dostępny w wersji zapoznawczej. Funkcje w wersji zapoznawczej nie są objęte umową SLA i nie są zalecane w obciążeniach produkcyjnych. Funkcje, ograniczenia i dostępność mogą się zmieniać.
Zdalny serwer MCP Playwright Workspaces zapewnia agentom AI zarządzaną zdalną przeglądarkę oraz zestaw narzędzi do automatyzacji przeglądarki. Agent może otworzyć sesję przeglądarki, nawigować po stronach, znaleźć i wchodzić w interakcje z elementami, sprawdzać aktywność przeglądarki, robić zrzuty ekranu i zamykać sesję. Nie musisz instalować Playwrighta ani przeglądarki w środowisku agenta.
Serwer korzysta z Model Context Protocol zamiast Streamable HTTP. Współpracuje z klientami MCP obsługującymi zdalne serwery HTTP oraz niestandardowe nagłówki uwierzytelniania, w tym Microsoft Foundry Agent Service oraz Visual Studio Code.
W tym artykule dowiesz się, jak:
- Zbuduj endpoint MCP dla przestrzeni roboczej Playwright.
- Połącz serwer z usługą Microsoft Foundry Agent Service lub Visual Studio Code.
- Uruchamiaj kompletne przepływy automatyzacji przeglądarki opartych na agentach.
- Wybierz i bezpiecznie korzystaj z dostępnych narzędzi przeglądarkowych.
Wymagania wstępne
Przed rozpoczęciem upewnij się, że masz następujące elementy:
- Konto platformy Azure z aktywną subskrypcją.
- Identyfikator przestrzeni roboczej i region platformy Azure tej przestrzeni roboczej.
- Token dostępu do przestrzeni roboczej, którego właściciel ma uprawnienia do tworzenia i korzystania z sesji przeglądarki.
- Dla Microsoft Foundry, projekt Foundry oraz uprawnienia do tworzenia połączeń projektów i konfigurowania agentów.
- W przypadku programu Visual Studio Code: aktualna wersja programu Visual Studio Code z dostępem do GitHub Copilot i włączoną obsługą MCP.
Caution
Microsoft Entra ID to zalecana metoda uwierzytelniania dla Playwright Workspaces. Ten artykuł podglądowy wykorzystuje uwierzytelnianie tokenów dostępu w przestrzeni roboczej dla klientów, którzy potrzebują niestandardowego nagłówka. Tokeny dostępu są mniej bezpieczne i domyślnie wyłączone. Traktuj token dostępu jak hasło. Nigdy nie zatwierdzaj tego w systemie kontroli wersji, nie umieszczaj tego w prompcie ani nie zapisuj tego w logach.
Aby utworzyć token dostępu do przestrzeni roboczej, zobacz Zarządzaj tokenami dostępu do przestrzeni roboczej.
Zbuduj zdalny punkt końcowy MCP
Punkt końcowy jest ograniczony do jednej przestrzeni roboczej i regionu:
https://<region>.mcp.playwright.microsoft.com/playwrightworkspaces/<workspace-id>/mcp
Replace:
- "region" z regionem Azure w przestrzeni roboczej.
- "workspace-id" z identyfikatorem workspace wyświetlanym w portalu Azure.
Przykład:
https://eastus.mcp.playwright.microsoft.com/playwrightworkspaces/00000000-0000-0000-0000-000000000000/mcp
Wartość w nagłówku żądania klucza x-API musi być tokenem dostępu utworzonym dla tej samej przestrzeni roboczej co "workspace-id". Użyj punktu końcowego dla regionu przestrzeni roboczej, a nie regionu najbliższego klientowi MCP.
Zrozum cykl życia sesji przeglądarki
Przepływ automatyzacji przeglądarki składa się z trzech etapów:
- Zadzwoń do
create_browser_session. Wynik zawiera niejawnybrowserSessionIdi może zawierać adres URL widoku na żywo. - Przekaż to
browserSessionIdkażdemu narzędziu przeglądarki używanemu w tym przepływie. - Wywołaj
close_browser_sessionw kroku czyszczenia, nawet jeśli przepływ się nie powiedzie.
Transport HTTP MCP nie zachowuje stanu przeglądarki.
browserSessionId identyfikuje zdalną przeglądarkę w ramach oddzielnych wywołań narzędzia. Zachowaj to w tajemnicy i używaj tylko z przestrzenią roboczą i tożsamością, która ją stworzyła.
Obecne zachowanie podglądu obejmuje następujące ograniczenia:
- Sesja należy do jej twórcy i nie może być współdzielona z innym podmiotem.
- Połączenia na jedną sesję są przetwarzane w kolejności. Nie wnosz jednoczesnych działań przeciwko tej samej sesji.
- Nieaktywna sesja jest sprzątana po 15 minutach, jeśli wyraźnie nie jest zamknięta.
- Zamknięta lub wygasła sesja nie może zostać ponownie otworzyta.
- Utrata połączenia jest kluczowa dla sesji. Stwórz nową sesję, aby kontynuować.
- Wynik może zawierać element
liveViewUrl. Dostępność trybu na żywo zależy od sesji.
Połącz się z usługą agenta Microsoft Foundry
Użyj połączenia projektu Foundry do przechowywania tokena dostępu. Nie umieszczaj tokena w instrukcjach agenta ani kodzie aplikacji.
Utwórz połączenie projektu
- Otwórz swój projekt w portalu Microsoft Foundry.
- Otwórz doświadczenie zarządzania projektem, a następnie wybierz Połączone zasoby.
- Utwórz połączenie typu Klucze niestandardowe.
- Wprowadź opisową nazwę połączenia, taką jak
playwright-mcp-connection. - Dodaj klucz o nazwie
x-api-keyi ustaw jego wartość na token dostępu do przestrzeni roboczej Playwright. - Zapisz połączenie.
Dodaj zdalne narzędzie MCP
Stwórz lub otwórz agenta w portalu Foundry.
Dodaj zdalny serwer MCP lub narzędzie MCP.
Użyj następujących ustawień:
Setting Value Etykieta serwera Unikalna etykieta, taka jak playwrightWorkspace Adres URL serwera Zdalny punkt końcowy MCP w zakresie obszaru roboczego Połączenie projektu Wcześniej utworzone połączenie kluczy niestandardowych Approval Wymagaj zatwierdzenia każdego połączenia podczas oceny integracji Dozwolone narzędzia Zacznij tylko od narzędzi potrzebnych do przepływu Zapisz konfigurację agenta.
W instrukcjach agenta wymaga, aby agent utworzył jedną sesję, ponownie użył swojego browserSessionId i zamknął sesję po zakończeniu zadania.
Minimalna lista dozwolonych narzędzi dla przepływu nawigacji ukierunkowanego na odczyt to:
- create_browser_session
- browser_navigate
- migawka_przeglądarki
- browser_find
- browser_zrób_zrzut_ekranu
- close_browser_session
Narzędzia interakcji, takie jak browser_click czy browser_type, dodaj tylko wtedy, gdy sytuacja ich wymaga. Nie włączaj browser_evaluate ani browser_run_code domyślnie.
Informacje o bieżących polach połączeń usługi Foundry, obsłudze zatwierdzania, przykładach SDK oraz limitach klientów można znaleźć w artykule Łączenie agentów z punktami końcowymi serwera MCP.
Note
Wywołania narzędzi MCP w Foundry, które nie korzystają ze strumieniowania, mają obecnie 100-sekundowy limit czasu po stronie klienta. Niektóre operacje w Playwright mają dłuższy limit czasu po stronie usługi. Utrzymuj ukierunkowane operacje Foundry i dziel długie procesy na kilka wywołań narzędzi.
Zaprojektuj przepływ automatyzacji agentycznej
Zamiast prosić agenta o wykonanie długiej sekwencji bez sprawdzania stanu strony, stosuj pętlę obserwacji-działaj-weryfikuj.
-
Utwórz: Wywołaj
create_browser_sessioni zachowaj jegobrowserSessionId. -
Nawigacja: Zadzwoń
browser_navigateza pomocą wyraźnego, zatwierdzonego adresu URL. -
Zwróć uwagę: Użyj
browser_find, aby przeprowadzić ukierunkowane wyszukiwanie, lubbrowser_snapshot, aby uzyskać szerszy przegląd dostępności. - Działanie: Użyj odwołania do migawki lub unikalnego selektora za pomocą narzędzia interakcji.
-
Czekaj: Wywołaj
browser_wait_forna oczekiwany tekst, znikający tekst lub ograniczone opóźnienie. - Sprawdź: Zrób kolejne zdjęcie lub sprawdź aktywność konsoli i sieci.
- Obsługa gałęzi: Obsługa dialogu, przełączanie zakładek lub przesyłanie plików tylko wtedy, gdy stan strony tego wymaga.
-
Zbierz dowody: Wywołaj
browser_take_screenshot, jeśli wynik wizualny jest przydatny. Nie używaj zrzutów ekranu do wybierania celów akcji. -
Czyszczenie: Wywołaj
close_browser_sessionw ścieżce czyszczenia typu finally.
Wybierz stabilne cele akcji
Preferuj odniesienia zwracane przez browser_snapshot lub browser_find. Opisują one dostępne elementy strony i zmniejszają zależność od znaczników specyficznych dla implementacji. Używaj unikalnego selektora, gdy stabilna referencja migawki nie jest dostępna.
Odśwież zrzut po nawigacji lub po wykonaniu działania zmieniającego stronę. Wcześniej zwrócony element docelowy może stać się nieaktualny, gdy strona jest renderowana ponownie.
Bezpiecznie obsługuj dialogi
Akcja może zwrócić wynik dialog-opened po uprzedniej zmianie stanu strony. Ten rezultat nie jest typową porażką działania.
- Nie powtarzaj oryginalnej akcji.
- Wywołaj
browser_handle_dialog, ustawiającacceptnatruelubfalse. - W dialogu promptowym dodaj tylko
promptTextpodczas jego przyjmowania. - Przed kontynuacją jeszcze raz obejrzyj stronę.
Radzenie sobie z niejednoznacznymi błędami
Przekroczenie limitu czasu lub rozłączenie przez dzwoniącego nie dowodzi, że dane działanie nie odniosło skutku. Przed ponownym podjęciem próby operacji nieidempotentnej, takiej jak kliknięcie, wysłanie formularza, przesłanie czy wykonanie kodu:
- Uruchom
browser_snapshot,browser_findlub inne narzędzie do obserwacji, jeśli sesja jest nadal dostępna. - Określ, czy nastąpiła oczekiwana zmiana stanu.
- Spróbuj ponownie tylko wtedy, gdy powtarzanie czynności jest bezpieczne.
- Jeśli sesja wygasła, utwórz nową sesję i zrestartuj od znanego stanu aplikacji.
Dokumentacja narzędzia
Wszystkie narzędzia ograniczone do przeglądarki wymagają browserSessionId. Pokazane tutaj limity dla ciągów i kolekcji to bieżące limity wersji zapoznawczej.
Narzędzia sesyjne
| Tool | Parameters | Użyj |
|---|---|---|
create_browser_session |
Żadne | Tworzy zdalną przeglądarkę i zwraca browserSessionId oraz opcjonalnie liveViewUrl. |
close_browser_session |
browserSessionId |
Zamyka zdalną sesję przeglądarki. Zgłoszcie to podczas sprzątania. |
Narzędzia nawigacyjne i obserwacyjne
| Tool | Parameters | Zastosowanie i ważne zachowania |
|---|---|---|
browser_navigate |
browserSessionId, url |
Przechodzi do adresu URL. URL może zawierać do 16 KiB znaków. |
browser_navigate_back |
browserSessionId |
Przechodzi do poprzedniego wpisu w historii strony. |
browser_snapshot |
browserSessionId; opcjonalnie target, depthboxes |
Zwraca zrzut stanu dostępności. Cel akceptuje referencję migawkową lub unikalny selektor. Głębokość to 1-100. Pola zawierają dane ramek ograniczających, jeśli jest to obsługiwane. Tekst migawki jest skracany do 64 KiB i oznaczony jako obcięty. |
browser_find |
browserSessionId, text |
Wykonuje wyszukiwanie fragmentów tekstu w migawce dostępności bez rozróżniania wielkości liter i zwraca pasujące fragmenty. Tekst może zawierać do 4 096 znaków. |
browser_wait_for |
browserSessionId; dokładnie jeden z text, textGone, lub time |
Czeka na tekst, czeka, aż tekst zniknie, albo czeka od 0 do 180 sekund. |
browser_take_screenshot |
browserSessionId; opcjonalnie target, type, fullPagescale |
Zwraca osadzony obraz PNG lub JPEG. Typ to png lub jpeg. FullPage przechwytuje całą stronę zamiast domyślnego viewportu. Skala: CSS lub device. Użyj migawki, a nie obrazu, aby wybrać cele. |
browser_console_messages |
browserSessionId |
Zwraca ograniczone komunikaty konsolowe przechwycone dla aktywnej strony. |
browser_network_requests |
browserSessionId |
Zwraca ograniczone informacje o żądaniu sieciowym przechwycone dla aktywnej strony. |
Narzędzia interakcji
| Tool | Parameters | Zastosowanie i ważne zachowania |
|---|---|---|
browser_click |
browserSessionId, target; opcjonalnie button, doubleClick, modifiers |
Klika w cel. Przycisk jest lewy, prawy lub środkowy. Akceptuje do pięciu modyfikatorów od Alt, Control, ControlOrMeta, Meta i Shift. Nie ponawiaj bezrefleksyjnie kliknięcia, które przekroczyło limit czasu. |
browser_type |
browserSessionId, target, ; textopcjonalnie submit, slowly |
Wprowadza tekst w elementie edytowalnym. Po naciśnięciu „Submit” naciśnij następnie klawisz Enter. Powoli pisze sekwencyjnie. |
browser_fill_form |
browserSessionId, fields |
Wypełnia od 1 do 50 pól. Każde pole zawiera cel, ciąg lub wartość boolowską oraz opcjonalną nazwę i typ. Awaria może pozostawić wcześniejsze pola zaktualizowane. |
browser_press_key |
browserSessionId, key |
Naciska deskryptor klawisza Playwright, taki jak Enter, ArrowLeft lub Control+C. |
browser_select_option |
browserSessionId, target, values |
Wybiera wartości opcji od 1 do 100. Każda wartość może zawierać do 4 096 znaków. |
browser_hover |
browserSessionId, target |
Najeżdża na element docelowy, co może wyświetlić menu lub etykietki narzędzi. |
browser_handle_dialog |
browserSessionId, accept; opcjonalnie promptText |
Akceptuje lub zamyka aktualnie blokujące okno dialogowe przeglądarki. |
browser_drag |
browserSessionId, startTarget, endTarget |
Przeciąganie z jednego elementu docelowego do drugiego. Oba cele muszą się rozstrzygnąć na aktywnej stronie. |
Zakładki, pliki i narzędzia do kodowania
| Tool | Parameters | Zastosowanie i ważne zachowania |
|---|---|---|
browser_tabs |
browserSessionId, action; opcjonalnie index, url |
Listuje, tworzy, wybiera lub zamyka zakładki.
action jest list, new, select lub close.
index jest wymagane w przypadku select; w przypadku close pominięcie oznacza aktywną kartę. Indeksy są numerowane od zera. |
browser_file_upload |
browserSessionId, files; opcjonalnie target |
Przesyła od 1 do 20 plików zakodowanych w formacie base64 za pośrednictwem docelowego pola wyboru pliku lub oczekującego okna wyboru plików. Zobacz limity przesyłania plików. |
browser_evaluate |
browserSessionId, function; opcjonalnie target |
Ocenia funkcję JavaScript na stronie lub w odniesieniu do celu. Może odczytać lub zmieniać stan strony. |
browser_run_code |
browserSessionId, code |
Uruchamia funkcję Playwright JavaScript z dostępem do strony. To narzędzie ma najwyższe przywileje i może powodować dowolne skutki uboczne. |
Czyszczenie
Po każdym etapie automatyzacji:
- Połącz
close_browser_sessionużywając aktywnegobrowserSessionId. - Usuń agentów testowych lub powiązania projektów, których nie potrzebujesz.
- Cofnij tymczasowe tokeny dostępu do przestrzeni roboczej.
- W Visual Studio Code zatrzymaj lub usuń serwer MCP, jeśli połączenie już nie jest potrzebne.
Zamknięcie sesji szybko zwalnia pojemność przeglądarki i zmniejsza ryzyko nieoczekiwanej aktywności lub wykorzystania limitów.