AI w firmie

Czym jest MCP (Model Context Protocol)? Serwer MCP w praktyce

MCP (Model Context Protocol) to otwarty standard, który opisuje, jak aplikacje AI łączą się z zewnętrznymi narzędziami i danymi. Zamiast budować osobną integrację dla każdego modelu i każdego systemu, przygotowujesz jeden serwer MCP, z którego korzysta dowolny zgodny klient: Claude, ChatGPT, Copilot albo własny agent.

Protokół zaprezentował Anthropic w listopadzie 2024 roku. W grudniu 2025 trafił pod opiekę Agentic AI Foundation działającej w ramach Linux Foundation, a 28 lipca 2026 opublikowano nową wersję specyfikacji. Poniżej znajdziesz wyjaśnienie dla osób, które decydują o wdrożeniu, i konkrety techniczne dla zespołu developerskiego.

Jaki problem rozwiązuje Model Context Protocol

Model językowy sam z siebie nie zna stanu Twojego CRM-a, nie widzi zgłoszeń w systemie helpdesk i nie zajrzy do bazy zamówień. Żeby asystent AI odpowiedział na pytanie „ile faktur klienta X jest przeterminowanych”, ktoś musi napisać kod, który pobierze te dane i przekaże je modelowi w zrozumiałej formie.

Przed MCP każdy dostawca aplikacji AI miał własny format takich integracji. Firma, która używała trzech narzędzi AI i chciała podłączyć pięć systemów, w najgorszym razie utrzymywała piętnaście osobnych integracji. To klasyczny problem N×M: każda nowa aplikacja albo nowy system mnoży pracę.

MCP zamienia to na N+M. Każdy system dostaje jeden serwer MCP, każda aplikacja AI implementuje klienta MCP i wszystko ze sobą współpracuje. Twórcy otwarcie wzorowali się na Language Server Protocol, który w podobny sposób ujednolicił obsługę języków programowania w edytorach kodu.

Jak działa MCP: host, klient i serwer

Specyfikacja wyróżnia trzy role, które wymieniają komunikaty w formacie JSON-RPC 2.0:

  • Host to aplikacja, z którą pracuje użytkownik, np. Claude Desktop, ChatGPT, VS Code z Copilotem albo Twój własny agent.
  • Klient to komponent wewnątrz hosta, który obsługuje połączenie z konkretnym serwerem. Jeden host może mieć wielu klientów jednocześnie.
  • Serwer to usługa udostępniająca dane i akcje z jednego systemu: CRM-a, bazy danych, repozytorium kodu, systemu zgłoszeń.

Narzędzia, zasoby i prompty

Serwer MCP może oferować trzy rodzaje elementów:

  • Narzędzia (tools): funkcje, które model może wywołać, np. utworz_zgloszenie albo znajdz_klienta. Każde ma nazwę, opis i schemat parametrów w JSON Schema.
  • Zasoby (resources): dane do odczytu identyfikowane adresem URI, np. dokument, rekord albo plik konfiguracyjny.
  • Prompty (prompts): gotowe szablony poleceń, które użytkownik wybiera świadomie, np. „podsumuj tydzień sprzedaży”.

Narzędzia wybiera model, prompty wybiera człowiek, a zasoby zwykle dobiera aplikacja. Ten podział ma znaczenie, gdy projektujesz uprawnienia i miejsca, w których potrzebne jest potwierdzenie użytkownika.

Transport: stdio i Streamable HTTP

Specyfikacja definiuje dwa standardowe transporty. W stdio host uruchamia serwer jako lokalny proces i komunikuje się z nim przez standardowe wejście i wyjście. Tak działa większość serwerów instalowanych na komputerze programisty.

W Streamable HTTP każdy komunikat to żądanie POST do jednego endpointu, a odpowiedź przychodzi jako obiekt JSON albo strumień SSE. Ten wariant wybierasz dla serwerów zdalnych, z których korzysta cały zespół lub cała firma.

Co zmieniła specyfikacja 2026-07-28

Najnowsza wersja uczyniła protokół bezstanowym. Zniknął handshake initialize i sesje na poziomie protokołu, a każde żądanie niesie wersję protokołu i możliwości klienta. Dzięki temu serwer MCP skaluje się jak zwykła usługa HTTP za load balancerem.

