Blog JSystems - uwalniamy wiedzę!

Szukaj

Masz pięć modeli AI i osiem firmowych systemów, które chcesz z nimi spiąć: bazę zamówień, system obsługi klienta, repozytorium dokumentów, pocztę, kalendarz. Ile integracji musisz napisać? W najgorszym wariancie pięć razy osiem, czyli czterdzieści osobnych kawałków kodu - i każdy trzeba utrzymywać, gdy zmieni się którekolwiek z połączonych narzędzi. To problem typu „N razy M", przez który wdrożenia agentów AI w firmach grzęzną w klejeniu integracji, zamiast dawać wartość. Model Context Protocol (MCP) rozwiązuje go tak, jak gniazdo USB-C rozwiązało chaos kabli: jednym wspólnym standardem, w którym dowolny model rozmawia z dowolnym narzędziem. Ten artykuł tłumaczy, jak to działa, pokazuje kod i mówi uczciwie, gdzie MCP to przesada.

Z tego artykułu wyniesiesz:
  • Na czym polega problem „N razy M" i dlaczego paraliżuje integracje AI w firmach
  • Architekturę MCP: gospodarza i klienta, protokół, serwery udostępniające narzędzia i dane
  • Gotowy kod: konfiguracja serwera (JSON), minimalny serwer MCP w Pythonie, definicja narzędzia
  • Realne zastosowania firmowe oraz to, jak MCP porządkuje bezpieczeństwo i kontrolę dostępu
  • Czym MCP różni się od zwykłego wywołania API i kiedy lepiej go nie używać

Problem „N razy M", czyli dlaczego integracje AI grzęzną

Zanim pojawił się wspólny standard, każde połączenie modelu AI z firmowym narzędziem trzeba było napisać od zera. Wyobraź sobie, że chcesz, by Twój asystent AI potrafił:

  • sprawdzić status zamówienia w systemie ERP,
  • pobrać dokument z firmowego repozytorium,
  • zapisać notatkę w systemie obsługi klienta (CRM),
  • sprawdzić wolne terminy w kalendarzu,
  • uruchomić zapytanie do bazy danych.

Dla jednego modelu to pięć integracji. Problem zaczyna się, gdy masz kilka modeli (asystent w przeglądarce, asystent w edytorze kodu, agent działający w tle) i kilka narzędzi. Liczba potrzebnych połączeń to iloczyn: N modeli razy M narzędzi. Każde z nich ma własny format danych, własną obsługę błędów i własny sposób uwierzytelniania. Zmienisz model - przepisujesz integracje. Zaktualizujesz API systemu obsługi klienta - poprawiasz w kilku miejscach naraz. To nie jest praca, która buduje wartość, tylko podatek od fragmentacji.

MCP odwraca tę logikę. Zamiast łączyć każdy model z każdym narzędziem osobno, definiujesz wspólny protokół. Narzędzie udostępniasz raz - jako serwer MCP - a korzysta z niego dowolny klient. Z iloczynu „N razy M" robi się suma „N plus M": tyle serwerów, ile masz narzędzi, plus tyle klientów, ile masz modeli. Nic więcej.

Architektura Model Context Protocol (MCP) Architektura MCP Wspólny protokół łączy dowolny model AI z dowolnym firmowym narzędziem KLIENCI AI · gospodarz + klient SERWERY MCP · narzędzia i dane PROTOKÓŁ MCP JSON-RPC Asystent w przeglądarce chat z modelem AI Edytor kodu asystent w środowisku IDE Agent w tle działa na serwerze Baza danych zapytania SQL Pliki repozytorium dokumentów CRM kontakty, notatki N × M integracji przy 3 i 3 to 9 sztuk N + M połączeń przy 3 i 3 to 6 sztuk jsystems.pl · Szkolenia AI dla firm
Jeden wspólny protokół zamiast osobnej integracji dla każdej pary model-narzędzie. Klient AI podłącza dowolny serwer MCP bez przepisywania kodu.

