Przejdź do głównej zawartości

Optymalizacja i rozwiązywanie problemów z MCP

Masz podłączonych siedem serwerów MCP. AI potrzebuje 15 sekund na odpowiedź na proste pytania, bo przetwarza opisy narzędzi z serwerów, których nawet nie używasz. Gdy już wywoła narzędzie, odpowiedź zalewna okno kontekstu 50 000 znaków surowego JSON, wypychając Twoją wcześniejszą rozmowę z pamięci. Bazodanowy MCP zwraca nieaktualne informacje o schemacie, bo zcache’ował metadane godzinę temu. A gdy coś się psuje, nie masz pojęcia, który serwer zawiódł ani dlaczego.

MCP jest potężny, ale wymaga dostrojenia. Ten przewodnik obejmuje wzorce, które odróżniają frustrującą konfigurację MCP od produktywnej.

  • Strategie zarządzania użyciem okna kontekstu w wielu serwerach MCP
  • Wytyczne dotyczące tego, które serwery podłączać i kiedy, oraz ile to za dużo
  • Wzorce cache’owania i wydajności dla odpowiedzi serwerów MCP
  • Systematyczne podejście do debugowania awarii MCP
  • Wzorce konfiguracji zespołowej dla współdzielonych środowisk deweloperskich

Każdy podłączony serwer MCP dodaje opisy swoich narzędzi do system promptu AI. Typowy serwer dodaje 500-2000 tokenów opisów narzędzi. Przy siedmiu serwerach możesz spalić 10 000 tokenów na opisy narzędzi, zanim rozmowa się w ogóle zacznie.

Praktyczny limit to 3-5 aktywnych serwerów na sesję. Powyżej tego napotykasz dwa problemy:

  1. Presja na okno kontekstu. Opisy narzędzi rywalizują z historią Twojej rozmowy i zawartością plików o miejsce w oknie kontekstu.
  2. Zamieszanie w wyborze narzędzi. Przy 40+ dostępnych narzędziach AI może wywołać niewłaściwe narzędzie lub wahać się, którego użyć.

Zamiast podłączać każdy serwer przy starcie, podłączaj to, czego potrzebujesz do bieżącego zadania:

ZadanieRekomendowane serwery
Implementacja funkcjiGitHub MCP + Context7 + Database MCP
Badanie bugaGitHub MCP + Playwright MCP + Database MCP
Design-to-codeFigma MCP + shadcn/ui MCP
Development oparty na ticketachAtlassian MCP + GitHub MCP
Praca z infrastrukturąCloudflare MCP (Workers + KV + D1)
Pisanie dokumentacjiContext7 + Filesystem MCP

Inspekcja schematu bazy danych może zwrócić ponad 20 000 znaków. Wyszukiwanie kodu na GitHubie może zwrócić dziesiątki fragmentów plików. Strona Confluence może mieć 10 000 słów. Każda odpowiedź narzędzia MCP zabiera miejsce w oknie kontekstu, a to miejsce nie wraca, dopóki rozmowa się nie zresetuje.

Zamiast szerokich promptów, bądź konkretny co do tego, czego potrzebujesz:

Za szeroko: “Show me the database schema.” (Zwraca cały schemat, może 30+ tabel)

Lepiej: “Show me the schema for the users and orders tables only, including their foreign key relationships.”

Za szeroko: “Search GitHub for authentication code.” (Zwraca dziesiątki plików)

Lepiej: “Search GitHub for files in the src/auth/ directory that handle JWT token validation.”

Serwery oparte na STDIO uruchamiają nowy proces dla każdego połączenia. Jeśli serwer ma ciężkie zależności (serwer Python importujący biblioteki ML, serwer Node bundlujący duży SDK), start może trwać 5-10 sekund.

Strategie łagodzenia:

  • Utrzymuj minimalne zależności. Twój serwer MCP powinien być cienkim wrapperem, nie monolitem.
  • Pre-builduj serwer. Dostarczaj skompilowany JavaScript zamiast transpilować TypeScript przy starcie.
  • Używaj npx z --yes i upewnij się, że pakiet jest zcache’owany lokalnie, uruchamiając go raz przed sesją pracy.

Bazodanowe serwery MCP często cache’ują metadane schematu przy starcie. Jeśli uruchomisz migrację, serwer MCP nadal będzie raportować stary schemat, dopóki nie zostanie zrestartowany.

Aby zrestartować serwer MCP w Cursor:

  1. Otwórz Settings > Tools & Integrations > MCP
  2. Znajdź serwer z nieaktualnymi danymi
  3. Kliknij ikonę odświeżania, aby go zrestartować

