{"id":2283,"date":"2025-07-05T10:00:00","date_gmt":"2025-07-05T08:00:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2283"},"modified":"2026-08-05T17:24:16","modified_gmt":"2026-08-05T15:24:16","slug":"model-context-protocol-mcp-n8n","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/pl\/2025\/07\/05\/model-context-protocol-mcp-n8n\/","title":{"rendered":"Model Context Protocol (MCP) zrozumiale wyja\u015bniony \u2013 z przyk\u0142adem w n8n"},"content":{"rendered":"<p>Kto buduje agent\u00f3w AI, zna ten problem: dla ka\u017cdej funkcji pod\u0142\u0105czonej us\u0142ugi trzeba zdefiniowa\u0107 osobne narz\u0119dzie. Wyszukanie wpisu w kalendarzu, jego utworzenie, zmiana, usuni\u0119cie \u2013 to ju\u017c cztery odr\u0119bne elementy, i to tylko dla jednej us\u0142ugi. Przy wielu po\u0142\u0105czeniach nak\u0142ad na utrzymanie ro\u015bnie odpowiednio. <strong>Model Context Protocol (MCP)<\/strong> idzie inn\u0105 drog\u0105: standaryzuje spos\u00f3b, w jaki model j\u0119zykowy komunikuje si\u0119 z us\u0142ug\u0105 \u2013 i drastycznie zmniejsza liczb\u0119 potrzebnych element\u00f3w. Ten wpis podsumowuje koncepcj\u0119 oraz konkretny przyk\u0142ad praktyczny z n8n.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\">\n<strong>Najwa\u017cniejsze w skr\u00f3cie<\/strong><\/p>\n<ul>\n<li>MCP standaryzuje to, jak model j\u0119zykowy rozumie kontekst us\u0142ugi \u2013 czyli co ona potrafi i jak si\u0119 do niej zwraca\u0107.<\/li>\n<li>Zamiast pod\u0142\u0105cza\u0107 ka\u017cd\u0105 pojedyncz\u0105 funkcj\u0119 osobno, wystarcz\u0105 <em>serwer MCP<\/em> (przed us\u0142ug\u0105) oraz <em>klient MCP<\/em> (w agencie).<\/li>\n<li>Agentowi wystarcz\u0105 dwa kroki: <em>wylistowanie<\/em> funkcji (List Tools) i <em>wykonanie<\/em> funkcji (Execute Tool).<\/li>\n<li>W n8n da si\u0119 to odtworzy\u0107 za pomoc\u0105 jednej zmiennej \u015brodowiskowej, jednego node&#8217;a spo\u0142eczno\u015bciowego i dw\u00f3ch narz\u0119dzi klienta MCP.<\/li>\n<li>MCP to m\u0142oda technologia: istniej\u0105 znane zastrze\u017cenia dotycz\u0105ce bezpiecze\u0144stwa \u2013 w \u015brodowiskach produkcyjnych zalecana jest ostro\u017cno\u015b\u0107.<\/li>\n<\/ul>\n<\/div>\n<figure style=\"margin:28px 0;\"><img decoding=\"async\" src=\"https:\/\/pletzenauer.com\/wp-content\/uploads\/2026\/06\/1488-1.png\" alt=\"Por\u00f3wnanie w dw\u00f3ch kolumnach: po lewej klasyczne pod\u0142\u0105czanie jednego narz\u0119dzia na funkcj\u0119 z wieloma elementami, po prawej MCP z zaledwie dwoma krokami List Tools i Execute Tool.\" style=\"width:100%;height:auto;border-radius:8px;border:1px solid #E5E2DE;\"\/><figcaption style=\"font-size:0.9em;color:#6b6b6b;margin-top:8px;\">Zamiast pod\u0142\u0105cza\u0107 ka\u017cd\u0105 funkcj\u0119 osobno, agentowi wystarcz\u0105 dwie operacje MCP.<\/figcaption><\/figure>\n<h2>Co MCP w\u0142a\u015bciwie rozwi\u0105zuje<\/h2>\n<p>Podstawowa idea Model Context Protocol tkwi w nazwie: model j\u0119zykowy ma rozumie\u0107 <strong>kontekst<\/strong> aplikacji. Konkretnie oznacza to: co ta aplikacja potrafi? Do czego s\u0142u\u017cy? I jak wykonuj\u0119 w niej dzia\u0142ania?<\/p>\n<p>Klasycznie przy budowie agenta pod\u0142\u0105cza si\u0119 ka\u017cde narz\u0119dzie osobno \u2013 ka\u017cda funkcja to w\u0142asny element. Na przyk\u0142ad w Google Calendar: narz\u0119dzie do wyszukiwania wpis\u00f3w, jedno do aktualizacji, jedno do usuwania, jedno do tworzenia. Cztery funkcje dla jednej us\u0142ugi. Przy z\u0142o\u017conych agentach z wieloma pod\u0142\u0105czonymi us\u0142ugami szybko zbiera si\u0119 z tego kilkadziesi\u0105t element\u00f3w.<\/p>\n<h2>Serwer, klient i jednolity schemat<\/h2>\n<p>MCP pracuje z dwiema rolami:<\/p>\n<ul>\n<li><strong>Serwer MCP:<\/strong> stawia si\u0119 przed w\u0142a\u015bciw\u0105 us\u0142ug\u0105 (np. Airbnb albo Google Calendar) i opisuje, jak mo\u017cna z t\u0105 us\u0142ug\u0105 wchodzi\u0107 w interakcj\u0119.<\/li>\n<li><strong>Klient MCP:<\/strong> siedzi w agencie, pobiera funkcje serwera i je wywo\u0142uje.<\/li>\n<\/ul>\n<p>W obecnej realizacji \u2013 na przyk\u0142ad w n8n \u2013 wystarcz\u0105 do tego dwa kroki zamiast wielu pojedynczych narz\u0119dzi:<\/p>\n<ol>\n<li><strong>List Tools (wylistowanie):<\/strong> agent pyta serwer, jakie funkcje s\u0105 dost\u0119pne.<\/li>\n<li><strong>Execute Tool (wykonanie):<\/strong> agent wywo\u0142uje konkretn\u0105 funkcj\u0119 z odpowiednimi parametrami.<\/li>\n<\/ol>\n<p>Decyduj\u0105cy jest <strong>jednolity schemat<\/strong>. Niezale\u017cnie od tego, jaka us\u0142uga stoi za tym z ty\u0142u: odpowied\u017a na zapytanie List Tools jest zawsze zbudowana tak samo. Zawiera dla ka\u017cdej funkcji nazw\u0119, opis oraz schemat z dopuszczalnymi parametrami. Tre\u015bci i parametry r\u00f3\u017cni\u0105 si\u0119 mi\u0119dzy us\u0142ugami \u2013 struktura pozostaje sta\u0142a. Dok\u0142adnie to protok\u00f3\u0142 narzuca i standaryzuje.<\/p>\n<h3>Przyk\u0142ad z narz\u0119dziem Airbnb<\/h3>\n<p>Gdy zapytamy agenta, jakie mo\u017cliwo\u015bci oferuje narz\u0119dzie Airbnb, sam pobierze list\u0119 funkcji przez narz\u0119dzie List Tools. W odpowiedzi wracaj\u0105 mi\u0119dzy innymi:<\/p>\n<ul>\n<li><strong>Airbnb Search:<\/strong> wyszukiwanie ofert z filtrami i paginacj\u0105 \u2013 na przyk\u0142ad lokalizacja, data zameldowania i wymeldowania, liczba os\u00f3b doros\u0142ych, dzieci, niemowl\u0105t i zwierz\u0105t domowych oraz przedzia\u0142 cenowy.<\/li>\n<li><strong>Airbnb Listing Details:<\/strong> szczeg\u00f3\u0142owe informacje o konkretnej ofercie na podstawie jej identyfikatora listing-ID.<\/li>\n<\/ul>\n<p>Agent nie musia\u0142 tu dosta\u0107 niczego z g\u00f3ry \u2013 sam zdoby\u0142 dost\u0119pne funkcje, ich opisy oraz schemat parametr\u00f3w. W schemacie wida\u0107 na przyk\u0142ad pole tekstowe <code>location<\/code> (miasto, region itd.), pola dat zameldowania i wymeldowania, liczb\u0119 os\u00f3b doros\u0142ych oraz cen\u0119 minimaln\u0105 i maksymaln\u0105.<\/p>\n<p>Gdy postawimy potem konkretne zapytanie \u2013 na przyk\u0142ad o nocleg w Bangkoku dla sze\u015bciu os\u00f3b za maksymalnie 50 euro za noc \u2013 agent dzia\u0142a dwustopniowo: najpierw wywo\u0142uje List Tools (nic nie zapami\u0119ta\u0142, bo nie jest aktywna \u017cadna pami\u0119\u0107), rozpoznaje na podstawie schematu potrzebne parametry i wykonuje wyszukiwanie przez Execute Tool. Wynik \u2013 na przyk\u0142ad nocleg z trzema \u0142\u00f3\u017ckami za ok. 35 euro za noc \u2013 wraca, i to przy zaledwie dw\u00f3ch dodanych narz\u0119dziach. Gdyby Airbnb oferowa\u0142o wi\u0119cej funkcji, na przyk\u0142ad do zarz\u0105dzania w\u0142asnymi og\u0142oszeniami, da\u0142oby si\u0119 je odwzorowa\u0107 przez ten sam schemat, bez definiowania kolejnych element\u00f3w.<\/p>\n<h2>Jak odtworzy\u0107 MCP w n8n<\/h2>\n<p>Poni\u017csze kroki pokazuj\u0105 konfiguracj\u0119 na przyk\u0142adzie Airbnb. Nadaje si\u0119 on dobrze do wypr\u00f3bowania, bo nie wymaga klucza API.<\/p>\n<ol>\n<li><strong>Ustawienie zmiennej \u015brodowiskowej:<\/strong> Ustaw <code>N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE<\/code> na <code>true<\/code>. Pozwala to node&#8217;om spo\u0142eczno\u015bciowym na dost\u0119p do narz\u0119dzi. Przy instalacji w Dockerze (np. na serwerze Hetzner) wpisujesz to w sekcji <code>environment<\/code> pliku <code>docker-compose<\/code> i uruchamiasz instancj\u0119 ponownie.<\/li>\n<li><strong>Utworzenie AI Agent:<\/strong> Utw\u00f3rz AI Agent i przypisz model (na filmie GPT-4.1 Mini).<\/li>\n<li><strong>Instalacja node&#8217;a spo\u0142eczno\u015bciowego:<\/strong> W <em>Settings &rarr; Community Nodes<\/em> instalujesz pakiet <code>n8n-nodes-mcp<\/code> i potwierdzasz ostrze\u017cenie o instalacji niesprawdzonego kodu z publicznych \u017ar\u00f3de\u0142.<\/li>\n<li><strong>Dodanie narz\u0119dzia klienta MCP:<\/strong> Przez plus przy <em>Tools<\/em> wyszukaj \u201eMCP\u201d. Uwaga: nie pomyl tego z w\u0142asnym <em>MCP Client Tool<\/em> od n8n \u2013 wariant spo\u0142eczno\u015bciowy poznasz po symbolu pude\u0142ka i jest on obecnie bardziej rozbudowany.<\/li>\n<li><strong>Utworzenie danych dost\u0119powych:<\/strong> Jako rodzaj po\u0142\u0105czenia do wyboru s\u0105 Command Line, Server-Sent Events i HTTP Streamable. W przyk\u0142adzie zostaje Command Line. W\u0142a\u015bciwe warto\u015bci znajdziesz w repozytorium danego serwera MCP w sekcji o instalacji. Dla Airbnb: Command <code>npx<\/code>, argumenty wpisywane krok po kroku \u2013 <code>-y<\/code>, pakiet <code>@openbnb\/mcp-server-airbnb<\/code> i opcjonalnie <code>--ignore-robots-txt<\/code>.<\/li>\n<\/ol>\n<blockquote><p><strong>Uwaga do robots.txt:<\/strong> Opcja <code>--ignore-robots-txt<\/code> omija regu\u0142y dost\u0119pu strony internetowej. Do demonstracji jest to do przyj\u0119cia \u2013 w \u015brodowiskach produkcyjnych nale\u017cy respektowa\u0107 plik robots.txt danych us\u0142ug.<\/p><\/blockquote>\n<h3>Konfiguracja obu operacji<\/h3>\n<p>Nast\u0119pnie potrzebujesz dw\u00f3ch narz\u0119dzi klienta MCP z r\u00f3\u017cnymi operacjami:<\/p>\n<ul>\n<li><strong>List Tools:<\/strong> Nazwij narz\u0119dzie np. \u201eAirbnb List Tools\u201d i podaj w opisie, \u017ce s\u0142u\u017cy do pobierania wszystkich dost\u0119pnych narz\u0119dzi Airbnb. Testowe klikni\u0119cie (Execute Step) powinno zwr\u00f3ci\u0107 znan\u0105 list\u0119 funkcji z nazw\u0105, opisem i schematem.<\/li>\n<li><strong>Execute Tool:<\/strong> Drugie narz\u0119dzie klienta MCP z operacj\u0105 Execute Tool. Opis: do wykonywania narz\u0119dzi Airbnb, mo\u017cliwych do wylistowania przez narz\u0119dzie List Tools. Nazw\u0119 narz\u0119dzia przekazujesz jako Expression, tak by agent sam decydowa\u0142, kt\u00f3r\u0105 funkcj\u0119 wywo\u0142uje; parametry narz\u0119dzia zostawiasz wolne, \u017ceby sam je ustala\u0142.<\/li>\n<\/ul>\n<p>Po uporz\u0105dkowaniu i zapisaniu mo\u017cna przetestowa\u0107 agenta \u2013 na przyk\u0142ad ponownie zapytaniem o Bangkok. Pobiera list\u0119 funkcji, przekazuje j\u0105 modelowi, decyduje si\u0119 na wyszukiwanie i dostarcza pasuj\u0105ce noclegi. Dok\u0142adnie to zachowanie z cz\u0119\u015bci koncepcyjnej, teraz we w\u0142asnym workflow.<\/p>\n<h2>Poza n8n \u2013 i s\u0142owo o bezpiecze\u0144stwie<\/h2>\n<p>MCP nie ogranicza si\u0119 do platform automatyzacji. Tak\u017ce aplikacje desktopowe jak Claude Desktop daj\u0105 si\u0119 po\u0142\u0105czy\u0107 z serwerami MCP. Dzi\u0119ki temu mo\u017cna w czacie delegowa\u0107 zadania do lokalnie zainstalowanych program\u00f3w \u2013 cz\u0119sto cytowanym przyk\u0142adem jest sterowanie oprogramowaniem 3D Blender przez MCP, w kt\u00f3rym osoba bez znajomo\u015bci Blendera tworzy renderingi. Serwer MCP dzia\u0142a przy tym lokalnie, sam model j\u0119zykowy nadal przez us\u0142ug\u0119 chmurow\u0105.<\/p>\n<p>Przy ca\u0142ym entuzjazmie obowi\u0105zuje: MCP to m\u0142ode rozwi\u0105zanie. Istniej\u0105 ju\u017c <strong>zastrze\u017cenia dotycz\u0105ce bezpiecze\u0144stwa<\/strong> i znaleziono luki bezpiecze\u0144stwa. Zw\u0142aszcza w \u015brodowiskach produkcyjnych technologi\u0119 t\u0119 nale\u017cy traktowa\u0107 z ostro\u017cno\u015bci\u0105 \u2013 warto obserwowa\u0107 dalszy rozw\u00f3j, zanim oprze si\u0119 na niej krytyczne procesy.<\/p>\n<h2>Podsumowanie<\/h2>\n<p>Model Context Protocol to pragmatyczne podej\u015bcie do standaryzacji: model j\u0119zykowy uczy si\u0119 przez serwer MCP sam, co dana us\u0142uga potrafi i jak si\u0119 do niej zwraca\u0107 \u2013 zamiast definiowa\u0107 z g\u00f3ry ka\u017cd\u0105 funkcj\u0119 osobno. Dla z\u0142o\u017conych agent\u00f3w AI oznacza to zauwa\u017calnie mniej element\u00f3w i mniejszy nak\u0142ad na utrzymanie, w przyk\u0142adzie n8n wystarcz\u0105 dwa kroki: wylistowa\u0107 i wykona\u0107. Podej\u015bcie jest przekonuj\u0105ce, ale wci\u0105\u017c m\u0142ode. Kto je wypr\u00f3buje, powinien zacz\u0105\u0107 od niekrytycznych us\u0142ug, a w \u015brodowiskach produkcyjnych powa\u017cnie potraktowa\u0107 otwarte kwestie bezpiecze\u0144stwa.<\/p>\n<p><strong>\u0179r\u00f3d\u0142o:<\/strong> <a href=\"https:\/\/www.youtube.com\/watch?v=ujHOD52ybyo\" target=\"_blank\" rel=\"noopener\">Model Context Protocol (MCP): Erkl\u00e4rung &amp; n8n Tutorial (Deutsch)<\/a> \u2013 kana\u0142 YouTube Philip Thomas, w j\u0119zyku niemieckim.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Czym jest Model Context Protocol (MCP) i jak upraszcza agent\u00f3w AI? Koncepcja, przyk\u0142ad praktyczny z n8n i Airbnb oraz wskaz\u00f3wki dotycz\u0105ce bezpiecze\u0144stwa w skr\u00f3cie.<\/p>\n","protected":false},"author":0,"featured_media":1503,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-2283","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"_links":{"self":[{"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/posts\/2283","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/comments?post=2283"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/posts\/2283\/revisions"}],"predecessor-version":[{"id":2835,"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/posts\/2283\/revisions\/2835"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/media\/1503"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/media?parent=2283"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/categories?post=2283"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/pl\/wp-json\/wp\/v2\/tags?post=2283"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}