Jak działa MCP - gospodarz, klient, serwer

MCP opisuje rozmowę między trzema elementami. Warto je rozróżnić, bo nazwy bywają mylone.

Gospodarz i klient (strona AI)

Gospodarz (host) to aplikacja, w której pracujesz z modelem: asystent w przeglądarce, asystent w edytorze kodu, agent uruchomiony na serwerze. Gospodarz osadza w sobie klienta (client) - komponent, który nawiązuje i utrzymuje połączenie z konkretnym serwerem MCP oraz tłumaczy między modelem a protokołem. Jeden gospodarz może mieć wielu klientów, po jednym na każdy podłączony serwer.

Serwer (strona narzędzi i danych)

Serwer MCP to lekki program, który udostępnia trzy rodzaje rzeczy: narzędzia (tools, czyli akcje, które model może wywołać - na przykład „sprawdź status zamówienia"), zasoby (resources, czyli dane do odczytu - pliki, rekordy bazy) oraz szablony promptów (prompts, czyli gotowe wzorce instrukcji). Co kluczowe, serwer sam opisuje, co potrafi: podaje nazwę narzędzia, jego opis po ludzku i schemat danych wejściowych. Dzięki temu model nie musi mieć tej wiedzy zaszytej z góry - odkrywa ją w trakcie.

Protokół (warstwa komunikacji)

Klient i serwer rozmawiają w ustandaryzowanym formacie wiadomości opartym o JSON-RPC (lekki protokół zdalnego wywoływania procedur w formacie JSON). Połączenie może działać lokalnie (serwer uruchomiony jako proces na tej samej maszynie, komunikacja przez standardowe wejście i wyjście) albo zdalnie, po sieci. Przepływ jednej operacji wygląda tak:

Użytkownik  ->  „Jaki jest status zamówienia 4815?"
Klient AI  ->  pyta serwer: jakie masz narzędzia?
Serwer MCP ->  zwraca: get_order_status(order_id)
Model      ->  decyduje wywołać get_order_status z argumentem "4815"
Serwer MCP ->  odpytuje ERP, zwraca: {"status":"wysłane","kurier":"DPD"}
Model      ->  „Zamówienie 4815 zostało wysłane kurierem DPD."

Najważniejsze w tym przepływie jest to, że model sam decyduje, którego narzędzia użyć i z jakimi argumentami - na podstawie opisu, który serwer mu udostępnił. Nikt nie zaprogramował z góry, że pytanie o status zamówienia ma wywołać akurat to narzędzie. To różnica między sztywno spiętym przewodem a wspólnym gniazdem, do którego podłączasz, co chcesz.

Konfiguracja: jak podłączyć serwer MCP

Najprostsza droga do MCP nie wymaga pisania kodu. Gotowe serwery podłącza się przez plik konfiguracyjny w formacie JSON, w którym wskazujesz, jak uruchomić serwer i jakie ma mieć ustawienia. Przykład, który podłącza dwa serwery naraz - dostęp do plików i do bazy PostgreSQL:

{
  "mcpServers": {
    "pliki-firmowe": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/dane/dokumenty"]
    },
    "baza-zamowien": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": { "DATABASE_URL": "postgres://sklep:tajne_hasło@sklep.pl/sklep" }
    }
  }
}

Pole env wstrzykuje zmienne środowiskowe do procesu serwera MCP - to standardowy sposób przekazywania poświadczeń bez wpisywania ich bezpośrednio w komendę. W przykładzie DATABASE_URL to connection string do PostgreSQL w formacie postgres://użytkownik:hasło@host/baza. Wstaw tam swoje rzeczywiste dane. Uważaj, żeby plik konfiguracyjny nie trafiał do repozytorium kodu razem z hasłem - dla produkcyjnych środowisk lepiej odczytywać hasło z menadżera sekretów i wstrzykiwać je osobno.

Gdzie zapisać plik konfiguracyjny