Długie operacje obsługuje oficjalne rozszerzenie Tasks, a interaktywne elementy interfejsu rozszerzenie MCP Apps. Funkcje Roots, Sampling i Logging oraz stary transport HTTP+SSE mają status przestarzałych. Jeśli utrzymujesz serwer napisany w 2025 roku, zaplanuj aktualizację SDK.

Kto wspiera MCP w 2026 roku

MCP przestał być projektem jednej firmy. 9 grudnia 2025 Linux Foundation ogłosiła powstanie Agentic AI Foundation, którą współzałożyli Anthropic, Block i OpenAI, przy wsparciu m.in. Google, Microsoftu, AWS, Cloudflare i Bloomberga. MCP jest jednym z projektów założycielskich fundacji. Decyzje o kierunku rozwoju nadal podejmują dotychczasowi opiekunowie specyfikacji w publicznym procesie propozycji zmian.

W praktyce obsługa wygląda tak:

  • Anthropic: aplikacje Claude, Claude Code i API łączą się z serwerami lokalnymi i zdalnymi.
  • OpenAI: Apps SDK dla ChatGPT jest zbudowane na MCP, Responses API przyjmuje zdalne serwery MCP jako narzędzia, a Codex obsługuje MCP.
  • Google: SDK Gemini API i Gemini CLI obsługują serwery MCP, a Google Cloud udostępnia zarządzane, zdalne serwery MCP do swoich usług.
  • Microsoft: MCP jest ogólnie dostępny w Copilot Studio, obsługują go Visual Studio i VS Code, a Azure DevOps ma własny zdalny serwer MCP.
  • Platformy automatyzacji: n8n, Make i Zapier potrafią korzystać z serwerów MCP i wystawiać własne przepływy jako serwer MCP.

Serwer MCP w firmie: przykłady zastosowań

Dla biznesu MCP oznacza, że dane i akcje z Twoich systemów stają się dostępne w asystencie AI, z którego pracownicy już korzystają. Nie musisz budować osobnego czatu dla każdego działu. Typowe scenariusze:

CRM

Serwer udostępnia narzędzia znajdz_klienta, historia_kontaktow i dodaj_notatke. Handlowiec pisze „przygotuj mnie do spotkania z firmą X” i dostaje zestawienie ostatnich rozmów, otwartych szans i zaległych płatności. Zapis notatki to osobne narzędzie, które wymaga potwierdzenia.

ERP i magazyn

Narzędzia tylko do odczytu: stany magazynowe, status zamówienia, terminy dostaw. Dział obsługi klienta odpowiada na pytania bez przełączania się między kilkoma ekranami. Operacje zapisu, jak korekta dokumentu, zostają poza zasięgiem modelu albo przechodzą przez akceptację człowieka.

Wewnętrzna baza danych

Kusi, żeby dać modelowi narzędzie „wykonaj dowolne zapytanie SQL”. Nie rób tego. Przygotuj kilka nazwanych zapytań z parametrami, uruchamianych z konta, które ma prawo odczytu tylko wybranych widoków. Model dostaje dokładnie te dane, których potrzebuje, a Ty masz przewidywalny zestaw operacji do audytu.

System zgłoszeń

Serwer MCP dla Jiry, GitLaba czy Zendeska pozwala agentowi sklasyfikować nowe zgłoszenie, znaleźć podobne, zaproponować priorytet i szkic odpowiedzi. Więcej takich scenariuszy znajdziesz w tekście o automatyzacjach AI w 2026 roku, a przykład obsługi poczty w artykule o agencie AI do e-maili.

Jeśli AI ma odpowiadać na podstawie dokumentów firmy, serwer MCP może opakować wyszukiwarkę dokumentów. Sam mechanizm wyszukiwania to osobny temat, opisany w tekście czym jest RAG. Serwery MCP dla systemów firmowych projektujemy i wdrażamy również w ramach naszych usług, razem z przeglądem uprawnień.

Jak napisać prosty serwer MCP w TypeScript

Przykład używa oficjalnego SDK w wersji 2 (pakiet @modelcontextprotocol/server), wydanego razem ze specyfikacją 2026-07-28. Potrzebujesz Node.js w wersji 20 lub nowszej. Zainstaluj zależności:

npm install @modelcontextprotocol/server zod

Serwer wystawia jedno narzędzie, które wyszukuje klienta po NIP. Dane są wpisane w kodzie, w prawdziwym wdrożeniu w tym miejscu wywołasz API CRM-a.

