Operacje na plikach przez MCP
Twoje AI potrafi wygenerować idealną funkcję pomocniczą, ale jeśli nie może utworzyć pliku i umieścić go we właściwym katalogu, nadal kopiujesz i wklejasz. Luka między “AI sugeruje kod” a “AI aplikuje zmiany w Twoim projekcie” jest wypełniana przez dostęp do systemu plików. Prawidłowe ustawienie to balansowanie między mocą a bezpieczeństwem — AI powinno modyfikować tylko to, co zamierzasz.
Czego się nauczysz
Dział zatytułowany „Czego się nauczysz”- Konfiguracja oficjalnego serwera Filesystem MCP z właściwym scoping’iem katalogów
- Zrozumienie, kiedy używać Desktop Commander zamiast oficjalnego serwera
- Wzorce bezpieczeństwa dla ograniczania dostępu do zapisu w środowiskach zespołowych
- Prompty wykorzystujące dostęp do systemu plików do prawdziwych workflow refaktoryzacji
Oficjalny serwer Filesystem MCP
Dział zatytułowany „Oficjalny serwer Filesystem MCP”Referencyjna implementacja zapewnia ustrukturyzowane operacje na plikach: czytanie, pisanie, tworzenie, usuwanie, przenoszenie i wyszukiwanie. Wymusza granice allowed_directories — AI nie może dotknąć niczego poza ścieżkami, które określisz.
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/you/projects/my-app" ] } }}Claude Code ma wbudowany natywny dostęp do systemu plików. Może czytać, pisać, wyszukiwać i listować pliki bez serwera MCP. Wbudowane narzędzia automatycznie respektują granice katalogu projektu. Nie potrzebujesz tego serwera, chyba że chcesz dać Claude Code dostęp do katalogów poza bieżącym projektem.
[mcp.filesystem]transport = "stdio"command = "npx"args = ["-y", "@modelcontextprotocol/server-filesystem", "/Users/you/projects/my-app"]Serwer udostępnia następujące narzędzia: read_file, write_file, create_directory, list_directory, move_file, search_files, get_file_info i read_multiple_files. Każde narzędzie operuje wyłącznie w ramach dozwolonych katalogów.
Desktop Commander: pełny dostęp do terminala
Dział zatytułowany „Desktop Commander: pełny dostęp do terminala”Gdy potrzebujesz więcej niż operacji na plikach — komend terminala, zarządzania procesami, wyszukiwania ripgrep — Desktop Commander jest alternatywą dla power userów. Uruchamia dowolne komendy shell, zarządza procesami w tle i zapewnia zaawansowane wyszukiwanie tekstu.
{ "mcpServers": { "desktop-commander": { "command": "npx", "args": ["-y", "@wonderwhy-er/desktop-commander"] } }}Claude Code ma już dostęp do terminala przez natywne narzędzie Bash. Desktop Commander jest zbędny, chyba że potrzebujesz jego specyficznych funkcji zarządzania procesami.
[mcp.desktop-commander]transport = "stdio"command = "npx"args = ["-y", "@wonderwhy-er/desktop-commander"]Wzorce bezpieczeństwa dla zespołów
Dział zatytułowany „Wzorce bezpieczeństwa dla zespołów”Gdy wielu deweloperów współdzieli konfigurację MCP, wymuszaj następujące granice:
- Ogranicz do katalogów projektu. Nigdy nie zezwalaj na katalogi domowe,
/tmpani ścieżki systemowe. - Używaj trybu read-only dla współdzielonych serwerów. Jeśli potrzebujesz tylko, aby AI analizowało kod, ogranicz operacje zapisu.
- Commituj
.cursor/mcp.jsondo repozytorium, aby zespół współdzielił tę samą ograniczoną konfigurację. Trzymaj klucze API w zmiennych środowiskowych, nie w pliku konfiguracyjnym. - Preferuj Claude Code do pracy z systemem plików — jego wbudowane narzędzia już wymuszają scoping na poziomie projektu i wymagają jawnej zgody na operacje destrukcyjne.
Gdy coś się zepsuje
Dział zatytułowany „Gdy coś się zepsuje”Błędy “Permission denied”. Serwer działa jako Twój użytkownik. Jeśli plik należy do root lub innego użytkownika, serwer MCP nie może go czytać ani zapisywać. Napraw uprawnienia plików lub uruchom w kontenerze.
AI tworzy pliki w nieoczekiwanych lokalizacjach. Dzieje się tak, gdy AI źle interpretuje ścieżkę względną. Zawsze używaj ścieżek absolutnych w konfiguracji allowed_directories.
Czytanie dużych plików przekracza timeout. Serwer filesystem czyta całe pliki do pamięci. Dla plików większych niż kilka megabajtów użyj read_multiple_files z konkretnymi zakresami linii lub przejdź na podejście search-first z search_files.