Lokalizacja pliku zależy od używanego klienta. Poniżej najczęstsze przypadki:

Klient Lokalizacja pliku
Claude Desktop (macOS) ~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop (Windows) %APPDATA%\Claude\claude_desktop_config.json
Claude Code (CLI) komenda claude mcp add lub plik .mcp.json w katalogu projektu
Cursor .cursor/mcp.json (lokalnie, dla projektu) lub ~/.cursor/mcp.json (globalnie)

Jeśli plik nie istnieje, utwórz go ręcznie - wklej całą powyższą strukturę JSON jako jego zawartość. W Claude Desktop możesz też wejść w Settings > Developer i tam znajdziesz przycisk otwierający ten plik w edytorze. Po zapisaniu i ponownym uruchomieniu aplikacji asystent „widzi" oba serwery. Może czytać dokumenty z katalogu /dane/dokumenty i zadawać pytania do bazy zamówień. Zwróć uwagę na użytkownika bazy: w produkcyjnym środowisku powinno to być konto z uprawnieniami wyłącznie do odczytu, nie administrator. O tym, dlaczego to ważne, za chwilę.

Minimalny serwer MCP - własne narzędzie w Pythonie

Gotowe serwery wystarczą do wielu zadań, ale prawdziwa siła MCP to możliwość udostępnienia własnego, wewnętrznego systemu firmowego. Powiedzmy, że masz starszy system ERP z prostym API i chcesz, by asystent potrafił sprawdzić w nim status zamówienia. Wystarczy serwer MCP udostępniający jedno narzędzie. Oficjalny pakiet dla Pythona pozwala napisać go bardzo zwięźle:

# pip install "mcp[cli]"
from mcp.server.fastmcp import FastMCP
import httpx

server = FastMCP("firmowy-erp")

@server.tool()
def get_order_status(order_id: str) -> dict:
    """Sprawdza status zamówienia po numerze w firmowym systemie ERP."""
    r = httpx.get(f"https://erp.firma.pl/api/orders/{order_id}",
                  headers={"Authorization": "Bearer tajny_token_erp"}, timeout=10)
    r.raise_for_status()
    dane = r.json()
    # Udostępniamy tylko to, co bezpieczne - bez danych płatności
    return {
        "numer": dane["id"],
        "status": dane["status"],
        "kurier": dane.get("carrier"),
        "data_wysylki": dane.get("shipped_at"),
    }

if __name__ == "__main__":
    server.run()

Authorization: Bearer <token> to standardowy nagłówek HTTP do uwierzytelniania API - "Bearer" oznacza "okaziciel", czyli kto ma token, ten ma dostęp. Token generujesz lub pobierasz z ustawień swojego systemu ERP i wklejasz w miejsce tajny_token_erp.

To kompletny, działający serwer. Dekorator @server.tool() rejestruje funkcję jako narzędzie dostępne dla modelu. Co istotne, opis narzędzia bierze się wprost z dokumentacji funkcji i jej sygnatury - tekst „Sprawdza status zamówienia po numerze" oraz parametr order_id: str trafiają do schematu, który serwer pokazuje klientowi. Na tej podstawie model sam zdecyduje, kiedy narzędzie wywołać. Nie musisz pisać żadnego dodatkowego mapowania - schemat generuje się z kodu.

Gdy chcesz udostępnić nie akcję, lecz dane do odczytu, używasz zasobu. Ta sama biblioteka pozwala wystawić na przykład cennik jako zasób, który model może wczytać do kontekstu:

@server.resource("cennik://aktualny")
def cennik() -> str:
    """Aktualny cennik usług w formacie tekstowym."""
    with open("/dane/cennik.md", encoding="utf-8") as f:
        return f.read()

Różnica między narzędziem a zasobem jest celowa: narzędzie coś robi (i model może to wywołać samodzielnie), zasób dostarcza danych (i zwykle to gospodarz decyduje, kiedy go wczytać). To rozróżnienie pomaga panować nad tym, co model może zrobić, a co tylko przeczytać.

