~/ / Artykuły o AI / Specyfikacja MCP 2026-07-28: co się zmieniło i co sprawdzić we własnych plikach
Specyfikacja MCP 2026-07-28: co się zmieniło i co sprawdzić we własnych plikach
Rewizja 2026-07-28 specyfikacji Model Context Protocol (MCP) usuwa sesje na poziomie protokołu, oznacza jako przestarzałe starszy transport HTTP+SSE i kilka funkcji oraz łagodzi zasady dotyczące schematów narzędzi. Ten artykuł podsumowuje oficjalny changelog i pokazuje, jak sprawdzić dwa pliki, które piszesz samodzielnie: konfigurację MCP i schematy narzędzi.
Opublikowano: · Sprawdzono z oficjalną specyfikacją dnia 2026-10-24. Artykuł ją podsumowuje i jej nie zastępuje.
Najważniejsze zmiany
- Sesje na poziomie protokołu i nagłówek Mcp-Session-Id zostają usunięte z transportu Streamable HTTP. Serwer, który potrzebuje stanu między wywołaniami, używa jawnych uchwytów, które sam tworzy i przekazuje jako zwykłe argumenty narzędzi.
- MCP staje się bezstanowy: handshake initialize zostaje usunięty. Każde żądanie niesie w _meta wersję protokołu i możliwości klienta, a niezgodność wersji zwraca UnsupportedProtocolVersionError.
- Serwery muszą zaimplementować nowe wywołanie server/discover, które ogłasza obsługiwane wersje protokołu, możliwości i tożsamość serwera.
- Punkt końcowy HTTP GET i resources/subscribe zostają zastąpione przez subscriptions/listen, jeden długotrwały strumień odpowiedzi dla powiadomień o zmianach, które klient wybierze.
- Żądania inicjowane przez serwer, takie jak roots/list, sampling/createMessage i elicitation/create, zostają zastąpione wzorcem Multi Round-Trip Requests: serwer zwraca wynik z prośbą o dane, a klient ponawia pierwotne żądanie wraz ze swoimi odpowiedziami.
- Eksperymentalne zadania (tasks) przechodzą z rdzenia protokołu do oficjalnego rozszerzenia.
- Strumienie SSE z możliwością wznowienia (Last-Event-ID) zostają usunięte. Przerwany strumień odpowiedzi powoduje utratę żądania w toku, a klient musi wysłać je ponownie jako nowe żądanie.
Co jest teraz przestarzałe
| Funkcja | Przestarzała od | Najwcześniejsze usunięcie | Sugerowana migracja |
|---|---|---|---|
| Roots | 2026-07-28 | Pierwsza rewizja wydana w dniu 2027-07-28 lub później | Przekazuj katalogi lub pliki przez parametry narzędzi, identyfikatory URI zasobów lub konfigurację serwera |
| Sampling | 2026-07-28 | Pierwsza rewizja wydana w dniu 2027-07-28 lub później | Integracja bezpośrednio z API dostawców LLM |
| Logging | 2026-07-28 | Pierwsza rewizja wydana w dniu 2027-07-28 lub później | Logowanie na stderr dla stdio lub użycie OpenTelemetry |
| Dynamic Client Registration | 2026-07-28 | Pierwsza rewizja wydana w dniu 2027-07-28 lub później | Client ID Metadata Documents |
| Transport HTTP+SSE | 2025-03-26 | Trzy miesiące po tym, jak SEP-2596 osiągnie status Final | Streamable HTTP |
| Wartości includeContext thisServer i allServers | 2025-11-25 | Następuje razem z Sampling | Pomiń pole lub użyj none |
Przestarzała funkcja nadal jest częścią specyfikacji. Najwcześniejsze usunięcie wyznacza moment, od którego funkcja może zostać usunięta, a faktyczne usunięcie jest decyzją podejmowaną podczas przygotowywania wydania. Nowa polityka cyklu życia funkcji ustala minimalny okres wycofywania na dwanaście miesięcy.
Sprawdź swoją konfigurację MCP
Jeśli twoja konfiguracja nadal używa transportu HTTP+SSE, znajduje się on na liście funkcji przestarzałych. Dokumentacja Claude Code również nazywa swój typ sse przestarzałym i zaleca używanie serwerów HTTP tam, gdzie są dostępne. Specyfikacja opisuje następcę, Streamable HTTP: serwer udostępnia jeden punkt końcowy przyjmujący POST, a klient wysyła każdy komunikat JSON-RPC jako osobne żądanie HTTP POST.
- Każde żądanie POST musi zawierać nagłówek Accept, który wymienia zarówno application/json, jak i text/event-stream.
- Każde żądanie POST musi zawierać nagłówek MCP-Protocol-Version, którego wartość odpowiada wersji protokołu w treści żądania.
- Żądania niosą nagłówek Mcp-Method, a dla tools/call, resources/read i prompts/get także nagłówek Mcp-Name.
- Serwer odpowiada na każde żądanie pojedynczym obiektem JSON albo strumieniem SSE ograniczonym do tego żądania.
To, którą rewizję protokołu obsługuje twój klient, sprawdzisz w dokumentacji klienta. Poniższe narzędzie wczytuje plik .mcp.json lub claude_desktop_config.json i zgłasza wpisy takie jak zdalny serwer bez type albo taki, który nadal używa sse.
Wypróbuj: MCP Config Checker
Reguły sprawdzone z dokumentacją w dniu 2026-10-23.
Dokumentacja: Claude Code / Model Context Protocol / VS Code
Nie sprawdzono: czy polecenie istnieje, czy pakiet się instaluje, czy zdalny serwer odpowiada oraz ustawień, które inne aplikacje odczytują inaczej.
Wszystko działa w twojej przeglądarce. Konfiguracja nie jest wysyłana.
Schematy narzędzi mogą używać całego JSON Schema 2020-12
- inputSchema i outputSchema dopuszczają teraz dowolne słowo kluczowe JSON Schema 2020-12, a structuredContent może być dowolną wartością JSON. Specyfikacja dodaje wymagania dotyczące rozwiązywania $ref oraz ograniczenia zasobów, z których mogą korzystać słowa kluczowe kompozycji.
- Serwer może oznaczyć parametr narzędzia za pomocą x-mcp-header, aby jego wartość została skopiowana do nagłówka HTTP Mcp-Param-{name}. Oznaczony parametr musi być łańcuchem znaków, liczbą całkowitą lub wartością logiczną, a nie liczbą.
- Oznaczona właściwość musi być osiągalna od korzenia schematu wyłącznie przez klucze properties. Łańcuch nie może przechodzić przez items, oneOf, anyOf, allOf, not, if/then/else ani $ref.
- Klient używający Streamable HTTP musi odrzucić definicję narzędzia, której adnotacja x-mcp-header łamie te zasady, co oznacza, że narzędzie zostaje pominięte w wyniku tools/list.
Aby przetestować schemat narzędzia, wklej go razem z przykładowym zestawem argumentów do poniższego walidatora. Sprawdza on typowe słowa kluczowe Draft 2020-12 i informuje, których nie sprawdza.
Wypróbuj: JSON Schema Validator
Dla obsługiwanych słów kluczowych stosuje JSON Schema Draft 2020-12. Czyta $ref tylko wewnątrz tego samego schematu.
Wszystko działa w twojej przeglądarce. Schemat i dane nie są przesyłane.
Kwestie bezpieczeństwa dla serwerów
- Serwer musi weryfikować nagłówek Origin we wszystkich przychodzących połączeniach, aby zapobiegać atakom DNS rebinding. Jeśli nagłówek jest obecny i nieprawidłowy, serwer musi odpowiedzieć HTTP 403 Forbidden.
- Serwer działający lokalnie powinien nasłuchiwać wyłącznie na localhost (127.0.0.1), a nie na wszystkich interfejsach sieciowych (0.0.0.0).
- Serwery powinny wdrażać odpowiednie uwierzytelnianie dla wszystkich połączeń.
- Serwer, który przetwarza treść żądania, musi odrzucić żądanie, którego nagłówki nie zgadzają się z treścią, odpowiedzią HTTP 400 i błędem JSON-RPC HeaderMismatch (kod -32020).
- Serwery autoryzacji powinny dołączać parametr iss do odpowiedzi autoryzacyjnych (RFC 9207), a gdy iss jest obecny, klienci muszą go zweryfikować, zanim zrealizują kod autoryzacyjny.
- Klienci muszą przechowywać zapisane dane uwierzytelniające klienta pod kluczem wystawcy (issuer), który je przyznał, i nie mogą używać ich ponownie z innym serwerem autoryzacji.