import { McpServer } from '@modelcontextprotocol/server';
import { StdioServerTransport } from '@modelcontextprotocol/server/stdio';
import * as z from 'zod/v4';

// Dane przykładowe. W prawdziwym wdrożeniu wywołasz tu API CRM.
const klienci = [
  { nip: '5250000000', nazwa: 'Przykładowa Sp. z o.o.', opiekun: 'Anna Nowak', status: 'aktywny' }
];

const server = new McpServer({ name: 'crm-server', version: '1.0.0' });

server.registerTool(
  'znajdz_klienta',
  {
    title: 'Wyszukaj klienta w CRM',
    description: 'Zwraca dane klienta na podstawie NIP. Tylko odczyt.',
    inputSchema: z.object({
      nip: z.string().regex(/^\d{10}$/).describe('NIP bez kresek, 10 cyfr')
    }),
    annotations: { readOnlyHint: true }
  },
  async ({ nip }) => {
    const klient = klienci.find((k) => k.nip === nip);
    if (!klient) {
      return {
        content: [{ type: 'text', text: `Brak klienta o NIP ${nip}` }],
        isError: true
      };
    }
    return { content: [{ type: 'text', text: JSON.stringify(klient) }] };
  }
);

async function main() {
  const transport = new StdioServerTransport();
  await server.connect(transport);
  console.error('Serwer MCP działa na stdio');
}

main();

Na co zwrócić uwagę w tym kodzie:

  • SDK zamienia schemat Zod na JSON Schema i samo waliduje parametry. Wywołanie z niepoprawnym NIP-em zwróci błąd walidacji, zanim dotrze do Twojej logiki.
  • readOnlyHint informuje klienta, że narzędzie niczego nie zmienia. To podpowiedź dla hosta, a nie zabezpieczenie. Uprawnienia egzekwujesz po stronie serwera i systemu źródłowego.
  • Przy transporcie stdio nie wypisuj logów przez console.log, bo standardowe wyjście służy do komunikacji z klientem. Używaj console.error.
  • Błąd biznesowy („nie ma takiego klienta”) zwracasz jako wynik z isError: true, żeby model mógł na niego sensownie zareagować.

Po kompilacji do JavaScriptu przetestujesz serwer w MCP Inspectorze poleceniem npx @modelcontextprotocol/inspector node server.js. Potem dodaj go do konfiguracji klienta, np. Claude Desktop albo VS Code. Wersja zdalna na Streamable HTTP wymaga warstwy HTTP (SDK ma pakiety pośredniczące m.in. dla Express, Fastify i Hono) oraz autoryzacji.

Bezpieczeństwo serwerów MCP: o czym musisz pamiętać

Specyfikacja mówi wprost, że narzędzia oznaczają możliwość wykonania dowolnego kodu i trzeba je traktować ostrożnie. Serwer MCP podłączony do asystenta AI to nowa ścieżka dostępu do danych firmy. Projektuj go jak publiczne API, a nie jak skrypt pomocniczy.

Uwierzytelnianie i uprawnienia

  • Dla serwerów HTTP specyfikacja opiera autoryzację na OAuth 2.1. Serwer musi sprawdzać, czy token wydano właśnie dla niego, i nie może przekazywać tokenu klienta dalej do innych API.
  • Serwery stdio pobierają poświadczenia ze środowiska, np. ze zmiennych środowiskowych. Nie wpisuj kluczy do repozytorium.
  • Działaj w imieniu użytkownika, a nie z konta serwisowego z pełnym dostępem. Jeśli handlowiec nie widzi w CRM-ie danych innego regionu, jego agent też nie powinien.
  • Zacznij od minimalnego zakresu uprawnień i dodawaj kolejne dopiero przy operacjach, które ich wymagają.

Tool poisoning i złośliwe serwery

W kwietniu 2025 Invariant Labs opisało atak nazwany tool poisoning. Złośliwy serwer umieszcza w opisie narzędzia ukryte instrukcje, których użytkownik nie widzi, a model je czyta. W demonstracji skłoniło to agenta do odczytania kluczy SSH i wysłania ich atakującemu. Pokrewne warianty to podmiana opisu narzędzia po jego zatwierdzeniu oraz wpływanie jednego serwera na to, jak agent używa pozostałych.