Realne zastosowania w firmie

MCP nie jest abstrakcją dla entuzjastów - rozwiązuje konkretne, kosztowne problemy. Kilka scenariuszy, które powtarzają się w organizacjach:

Scenariusz Co udostępnia serwer MCP Efekt
Asystent obsługi klienta Odczyt zamówień z ERP, historia kontaktu z CRM Konsultant pyta naturalnym językiem, asystent zbiera kontekst z dwóch systemów naraz
Wewnętrzna baza wiedzy Repozytorium dokumentów, wyszukiwarka procedur Pracownik dostaje odpowiedź z firmowych dokumentów, zamiast szukać po dyskach
Analityka na żądanie Zapytania tylko do odczytu na hurtowni danych Osoba nietechniczna pyta o liczby, model układa i uruchamia bezpieczne zapytanie
Wsparcie zespołu IT Odczyt zgłoszeń z systemu obsługi zgłoszeń, status usług Agent koreluje zgłoszenia z monitoringiem przy diagnozie awarii

Wspólny mianownik tych zastosowań: jeden serwer MCP obsługuje wiele klientów. Ten sam serwer udostępniający bazę zamówień działa zarówno dla asystenta w przeglądarce, jak i dla agenta w tle generującego raporty. Napisany raz, używany wszędzie - to jest oszczędność, którą daje standard.

Chcesz zbudować bezpiecznych agentów AI z dostępem do firmowych systemów? Szkolenie z Model Context Protocol w JSystems · od podłączenia gotowych serwerów po własny serwer dla wewnętrznego systemu · 2 dni warsztatów z praktykiem Szkolenie Model Context Protocol (MCP) - Fundament bezpiecznych agentów AI w organizacji

Bezpieczeństwo i kontrola dostępu

Tu kryje się największa przewaga MCP nad podejściem „daj modelowi klucz API i licz na rozsądek". Wcześniej agent często dostawał poświadczenia z pełnymi uprawnieniami i mógł zrobić wszystko, co pozwalało API. MCP wprowadza warstwę, w której Ty decydujesz, co model może, a czego nie.

  • Wąski zakres uprawnień (granular permissions). Serwer udostępnia tylko wybrane operacje. Jeśli wystawiasz bazę, robisz to przez konto z prawem wyłącznie do odczytu - model fizycznie nie może niczego skasować, nawet gdyby „zechciał".
  • Ślad audytowy (audit trail). Każde wywołanie narzędzia przechodzi przez serwer, więc każde da się zalogować: kto, kiedy, z jakimi argumentami i z jakim wynikiem. Masz pełny rejestr działań agenta.
  • Zatwierdzanie przez użytkownika. Gospodarz może wymagać, by przed operacją wrażliwą (zapis, wysłanie wiadomości, usunięcie) człowiek kliknął „potwierdź". Model proponuje, człowiek decyduje.
  • Izolacja. Model nigdy nie dotyka systemu bezpośrednio - rozmawia tylko z serwerem przez ustandaryzowany interfejs. Serwer jest jedyną bramą i jedynym miejscem, w którym egzekwujesz reguły.
Uwaga: sam MCP nie czyni nic bezpiecznym automatycznie - to tylko warstwa komunikacji. Bezpieczeństwo wynika z tego, jak zbudujesz serwer. Konto z pełnymi prawami do bazy, brak walidacji argumentów albo wystawienie zdalnego serwera bez uwierzytelniania zamieniają zaletę w zagrożenie. Zasada minimalnych uprawnień obowiązuje tu tak samo jak wszędzie indziej.

Dla firm, które porządkują wdrożenia AI pod kątem audytowalności i kontroli, ta architektura jest praktyczną odpowiedzią: działania agenta są rejestrowane, ograniczone do zdefiniowanego zakresu i możliwe do przeglądu w każdej chwili.

Ekosystem gotowych serwerów

