Odebranie dostępu agentowi AI: test serwera MCP
W teście z 12 października 2026 oficjalny serwer plików MCP 1.0.0 odmówił odczytu po wycofaniu dostępu w aktywnej sesji, także po nadejściu starszej odpowiedzi z uprawnieniem.
Odmowę zapewnia kod serwera: specyfikacja MCP z 28 lipca 2026 nie uznaje roots za kontrolę dostępu i oznacza je jako wycofywane.
Robert Marczyński7 min czytania12 źródeł
Krótka odpowiedź: oficjalny serwer plików MCP 1.0.0 odmówił kolejnego odczytu po wycofaniu dostępu w moim teście z 12 października 2026. Sesja pozostawała otwarta, a ponowne nadanie uprawnienia przywróciło odczyt. Odebranie dostępu agentowi AI sprawdziłem na rzeczywistym pakiecie serwera, przez skrypt zastępujący klienta MCP, bez modelu AI. Test objął też opóźnione odpowiedzi aktualizujące uprawnienia. Specyfikacja MCP z 28 lipca 2026 traktuje listę katalogów (roots) jako wskazówkę i oznacza ją jako wycofywaną, więc odmowę zapewnia tu kod badanego serwera.
Dla firmy odbierającej integrację to konkretne kryterium: wykonawca powinien pokazać odmowę operacji w sesji, która wcześniej miała dostęp. Zmiana ustawienia w panelu to dopiero początek tej próby.
Co poprawiono w serwerze plików MCP
Wydanie referencyjnych serwerów MCP v1.0.0 z 11 października 2026 zawiera poprawkę wycofywania dostępu do plików. GitHub odnotowuje publikację o 02:40 UTC. Numer dotyczy wydania repozytorium i wskazanych pakietów; wersje samego protokołu MCP mają odrębne oznaczenia.
MCP to sposób, w jaki aplikacja agenta komunikuje się z narzędziami. W badanej integracji klient przekazuje serwerowi listę katalogów nazywanych roots. Serwer plików wykorzystuje ją do ustalenia, do których plików dopuści operacje. Gdy lista się zmienia, klient wysyła powiadomienie, a serwer pobiera jej nową wersję.
Według opisu poprawki nr 5096 wcześniejsza implementacja mogła zachować stare dozwolone katalogi, gdy klient wycofał wcześniej aktywne roots i nie pozostał żaden poprawny katalog. Poprawka czyści wtedy listę dostępu. Ten sam pakiet zawiera zmiany chroniące przed nadpisaniem nowszej listy starszą odpowiedzią oraz wstrzymujące narzędzia podczas odświeżenia.
To opis konkretnego serwera referencyjnego. Nie ustala zachowania serwera CRM, dysku chmurowego ani innej integracji tylko dlatego, że również używa MCP. Poprzedniego wydania nie uruchamiałem, więc opis jego błędu pochodzi od autorów poprawki.
Mój skrypt i serwer uzgodniły wersję protokołu 2025-06-18. Najnowsza specyfikacja MCP z 28 lipca 2026 oznacza roots jako funkcję wycofywaną: zostaje w protokole co najmniej 12 miesięcy od publikacji, ale nowe wdrożenia nie powinny jej przyjmować. Ta sama specyfikacja nazywa roots wskazówką dla serwera i zaznacza, że protokół nie wymusza trzymania się tych katalogów. Odmowę w moim teście zapewnił więc kod badanego serwera. Według README repozytorium serwery referencyjne to przykłady edukacyjne dla programistów, niegotowe do zastosowań produkcyjnych.
Jak sprawdziłem odebranie dostępu agentowi AI
Uruchomiłem przypięty pakiet npm @modelcontextprotocol/server-filesystem@1.0.0 jako osobny proces i komunikowałem się z nim przez stdio, czyli standardowe wejście i wyjście procesu. Protokół próby zapisałem przed uruchomieniem. Cała sekwencja odbyła się bez restartu serwera.
Przygotowałem dwa syntetyczne pliki z różnymi znacznikami. Jeden umieściłem w udostępnionym katalogu, drugi poza nim. Serwer nie otrzymał dodatkowych katalogów w argumentach startowych. Skrypt klienta nadawał i wycofywał dostęp oraz wywoływał narzędzie odczytu. Nie korzystałem z danych firmy, płatnego API ani konta zewnętrznego.
Najpierw sprawdziłem, że dozwolony odczyt zwraca znacznik, a próba poza katalogiem kończy się odmową. Po wycofaniu dostępu pytałem serwer o jego listę dozwolonych katalogów. Dopiero po potwierdzeniu pustego stanu wysyłałem kolejny odczyt; wyjątkiem była celowa próba odczytu w trakcie odświeżania listy. Przywrócenie katalogu i ponowny udany odczyt sprawdzały, czy wcześniejsza odmowa nie wynikała z awarii procesu.
Co zwrócił rzeczywisty serwer
W przebiegu z 12 października 2026 cztery odczyty przy nadanym dostępie zwróciły właściwy znacznik, a pięć prób bez uprawnienia zakończyło się odmową. Te liczby obejmują różne przypadki i kontrole. Nie tworzą odsetka bezpieczeństwa ani prognozy dla innych wdrożeń.
| Sprawdzana sytuacja | Wynik w aktywnej sesji |
|---|---|
| Dostęp nadany, plik w udostępnionym katalogu | Odczyt poprawny |
| Plik poza udostępnionym katalogiem | Odmowa |
| Wycofana lista katalogów, pusty stan potwierdzony | Odmowa odczytu wcześniej dostępnego pliku |
| Dostęp ponownie nadany | Odczyt znów poprawny |
| Odczyt podczas trwającego odświeżenia | Oczekiwanie na odpowiedź klienta, potem odmowa |
| Starsza odpowiedź z dostępem przychodzi po nowszym wycofaniu | Starsza odpowiedź odrzucona, odmowa utrzymana |
Najbardziej pouczające są ostatnie dwie sytuacje. W pierwszej zatrzymałem odpowiedź klienta z nową listą katalogów. Dopiero gdy serwer o nią poprosił, wysłałem odczyt. W zaplanowanym oknie obserwacji 200 ms odpowiedź na odczyt nie przyszła. Po przekazaniu pustej listy serwer odmówił dostępu. To próba zachowania przy opóźnieniu, a nie pomiar czasu reakcji w firmowej sieci.
W drugiej sytuacji wywołałem dwa odświeżenia. Nowsze odbierało dostęp, a starsza odpowiedź z uprawnieniem pozostawała wstrzymana. Po potwierdzeniu odmowy zwolniłem starszą odpowiedź. Dziennik serwera potwierdził jej odrzucenie; ponowna kontrola pokazała pustą listę i odmowę odczytu. Końcowe przywrócenie uprawnienia znów umożliwiło pobranie pliku.
Nie sprawdzałem operacji rozpoczętych przed powiadomieniem o zmianie. Taki odczyt wymaga osobnego scenariusza, bo samo nadejście wyniku po cofnięciu dostępu nie mówi, kiedy serwer rozpoczął operację.
Co wpisać do odbioru integracji w firmie
Mój wniosek z testu: przy odbiorze trzeba potwierdzić zastosowanie zmiany przez system wykonujący operację i sprawdzić jej skutek w istniejącej sesji. Dla firmy zamawiającej agenta AI proponuję taką sekwencję odbiorową:
- Wykonawca wskazuje wersję serwera i protokołu MCP, konto oraz dokładną operację objętą próbą.
- Agent pobiera syntetyczny dokument, do którego ma dostęp.
- Administrator odbiera to uprawnienie, pozostawiając sesję otwartą.
- Zespół potwierdza zastosowanie zmiany i ponawia tę samą operację.
- Po przywróceniu dostępu operacja znów działa.
- Osobna próba obejmuje opóźnione aktualizacje i inne drogi do tego samego dokumentu.
W moim badaniu rolę administratora zmieniającego listę pełnił skrypt klienta. Panel administracyjny, tożsamości użytkowników i firmowy obieg nadawania uprawnień pozostają do sprawdzenia u wykonawcy. Takie kryteria można uwzględnić w wycenie agenta AI, razem z czasem na udokumentowanie prób. Podobną próbę, zatwierdzenie operacji po cofnięciu prawa, zawiera moja karta testu asystenta głosowego AI.
Specyfikacja MCP z 28 lipca 2026 traktuje autoryzację jako opcjonalną; opisuje ją dla zdalnych serwerów działających przez HTTP, z tokenami OAuth. Serwer, który ją stosuje, ma sprawdzić token przed obsłużeniem żądania, a nieważny albo wygasły odrzucić kodem 401. Specyfikacja zaleca krótko ważne tokeny dostępu, ale ich unieważniania nie opisuje. Mój test działał przez stdio, a dla tego transportu specyfikacja odradza OAuth i wskazuje dane logowania ze środowiska, więc tokenów nie sprawdzałem. Przy odbiorze zdalnej integracji trzeba osobno sprawdzić, kiedy odebrany token przestaje działać przy kolejnych żądaniach.
Odmowa w jednym narzędziu nie rozstrzyga, czy plik jest dostępny przez inne połączenie. Ten problem pokazuję również w teście wysyłki formularza przez agenta. Cofnięcie uprawnienia nie dowodzi też usunięcia danych pobranych wcześniej. Logi, pamięć rozmowy i kopie dokumentów wymagają osobnego sprawdzenia. Jeśli agent zdążył już wyrządzić szkody, obowiązki zgłoszeniowe i ich terminy opisuję w odpowiedzi o incydencie z agentem AI.
Materiały do odtworzenia i granice wyniku
Udostępniam paczkę ZIP ze skryptem, protokołem, przypiętymi zależnościami, surową wymianą komunikatów i weryfikatorem wyników. Osobno można przeczytać metodę i instrukcję, protokół oraz wyniki JSON. Weryfikator przelicza odczyty z logów i sprawdza sumy SHA-256 plików.
To jedna sekwencja na macOS arm64, z Node.js 26.3.0 i serwerem plików 1.0.0. Nie badałem zapisów, błędów pobierania roots, wielu użytkowników, innych narzędzi ani wszystkich możliwych kolejności zdarzeń. Nie oceniam decyzji modelu AI. Wynik potwierdza opisane zachowanie pakietu w tej konfiguracji; szerszy zakres odbioru przedstawia lista kontrolna izolacji agenta.
Najczęstsze pytania
- Jak sprawdzić odebranie dostępu agentowi AI?
- W tej samej aktywnej sesji należy najpierw odczytać plik kontrolny, potem odebrać dostęp, potwierdzić zastosowanie zmiany po stronie serwera i ponowić odczyt. Następnie przywrócić uprawnienie i sprawdzić, czy odczyt znów działa. W moim teście z 12 października 2026 oficjalny serwer plików MCP 1.0.0 przeszedł tę sekwencję. Wynik dotyczy tego pakietu i konfiguracji, bez udziału modelu AI.
- Czy odebranie dostępu usuwa dane, które agent już odczytał?
- Odmowa kolejnego odczytu nie dowodzi usunięcia wcześniejszej kopii danych. Test serwera plików MCP z 12 października 2026 sprawdzał dostęp do syntetycznego pliku przez narzędzie, bez modelu AI. Nie badał pamięci rozmowy, logów, kopii plików ani innych narzędzi. Przy odbiorze firmowej integracji postępowanie z wcześniej pobranymi danymi wymaga osobnego sprawdzenia.
- Czy roots w MCP ograniczają dostęp agenta do plików?
- Sam protokół tego nie gwarantuje. Specyfikacja MCP z 28 lipca 2026, najnowsza w październiku 2026, nazywa roots wskazówką dla serwera, a nie mechanizmem kontroli dostępu, i oznacza je jako funkcję wycofywaną. Granice egzekwuje kod konkretnego serwera. W moim teście z 12 października 2026 serwer plików MCP 1.0.0 po wycofaniu roots odmawiał odczytu; wynik dotyczy tego pakietu i wersji protokołu 2025-06-18.
Źródła
Dane zewnętrzne przywołane w tekście mają tu swoje źródła.
- Model Context Protocol, servers v1.0.0: wydanie 11.10.2026 o 02:40 UTC, pakiet server-filesystem 1.0.0 i lista poprawek; odczyt 12.10.2026 (nowa karta)
- Model Context Protocol, PR 5096: wycofanie pustej listy roots po wcześniejszym udostępnieniu katalogu, włączony 10.10.2026; odczyt 12.10.2026 (nowa karta)
- Model Context Protocol, PR 5099: odrzucanie starszych odpowiedzi roots/list przy nakładających się odświeżeniach, włączony 10.10.2026; odczyt 12.10.2026 (nowa karta)
- Model Context Protocol, PR 5103: oczekiwanie wywołań narzędzi na trwające odświeżenie roots, włączony 10.10.2026; odczyt 12.10.2026 (nowa karta)
- Specyfikacja MCP 2025-06-18, Roots: deklaracja możliwości klienta, roots/list i powiadomienie o zmianie listy; odczyt 12.10.2026 (nowa karta)
- Specyfikacja MCP, Versioning: aktualna wersja protokołu 2026-07-28 i daty jako oznaczenia wersji; odczyt 13.10.2026 (nowa karta)
- Blog Model Context Protocol (28.07.2026): publikacja specyfikacji 2026-07-28; Roots, Sampling i Logging wycofywane, działają co najmniej 12 miesięcy; odczyt 13.10.2026 (nowa karta)
- Specyfikacja MCP 2026-07-28, Roots: funkcja wycofywana (SEP-2577), wskazówka dla serwera zamiast mechanizmu kontroli dostępu, protokół nie wymusza granic roots; odczyt 13.10.2026 (nowa karta)
- Specyfikacja MCP 2026-07-28, Authorization: autoryzacja opcjonalna, opisana dla transportów HTTP, przy stdio odradzana; walidacja tokenu przed obsłużeniem żądania, 401 dla nieważnego lub wygasłego; odczyt 13.10.2026 (nowa karta)
- Specyfikacja MCP 2026-07-28, Authorization Security Considerations: zalecenie krótko ważnych tokenów dostępu; część o autoryzacji nie opisuje unieważniania tokenów; odczyt 13.10.2026 (nowa karta)
- Model Context Protocol servers, README: serwery referencyjne jako przykłady edukacyjne dla programistów, niegotowe do produkcji; odczyt 13.10.2026 (nowa karta)
- Własny test z 12.10.2026: dziewięć odczytów przez oficjalny pakiet server-filesystem 1.0.0 w jednej sesji, wyniki bez modelu AI (nowa karta)
Udostępnij
Powiązane
- Wysyłka formularza przez agenta AI: gdzie działa blokadaW lokalnej demonstracji bez modelu AI z 11 października 2026 wymuszone żądanie zapisało formularz mimo instrukcji „nie wysyłaj”.
- Agent AI wyszedł z piaskownicy. Lista kontrolna izolacji dla firmyAgenci AI opisani we wrześniu 2026 dostawali więcej dostępu, niż zakładał operator: Gemini wszedł do systemów trzech firm…
- Ile kosztuje agent AI dla firmy?Agent AI kosztuje w polskich wycenach z 2026 roku 8–20 tys. zł za konfigurację i 15–45 tys. zł netto z integracjami, a do tego…
- Agenci AI dla firmAgent AI różni się od chatbota tym, że oprócz odpowiadania wykonuje działania w firmowych systemach.
- Agent AI wszedł do cudzego systemu. Co zgłosić, komu i w jakim terminie?Naruszenie danych osobowych przez agenta AI administrator zgłasza do UODO bez zbędnej zwłoki, w miarę możliwości w 72 godziny.
- MCP bez stanu, WebMCP w przeglądarce: czy asystent AI zarezerwuje hotel?Asystent AI wyszuka i porówna hotele już dziś, na przykład w ChatGPT, a opłacić pokój w rozmowie pozwala od 27 sierpnia 2026 tryb…
- Jak przetestować asystenta głosowego AI przed wdrożeniemAsystenta głosowego AI trzeba przed wdrożeniem sprawdzić na tych samych zadaniach wykonanych głosem i tekstem, a po każdej operacji ocenić stan danych.
Masz konkretny proces do omówienia?
Napisz, jaki to proces i ile razy w miesiącu się powtarza. Odpowiem, czy nadaje się do automatyzacji, również wtedy, gdy odpowiedź brzmi „nie warto”.
Albo prosto na adres: not-a-bot@
Wolisz zadzwonić? +48 787 912 168