MCP jako shadow IT: jak spisać, co podłączyli pracownicy
Inwentaryzację shadow IT z MCP zacznij od plików konfiguracji na komputerach i w repozytoriach. Serwer stdio nie ma portu, więc skan sieci go nie znajdzie.
Dla: Szefowie bezpieczeństwa, administratorzy stacji roboczych, zespoły platformowe · Stan na 02.11.2026 · Autor: Karol Krawczyk
Dlaczego skan sieci nie znajdzie wszystkich serwerów MCP?
Serwer MCP typu stdio jest podprocesem uruchamianym przez klienta i rozmawia z nim przez standardowe strumienie. Nie nasłuchuje na porcie, więc skaner sieciowy go nie zobaczy. Działa z uprawnieniami użytkownika, a instalacja może sprowadzać się do jednego wpisu z npx w pliku JSON. Taki wpis nie przechodzi przez proces zakupowy, więc CMDB może go nie mieć.
Qualys w tekście z marca 2026 opisuje podobny obraz po stronie serwerów HTTP: bywają związane z localhostem, nasłuchują na losowych wysokich portach, stoją za reverse proxy albo są wbudowane we wtyczki IDE. Firma poleca kilka warstw wykrywania (sieć, host, łańcuch dostaw) i sama przyznaje, że sygnały osobno są niekompletne. Qualys sprzedaje skaner, ale ten wniosek zgadza się z budową protokołu. OWASP umieścił Shadow MCP Servers na liście MCP Top 10 jako pozycję MCP09, przy czym lista ma status beta.
Gdzie leżą pliki konfiguracji MCP w Claude, Cursorze i VS Code?
Klienci MCP trzymają listę serwerów w plikach o znanych ścieżkach, więc pierwszy przebieg wykonasz skryptem przez MDM i wyszukiwaniem w repozytoriach Git. Poniższe ścieżki pochodzą z dokumentacji producentów i dotyczą głównych narzędzi. Listę trzeba poszerzyć o to, co firma faktycznie ma.
Razem z plikiem zapisz datę modyfikacji, bo pozwala odróżnić porzucony test sprzed roku od czegoś używanego. Pliki w katalogu domowym są przypisane do użytkownika, więc przebieg musi objąć wszystkie profile na maszynie, także te, z których agent MDM domyślnie nie korzysta.
- Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json na macOS, %APPDATA%\Claude\claude_desktop_config.json na Windows, ~/.config/Claude/claude_desktop_config.json na Linuksie
- Claude Code: ~/.claude.json oraz .mcp.json w katalogu głównym projektu
- Cursor: ~/.cursor/mcp.json oraz .cursor/mcp.json w projekcie
- VS Code z Copilotem: .vscode/mcp.json, mcp.json w profilu użytkownika, ~/.copilot/mcp-config.json (albo $COPILOT_HOME/mcp-config.json), a przy włączonej funkcji eksperymentalnej także .mcp.json w katalogu roboczym
Serwery MCP w repozytoriach i potokach CI
Pliki projektowe MCP trafiają do kontroli wersji, więc jeden commit może przypisać serwer całemu zespołowi. Szukaj nazw .mcp.json i mcp.json w całej organizacji, a osobno importów SDK MCP w kodzie. Qualys traktuje obecność SDK jako zapowiedź przyszłego wdrożenia. Przy okazji przejrzyj potoki: dokumentacja Claude Code podaje, że w trybie claude -p i w sesjach Agent SDK narzędzie ładuje serwery z pliku projektu bez pytania, bo nie ma jak wyświetlić prośby o zgodę. Serwer dodany w pull requeście może więc wystartować w CI bez niczyjej decyzji, jeśli agent tam działa.
Zdalne serwery MCP i łączniki SaaS
Przy zdalnych serwerach MCP i łącznikach pliki konfiguracji pomogą tylko częściowo. Łączniki włączane w panelu aplikacji SaaS mogą nie zostawić śladu na dysku: Claude Code rozróżnia na przykład serwery, które ładuje sam, od łączników dostarczanych przez aplikację desktopową, a te drugie reguluje się w ustawieniach organizacji. Zajrzyj więc do paneli administracyjnych każdego narzędzia AI, które firma opłaca.
Drugie źródło to ruch wychodzący. Klienci zgodni z rewizją 2026-07-28 wysyłają w żądaniach HTTP nagłówki MCP-Protocol-Version i Mcp-Method, a przy wywołaniu narzędzia także Mcp-Name. Proxy z inspekcją TLS może je rejestrować. Nie licz na pełny obraz, bo starsze rewizje nie mają części tych nagłówków, a komputer poza proxy nie zostawi żadnego wpisu. Claude Code może dodatkowo eksportować przez OpenTelemetry nazwy używanych serwerów i narzędzi, po ustawieniu OTEL_LOG_TOOL_DETAILS=1. Tak dowiesz się, które z wpisów ktoś rzeczywiście używa.
Trzecie źródło to skan własnej sieci, przydatny dla serwerów HTTP postawionych przez zespoły na maszynach wewnętrznych. Qualys pisze, że usługę MCP można rozpoznać, odpytując typowe ścieżki i szukając charakterystycznych nagłówków oraz ustrukturyzowanych odpowiedzi o możliwościach. Nawet endpoint tylko do odczytu może przy tym ujawnić nazwy systemów, schematy narzędzi i ścieżki zasobów, więc znalezisko bez uwierzytelniania umieść na początku kolejki. Specyfikacja zaleca, by lokalne serwery wiązały się z 127.0.0.1, dlatego każdy serwer odpowiadający z innej maszyny w sieci biurowej wymaga wyjaśnienia.
Co spisać w inwentaryzacji MCP i czego nie kopiować
Skrypt inwentaryzacji MCP musi pomijać wartości zmiennych. Astrix w publikacji z października 2025 przeanalizował 5205 otwartych repozytoriów serwerów MCP z GitHuba: około 88 procent wymaga poświadczeń, 53 procent opiera się na statycznych kluczach API lub tokenach PAT, a OAuth stosuje 8,5 procent. Klasyfikację wykonał model językowy na podstawie plików README, a firma sprzedaje zarządzanie tożsamościami nieludzkimi, więc to przybliżenie dotyczące projektów open source, a nie firmowych wdrożeń. Wniosek praktyczny: bloki env w tych plikach mogą zawierać sekrety. Zbieraj same nazwy zmiennych, inaczej inwentaryzacja stanie się nowym magazynem kluczy.
Dla każdego wpisu wystarczy kilka pól, które później posłużą do decyzji:
- klient i użytkownik albo zespół, od którego pochodzi konfiguracja
- transport, polecenie lub adres URL, źródło pakietu i wersja (zwróć uwagę na brak przypiętej wersji)
- rodzaj poświadczenia: OAuth, klucz statyczny, token PAT, brak; czyje konto stoi za tym dostępem
- systemy i dane, do których serwer sięga, oraz czy potrafi zapisywać
- cel i właściciel: eksperyment czy trwała zależność
Skanery MCP i kolejne kroki po inwentaryzacji
Snyk Agent Scan sam wykrywa konfiguracje kilkunastu klientów, ale przed wdrożeniem trzeba przeczytać dwa zastrzeżenia z jego dokumentacji. Aby pobrać opisy narzędzi, uruchamia serwery stdio, czyli wykonuje polecenia z konfiguracji, co przy podejrzanym wpisie jest dokładnie tym, czego chcesz uniknąć. Skan w tle tego nie robi bez osobnej flagi. Wysyła też konfiguracje oraz nazwy i opisy narzędzi do API Snyka, po usunięciu sekretów. Propozycja tego tekstu: pierwszy przebieg wykonaj zwykłym skryptem czytającym pliki, a skaner uruchom potem, na izolowanej maszynie, dla wybranych wpisów.
Nie zaczynaj od blokady. Dokumentacja Claude Code ostrzega, że serwer wycięty polityką znika, a użytkownik nie dostaje informacji o przyczynie. Pierwsza lista może też pokazać zależności, o których nikt nie pamięta, więc najpierw ustal właścicieli i odróżnij eksperymenty od rzeczy używanych na co dzień. Od razu reaguj tylko na serwery z dostępem do produkcji przez czyjś osobisty token. Inwentaryzacja to stan z jednego dnia. Propozycja tego tekstu, nie norma: powtarzaj ją co miesiąc przez pierwszy kwartał, porównując wyniki z poprzednim przebiegiem, a potem dobierz rytm do tempa przyrostu nowych wpisów.
Dobrym wyjściem z tego etapu jest lista dozwolonych pozycji w formacie, który przyjmują klienci. Claude Code i Copilot potrafią dopasować serwery zdalne po adresie URL, a lokalne po poleceniu z argumentami. Inwentaryzacja zapisująca właśnie te dwa pola od razu staje się materiałem na politykę, bez ręcznego przepisywania.
Co zrobić w firmie
- Uruchom przez MDM skrypt zbierający pliki konfiguracji MCP, z pominięciem wartości zmiennych
- Przeszukaj repozytoria pod kątem .mcp.json, mcp.json i importów SDK MCP, sprawdź też potoki CI
- Przejrzyj panele administracyjne opłacanych narzędzi AI i logi proxy
- Wypełnij dla każdego wpisu pola: transport, wersja, poświadczenie, zasięg, właściciel
- Natychmiast rozwiąż przypadki osobistych tokenów z dostępem do produkcji, resztę oceń z właścicielami
- Powtórz przebieg po miesiącu i porównaj różnice
Powiązane materiały
Źródła
- Qualys: MCP Servers Are the New Shadow IT for AI
- Model Context Protocol: stdio
- Model Context Protocol: Streamable HTTP
- Model Context Protocol: Connect to local MCP servers
- OWASP: MCP Top 10
- Astrix: State of MCP Server Security 2025
- Claude Code Docs: Connect Claude Code to tools via MCP
- Claude Code Docs: Control MCP server access for your organization
- Cursor Docs: Model Context Protocol
- VS Code Docs: MCP servers
- Snyk: agent-scan (GitHub)
- GitHub Docs: Configuring an MCP server allowlist for your enterprise
Chcesz przełożyć to na swój zespół?
Szkolimy zespoły z pracy z Copilotem, Claude Code i Codexem na ich własnych zadaniach.