Nie wszystko trzeba pisać samemu. Wokół MCP powstał szybko rosnący zbiór gotowych serwerów, które podłączysz samą konfiguracją:

  • System plików - bezpieczny, ograniczony do wskazanego katalogu dostęp do dokumentów.
  • Bazy danych - PostgreSQL, SQLite i inne, z możliwością ograniczenia do odczytu.
  • Repozytoria kodu - repozytoria, zgłoszenia, żądania scalenia, wyszukiwanie w kodzie.
  • Komunikatory i poczta - kanały, wiadomości, użytkownicy.
  • Systemy zarządzania pracą - zgłoszenia, projekty, sprinty.
  • Pobieranie stron - wczytywanie zawartości adresów internetowych do kontekstu.

Praktyczna konsekwencja: typowe wdrożenie zaczyna się od kilku gotowych serwerów (pliki, baza, repozytorium kodu), a własny serwer piszesz tylko dla tego, czego nikt jeszcze nie wystawił - zwykle wewnętrznego systemu firmowego. To znacząco skraca drogę od pomysłu do działającego agenta.

Czym MCP różni się od zwykłego wywołania API

To pytanie pada najczęściej: „przecież mój kod już potrafi wołać API, po co dokładać warstwę?". Różnica jest istotna i sprowadza się do tego, kto decyduje i jak bardzo rozwiązanie jest przenośne.

Aspekt Zwykłe wywołanie API MCP
Kto decyduje o wywołaniu Programista, z góry, w kodzie Model, dynamicznie, na podstawie opisu narzędzia
Opis możliwości W dokumentacji, dla człowieka W schemacie, który serwer podaje modelowi
Przenośność Związane z jedną aplikacją lub modelem Jeden serwer działa z dowolnym klientem MCP
Dodanie narzędzia Zmiana kodu integracji Podłączenie kolejnego serwera w konfiguracji
Kontrola i audyt Do zbudowania osobno Wbudowane w architekturę (jedna brama)

Innymi słowy: zwykłe wywołanie API to sztywny przewód między dwoma punktami, który ktoś zaprojektował i którego nie da się łatwo przełożyć gdzie indziej. MCP to wspólne gniazdo - serwer raz opisuje, co potrafi, a każdy zgodny klient może się podłączyć i pozwolić modelowi samodzielnie sięgnąć po właściwe narzędzie. Stąd porównanie do USB-C: jedno gniazdo zamiast szuflady pełnej niekompatybilnych kabli.

Gdzie MCP to przesada

Uczciwy artykuł musi powiedzieć też, kiedy nie warto. MCP to standard projektowany pod skalę i kontrolę - w prostych przypadkach dokłada warstwę, która niczego nie ułatwia.

  • Jeden model, jedno narzędzie, jednorazowo. Jeśli piszesz skrypt, który raz na dobę odpytuje jedno API, zwykłe wywołanie funkcji jest prostsze i czytelniejsze. Serwer MCP to tu zbędny ceremoniał.
  • Brak wymagań co do kontroli i audytu. Gdy nie potrzebujesz rejestrowania działań ani ograniczania uprawnień, główna korzyść z MCP odpada.
  • Stała, niezmienna integracja. Jeśli model nie ma niczego „wybierać", bo logika jest sztywno ustalona, dynamiczne odkrywanie narzędzi nie wnosi nic poza narzutem.
  • Bardzo wczesny prototyp. Na etapie sprawdzania pomysłu szybciej zobaczysz efekt, wołając API wprost. MCP wprowadzisz, gdy prototyp dojrzeje i pojawi się więcej narzędzi lub klientów.

Zasada jest prosta: im więcej narzędzi, im więcej klientów AI i im większa potrzeba kontroli, tym większa korzyść z MCP. Przy jednym połączeniu bez wymagań bezpieczeństwa to przerost formy nad treścią. Dobre wdrożenie zaczyna się od pytania „ile par model-narzędzie naprawdę będę mieć i czy muszę panować nad tym, co agent może zrobić".