Serwery oparte na zewnętrznych API (GitHub, Atlassian, Cloudflare) mają limity zapytań. GitHub pozwala na 5000 zapytań API na godzinę dla uwierzytelnionych użytkowników. Jeden prompt jak “analyze all open PRs” może spalić setki zapytań.

Chroń się:

  • Ogranicz zakres promptów. “Analyze the last 5 PRs” zamiast “analyze all open PRs.”
  • Używaj lokalnych alternatyw gdy to możliwe. Serwer Git MCP działa na Twoim lokalnym repo bez wywołań API.
  • Monitoruj status rate limit. “Check the GitHub API rate limit status” to prawidłowy prompt z serwerem GitHub MCP.

Gdy serwer MCP nie działa, postępuj według tej sekwencji:

  1. Sprawdź status serwera. Czy serwer działa? Czy w ogóle może się uruchomić?
  2. Sprawdź uwierzytelnianie. Czy dane uwierzytelniające są prawidłowe? Czy token OAuth wygasł?
  3. Sprawdź wywołanie narzędzia. Czy AI wywołuje właściwe narzędzie z prawidłowymi parametrami?
  4. Sprawdź odpowiedź. Czy serwer zwraca dane, błąd, czy nic?
  5. Sprawdź transport. Czy połączenie między klientem a serwerem jest zdrowe?

“Server disconnected” lub “Connection reset.”

Proces serwera MCP upadł. Sprawdź wyjście stderr serwera pod kątem komunikatów o błędach. Częste przyczyny: nieobsłużone promise rejections, brakujące zmienne środowiskowe lub błędy instalacji zależności.

Okno terminala
# Przetestuj serwer bezpośrednio, żeby zobaczyć błędy
node /path/to/mcp-server/index.mjs 2>&1

“Tool not found” po połączeniu serwera.

Serwer się połączył, ale narzędzie, którego próbujesz użyć, nie jest zarejestrowane. Dzieje się tak, gdy wersja serwera nie pasuje do dokumentacji. Zaktualizuj serwer:

Okno terminala
npm update @modelcontextprotocol/server-github

“Timeout” przy wywołaniach narzędzi.

Narzędzie trwa dłużej niż timeout klienta. Zwykle oznacza to, że API jest wolne lub zapytanie jest zbyt szerokie. Zawęź zadanie lub zwiększ timeout w prompcie: “Query the database, allowing up to 60 seconds for the response.”

AI wywołuje narzędzie z niewłaściwego serwera.

Przy wielu serwerach dostarczających podobne narzędzia, AI może wybrać niewłaściwe. Bądź konkretny: “Using the GitHub MCP server (not the Git MCP server), search for files containing ‘validateToken’.”

“Permission denied” z serwera.

Dane uwierzytelniające mają niewystarczający zakres. Zobacz przewodnik MCP Security po rekomendacje dotyczące scopingu tokenów.

Utwórz bazową konfigurację MCP, którą używa każdy deweloper w zespole:

{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${GITHUB_TOKEN}"
}
},
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"]
}
}
}

Commituj to do repozytorium. Każdy deweloper ustawia GITHUB_TOKEN w swoim lokalnym środowisku.

Dodaj serwery specyficzne dla projektu w pliku .mcp.json lub ustawieniach na poziomie projektu:

{
"mcpServers": {
"project-db": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"DATABASE_URL": "${DATABASE_URL}"
}
}
}
}

Udokumentuj konfigurację MCP w przewodniku kontrybuowania projektu:

  1. Zainstaluj wymagane serwery MCP (wymień je)
  2. Utwórz tokeny z udokumentowanymi zakresami (podlinkuj przewodnik)
  3. Ustaw zmienne środowiskowe (wymień je)
  4. Przetestuj każde połączenie z serwerem (podaj prompty testowe)

Wszystko zwalnia po dodaniu nowego serwera. Opisy narzędzi nowego serwera są duże lub serwer długo się uruchamia. Odłącz serwery, których aktywnie nie używasz.

AI przestaje używać narzędzi MCP i zaczyna zgadywać. Okno kontekstu jest pełne. Rozpocznij nową rozmowę lub odłącz nieużywane serwery, aby zwolnić miejsce.

Serwery MCP działają lokalnie, ale nie działają w CI. Środowiska CI zwykle nie mają tych samych zmiennych środowiskowych, tokenów ani dostępu do sieci. Użyj mockowych serwerów MCP w CI lub pomiń testy zależne od MCP.

Różni członkowie zespołu uzyskują różne wyniki. Wersje serwerów MCP mogą się różnić. Przypnij wersje we współdzielonej konfiguracji i udokumentuj oczekiwaną wersję.