OpenAI w dokumentacji API ostrzega podobnie: złośliwy serwer może wyprowadzić wszystko, co trafi do kontekstu modelu. Dlatego:

  • Podłączaj tylko serwery zaufane: własne albo oficjalne, publikowane przez dostawcę danej usługi.
  • Przypinaj wersje pakietów i przeglądaj opisy narzędzi przy każdej aktualizacji.
  • Pamiętaj, że lokalne serwery działają z uprawnieniami użytkownika. Uruchamiaj je w kontenerze lub piaskownicy.
  • Wymagaj potwierdzenia człowieka dla narzędzi, które wysyłają wiadomości, zmieniają rekordy lub usuwają dane.
  • Loguj każde wywołanie narzędzia z parametrami i tożsamością użytkownika.

Kiedy nie potrzebujesz MCP

MCP to warstwa standaryzacji. Opłaca się, gdy te same dane mają być dostępne dla wielu aplikacji AI albo gdy pracownicy mają z nich korzystać w narzędziach, które już znają. Są sytuacje, w których tylko dokłada pracy:

  • Jedna aplikacja, jeden model, stały przepływ. Jeśli Twój backend wywołuje model z trzema zdefiniowanymi funkcjami, zwykłe function calling w API dostawcy wystarczy. Serwer MCP wydzielisz później, gdy pojawi się drugi konsument.
  • Proces jest deterministyczny. Przeniesienie danych z formularza do ERP według stałych reguł lepiej zrobi zwykła integracja, webhook albo workflow bez modelu językowego.
  • Wiedza jest mała i rzadko się zmienia. Kilkustronicowy cennik czy regulamin umieść po prostu w instrukcji systemowej asystenta.
  • Brakuje porządku w danych i uprawnieniach. MCP nie naprawi CRM-a z połową zdublowanych rekordów ani systemu, w którym wszyscy mają konto administratora.

Jeśli dopiero planujesz pierwsze projekty z AI, zacznij od wyboru procesów i zasad bezpieczeństwa, a protokół dobierz na końcu. Kolejność kroków opisuje przewodnik jak wdrożyć AI w firmie.

Najczęściej zadawane pytania

Czy MCP jest darmowy i otwarty?

Tak. Specyfikacja jest publiczna, a oficjalne SDK są udostępniane jako open source (SDK TypeScript na licencji MIT). Od grudnia 2025 projekt rozwija się w Agentic AI Foundation działającej w ramach Linux Foundation, więc nie należy do jednego dostawcy modeli.

Czym MCP różni się od zwykłego REST API?

REST API jest projektowane dla programistów, którzy czytają dokumentację i piszą kod integracji. MCP opisuje narzędzia w sposób zrozumiały dla modelu językowego (nazwa, opis, schemat parametrów) i ujednolica sposób ich wykrywania i wywoływania. Serwer MCP bardzo często jest cienką warstwą nad istniejącym API.

Czy ChatGPT obsługuje serwery MCP?

Tak. OpenAI zbudowało Apps SDK dla ChatGPT na MCP, a Responses API pozwala podłączyć zdalny serwer MCP jako narzędzie. Dostępność konkretnych funkcji w ChatGPT zależy od planu, dlatego przed wdrożeniem sprawdź aktualną dokumentację OpenAI dla swojego abonamentu.

Czy MCP zastępuje RAG?

Nie. RAG to technika wyszukiwania fragmentów dokumentów i przekazywania ich modelowi, a MCP to protokół podłączania narzędzi i danych. Oba podejścia się uzupełniają: wyszukiwarkę RAG można udostępnić agentowi właśnie jako narzędzie na serwerze MCP.

W jakim języku najlepiej napisać serwer MCP?

W tym, w którym zespół utrzymuje resztę systemu. Oficjalne SDK istnieją m.in. dla TypeScript, Pythona, Go i C#. Dla serwerów wystawianych przez HTTP ważniejsze od języka są autoryzacja, logowanie wywołań i sensowny zakres uprawnień.

Jak sprawdzić, czy serwer MCP z internetu jest bezpieczny?

Wybieraj serwery publikowane przez dostawcę danej usługi albo takie, których kod możesz przejrzeć. Przypnij wersję, przeczytaj opisy narzędzi, uruchom serwer lokalny w kontenerze i sprawdź, jakich uprawnień wymaga. Jeśli serwer prosi o dostęp szerszy niż jego funkcja, nie podłączaj go.

Źródła