Podsumowanie

MCP rozwiązuje konkretny, kosztowny problem: zamienia iloczyn „N modeli razy M narzędzi" na sumę „N plus M", a przy okazji daje warstwę kontroli, której brakowało, gdy agenci dostawali klucze API z pełnym dostępem. Serwer udostępnia narzędzia i dane raz, opisując je w sposób zrozumiały dla modelu, a dowolny zgodny klient z nich korzysta. To samo gniazdo, ta sama wtyczka, dowolne urządzenie. Dla firm wdrażających agentów AI to przejście od klejenia integracji do budowania na wspólnym fundamencie - i właśnie dlatego MCP realnie zmienia sposób, w jaki AI łączy się z systemami organizacji. Warto poznać go teraz, zanim stanie się tak oczywisty jak dziś REST API.

Model Context Protocol - agenci AI w organizacji Praktyczne szkolenie JSystems: od podłączenia gotowych serwerów MCP po własny serwer dla firmowego systemu, z naciskiem na bezpieczeństwo i kontrolę dostępu. 2 dni warsztatów. Szkolenie Model Context Protocol (MCP) - Fundament bezpiecznych agentów AI w organizacji
Baner szkolenia Tworzenie agentów AI w JSystems, terminy gwarantowane

Szkolenie Tworzenie agentów AI →

To szkolenie może być dofinansowane dla Ciebie z KFS lub BUR.

★★★★★Średnia ocena naszych szkoleń w Google: 5/5

Najczęściej zadawane pytania

Na czym polega problem N razy M w integracjach AI?
Gdy chcesz spiąć kilka modeli AI z kilkoma firmowymi narzędziami, liczba potrzebnych integracji to iloczyn liczby modeli i liczby narzędzi. Każde połączenie ma własny format danych i uwierzytelnianie, więc zmiana modelu lub API narzędzia wymusza poprawki w wielu miejscach naraz.
Jak MCP rozwiązuje ten problem?
MCP wprowadza wspólny protokół, w którym narzędzie udostępniasz raz jako serwer, a korzysta z niego dowolny klient. Iloczyn N razy M zamienia się w sumę N plus M: tyle serwerów, ile masz narzędzi, plus tyle klientów, ile masz modeli. Porównuje się to do wspólnego gniazda zamiast plątaniny kabli.
Jak wygląda architektura MCP?
MCP opisuje rozmowę trzech elementów. Gospodarz to aplikacja, w której pracujesz z modelem. Osadza on klienta, który utrzymuje połączenie z konkretnym serwerem. Serwer MCP to lekki program udostępniający narzędzia, zasoby i szablony promptów. Komunikacja idzie w formacie opartym o JSON-RPC.
Skąd model wie, którego narzędzia użyć?
Serwer MCP sam opisuje, co potrafi: podaje nazwę narzędzia, opis po ludzku i schemat danych wejściowych. Model odkrywa te informacje w trakcie i sam decyduje, które narzędzie wywołać i z jakimi argumentami. Nikt nie programuje z góry, że dane pytanie ma uruchomić konkretne narzędzie.
Jak podłączyć gotowy serwer MCP?
Najprostsza droga nie wymaga pisania kodu. Gotowy serwer podłączasz przez plik konfiguracyjny w formacie JSON, w którym wskazujesz, jak go uruchomić i jakie ma ustawienia. Poświadczenia przekazujesz przez zmienne środowiskowe w polu env, zamiast wpisywać je wprost w komendę.
Kiedy lepiej nie używać MCP?
MCP bywa przesadą tam, gdzie wystarczy zwykłe wywołanie API. Ma sens, gdy łączysz wiele modeli z wieloma narzędziami i chcesz uniknąć mnożenia integracji. Przy pojedynczym, prostym połączeniu dodatkowa warstwa protokołu może być nadmiarowa.

Komentarze (0)

Musisz być zalogowany by móc dodać komentarz. Zaloguj się przez Google

Brak komentarzy...