{"id":2396,"date":"2025-07-05T10:00:00","date_gmt":"2025-07-05T08:00:00","guid":{"rendered":"https:\/\/pletzenauer.com\/?p=2396"},"modified":"2026-08-05T17:25:16","modified_gmt":"2026-08-05T15:25:16","slug":"model-context-protocol-mcp-n8n","status":"publish","type":"post","link":"https:\/\/pletzenauer.com\/sv\/2025\/07\/05\/model-context-protocol-mcp-n8n\/","title":{"rendered":"Model Context Protocol (MCP) begripligt f\u00f6rklarat \u2013 med n8n-exempel"},"content":{"rendered":"<p>Den som bygger AI-agenter k\u00e4nner igen problemet: f\u00f6r varje funktion i en ansluten tj\u00e4nst m\u00e5ste ett eget verktyg definieras. S\u00f6ka, skapa, \u00e4ndra och radera en kalenderpost \u2013 det blir snabbt fyra separata byggstenar, och det bara f\u00f6r en enda tj\u00e4nst. Med m\u00e5nga anslutningar v\u00e4xer underh\u00e5llsarbetet i motsvarande grad. <strong>Model Context Protocol (MCP)<\/strong> g\u00e5r en annan v\u00e4g: det standardiserar hur en spr\u00e5kmodell kommunicerar med en tj\u00e4nst \u2013 och minskar antalet n\u00f6dv\u00e4ndiga byggstenar drastiskt. Det h\u00e4r inl\u00e4gget sammanfattar konceptet och ett konkret praktiskt exempel med n8n.<\/p>\n<div style=\"background:#FFE6D6;border-left:4px solid #F26A21;padding:16px 20px;border-radius:6px;margin:24px 0;\">\n<strong>Det viktigaste i korthet<\/strong><\/p>\n<ul>\n<li>MCP standardiserar hur en spr\u00e5kmodell f\u00f6rst\u00e5r kontexten hos en tj\u00e4nst \u2013 allts\u00e5 vad den kan och hur man tilltalar den.<\/li>\n<li>I st\u00e4llet f\u00f6r att koppla in varje enskild funktion separat r\u00e4cker en <em>MCP-server<\/em> (framf\u00f6r tj\u00e4nsten) och en <em>MCP-klient<\/em> (i agenten).<\/li>\n<li>Agenten klarar sig med tv\u00e5 steg: <em>lista<\/em> funktioner (List Tools) och <em>k\u00f6ra<\/em> funktioner (Execute Tool).<\/li>\n<li>I n8n g\u00e5r det att bygga efter med en milj\u00f6variabel, en community-node och tv\u00e5 MCP-klientverktyg.<\/li>\n<li>MCP \u00e4r en ung teknik: det finns k\u00e4nda s\u00e4kerhetsinv\u00e4ndningar \u2013 i produktionsmilj\u00f6er \u00e4r f\u00f6rsiktighet p\u00e5kallad.<\/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=\"J\u00e4mf\u00f6relse i tv\u00e5 kolumner: till v\u00e4nster klassisk inkoppling med ett verktyg per funktion och m\u00e5nga byggstenar, till h\u00f6ger MCP med bara tv\u00e5 steg, List Tools och 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;\">I st\u00e4llet f\u00f6r att koppla in varje funktion f\u00f6r sig klarar sig agenten med tv\u00e5 MCP-operationer.<\/figcaption><\/figure>\n<h2>Vad MCP egentligen l\u00f6ser<\/h2>\n<p>Grundid\u00e9n med Model Context Protocol ligger i namnet: en spr\u00e5kmodell ska f\u00f6rst\u00e5 <strong>kontexten<\/strong> hos en applikation. Konkret betyder det: vad kan den h\u00e4r applikationen? Vad \u00e4r den till f\u00f6r? Och hur utf\u00f6r jag \u00e5tg\u00e4rder i den?<\/p>\n<p>Klassiskt kopplar man vid agentbygge in varje verktyg f\u00f6r sig \u2013 varje funktion \u00e4r en egen byggsten. I Google Calendar till exempel: ett verktyg f\u00f6r att s\u00f6ka poster, ett f\u00f6r att uppdatera, ett f\u00f6r att radera, ett f\u00f6r att skapa. Fyra funktioner f\u00f6r en tj\u00e4nst. Hos komplexa agenter med m\u00e5nga anslutna tj\u00e4nster summerar det sig snabbt till dussintals byggstenar.<\/p>\n<h2>Server, klient och det enhetliga schemat<\/h2>\n<p>MCP arbetar med tv\u00e5 roller:<\/p>\n<ul>\n<li><strong>MCP-server:<\/strong> placerar sig framf\u00f6r den egentliga tj\u00e4nsten (t.ex. Airbnb eller Google Calendar) och beskriver hur man kan interagera med tj\u00e4nsten.<\/li>\n<li><strong>MCP-klient:<\/strong> sitter i agenten och h\u00e4mtar respektive anropar serverns funktioner.<\/li>\n<\/ul>\n<p>I den nuvarande implementationen \u2013 till exempel i n8n \u2013 r\u00e4cker tv\u00e5 steg i st\u00e4llet f\u00f6r m\u00e5nga enskilda verktyg:<\/p>\n<ol>\n<li><strong>List Tools (lista):<\/strong> agenten fr\u00e5gar servern vilka funktioner som finns tillg\u00e4ngliga.<\/li>\n<li><strong>Execute Tool (k\u00f6ra):<\/strong> agenten anropar en konkret funktion med passande parametrar.<\/li>\n<\/ol>\n<p>Avg\u00f6rande \u00e4r det <strong>enhetliga schemat<\/strong>. Oavsett vilken tj\u00e4nst som ligger bakom: svaret p\u00e5 en List-Tools-f\u00f6rfr\u00e5gan \u00e4r alltid uppbyggt p\u00e5 samma s\u00e4tt. Det inneh\u00e5ller per funktion namnet, en beskrivning och ett schema med de till\u00e5tna parametrarna. Inneh\u00e5ll och parametrar skiljer sig fr\u00e5n tj\u00e4nst till tj\u00e4nst \u2013 strukturen f\u00f6rblir konstant. Det \u00e4r precis det protokollet f\u00f6reskriver och standardiserar.<\/p>\n<h3>Ett exempel med Airbnb-verktyget<\/h3>\n<p>Fr\u00e5gar man agenten vilka m\u00f6jligheter Airbnb-verktyget erbjuder h\u00e4mtar den funktionslistan sj\u00e4lv via List-Tools-verktyget. Tillbaka kommer bland annat:<\/p>\n<ul>\n<li><strong>Airbnb Search:<\/strong> s\u00f6kning efter erbjudanden med filter och paginering \u2013 till exempel plats, incheckningsdatum och utcheckningsdatum, antal vuxna, barn, sp\u00e4dbarn och husdjur samt prisintervall.<\/li>\n<li><strong>Airbnb Listing Details:<\/strong> detaljerad information om ett best\u00e4mt erbjudande via dess listing-ID.<\/li>\n<\/ul>\n<p>Agenten beh\u00f6vde inte f\u00e5 n\u00e5got f\u00f6rutbest\u00e4mt \u2013 den skaffade sj\u00e4lv fram de tillg\u00e4ngliga funktionerna, deras beskrivningar och parameterschemat. I schemat ser man till exempel ett textf\u00e4lt <code>location<\/code> (stad, region etc.), datumf\u00e4lten f\u00f6r in- och utcheckning, antalet vuxna samt l\u00e4gsta och h\u00f6gsta pris.<\/p>\n<p>St\u00e4ller man sedan en konkret fr\u00e5ga \u2013 till exempel ett boende i Bangkok f\u00f6r sex personer f\u00f6r h\u00f6gst 50 euro per natt \u2013 arbetar agenten i tv\u00e5 steg: den anropar f\u00f6rst List Tools (den har inte kommit ih\u00e5g n\u00e5got, eftersom inget minne \u00e4r aktivt), identifierar de n\u00f6dv\u00e4ndiga parametrarna utifr\u00e5n schemat och genomf\u00f6r s\u00f6kningen via Execute Tool. Resultatet \u2013 till exempel ett boende med tre s\u00e4ngar f\u00f6r cirka 35 euro per natt \u2013 kommer tillbaka, och det med bara tv\u00e5 tillagda verktyg. Skulle Airbnb erbjuda fler funktioner, till exempel f\u00f6r att hantera egna annonser, skulle de kunna t\u00e4ckas av samma schema utan att fler byggstenar beh\u00f6ver definieras.<\/p>\n<h2>S\u00e5 bygger du MCP i n8n<\/h2>\n<p>F\u00f6ljande steg visar upps\u00e4ttningen med Airbnb som exempel. Det l\u00e4mpar sig bra att testa med, eftersom ingen API-nyckel beh\u00f6vs.<\/p>\n<ol>\n<li><strong>S\u00e4tt milj\u00f6variabeln:<\/strong> s\u00e4tt <code>N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE<\/code> till <code>true<\/code>. Det ger community-nodes \u00e5tkomst till verktyg. Vid en Docker-installation (t.ex. p\u00e5 en Hetzner-server) l\u00e4gger du in det i avsnittet <code>environment<\/code> i <code>docker-compose<\/code>-filen och startar om instansen.<\/li>\n<li><strong>Skapa en AI-agent:<\/strong> skapa en AI-agent och l\u00e4gg in en modell (i videon GPT-4.1 Mini).<\/li>\n<li><strong>Installera community-noden:<\/strong> under <em>Settings &rarr; Community Nodes<\/em> installerar du paketet <code>n8n-nodes-mcp<\/code> och bekr\u00e4ftar varningen om installation av ogranskad kod fr\u00e5n offentliga k\u00e4llor.<\/li>\n<li><strong>L\u00e4gg till MCP-klientverktyget:<\/strong> s\u00f6k efter \u201eMCP\u201c via plustecknet vid <em>Tools<\/em>. Obs: f\u00f6rv\u00e4xla det inte med n8n:s eget <em>MCP Client Tool<\/em> \u2013 community-varianten k\u00e4nns igen p\u00e5 boxsymbolen och \u00e4r f\u00f6r n\u00e4rvarande mer omfattande.<\/li>\n<li><strong>Skapa inloggningsuppgifter:<\/strong> som anslutningstyp finns Command Line, Server-Sent Events och HTTP Streamable att v\u00e4lja mellan. I exemplet blir det Command Line. R\u00e4tt v\u00e4rden st\u00e5r i respektive MCP-servers repository i avsnittet om installation. F\u00f6r Airbnb: kommandot <code>npx<\/code>, argumenten inlagda steg f\u00f6r steg \u2013 <code>-y<\/code>, paketet <code>@openbnb\/mcp-server-airbnb<\/code> och valfritt <code>--ignore-robots-txt<\/code>.<\/li>\n<\/ol>\n<blockquote><p><strong>Om robots.txt:<\/strong> alternativet <code>--ignore-robots-txt<\/code> f\u00f6rbig\u00e5r \u00e5tkomstreglerna f\u00f6r en webbplats. F\u00f6r en demo \u00e4r det f\u00f6rsvarbart \u2013 i produktionsmilj\u00f6er b\u00f6r du respektera robots.txt hos respektive tj\u00e4nst.<\/p><\/blockquote>\n<h3>Att st\u00e4lla in de b\u00e5da operationerna<\/h3>\n<p>D\u00e4refter beh\u00f6ver du tv\u00e5 MCP-klientverktyg med olika operationer:<\/p>\n<ul>\n<li><strong>List Tools:<\/strong> d\u00f6p verktyget till t.ex. \u201eAirbnb List Tools\u201c och ange som beskrivning att det anv\u00e4nds f\u00f6r att h\u00e4mta alla tillg\u00e4ngliga Airbnb-verktyg. Ett testklick (Execute Step) b\u00f6r returnera den bekanta funktionslistan med namn, beskrivning och schema.<\/li>\n<li><strong>Execute Tool:<\/strong> ett andra MCP-klientverktyg med operationen Execute Tool. Beskrivning: f\u00f6r att k\u00f6ra Airbnb-verktyg, som kan listas via List-Tools-verktyget. Verktygsnamnet skickar du som en expression, s\u00e5 att agenten sj\u00e4lv avg\u00f6r vilken funktion den anropar; verktygsparametrarna l\u00e4mnar du fria s\u00e5 att den best\u00e4mmer dem sj\u00e4lv.<\/li>\n<\/ul>\n<p>Efter uppst\u00e4dning och sparande g\u00e5r agenten att testa \u2013 till exempel p\u00e5 nytt med Bangkok-fr\u00e5gan. Den h\u00e4mtar funktionslistan, ger den tillbaka till modellen, best\u00e4mmer sig f\u00f6r s\u00f6kningen och levererar passande boenden. Exakt beteendet fr\u00e5n konceptdelen, nu i ditt eget arbetsfl\u00f6de.<\/p>\n<h2>Bortom n8n \u2013 och ett ord om s\u00e4kerheten<\/h2>\n<p>MCP begr\u00e4nsar sig inte till automatiseringsplattformar. \u00c4ven skrivbordsprogram som Claude Desktop g\u00e5r att koppla till MCP-servrar. D\u00e4rmed kan man i chatten delegera uppgifter till lokalt installerade program \u2013 ett ofta citerat exempel \u00e4r styrningen av 3D-programmet Blender via MCP, d\u00e4r en person utan Blender-kunskaper skapar renderingar. MCP-servern k\u00f6rs d\u00e5 lokalt, medan sj\u00e4lva spr\u00e5kmodellen fortfarande g\u00e5r via molntj\u00e4nsten.<\/p>\n<p>Trots all entusiasm g\u00e4ller: MCP \u00e4r en ung utveckling. Det finns redan <strong>s\u00e4kerhetsinv\u00e4ndningar<\/strong>, och s\u00e4kerhetsluckor har hittats. Just i produktionsmilj\u00f6er b\u00f6r tekniken hanteras med f\u00f6rsiktighet \u2013 det l\u00f6nar sig att f\u00f6lja den fortsatta utvecklingen innan man bygger kritiska processer p\u00e5 den.<\/p>\n<h2>Slutsats<\/h2>\n<p>Model Context Protocol \u00e4r ett pragmatiskt s\u00e4tt att standardisera: en spr\u00e5kmodell l\u00e4r sig sj\u00e4lv via en MCP-server vad en tj\u00e4nst kan och hur man tilltalar den \u2013 i st\u00e4llet f\u00f6r att varje funktion definieras i f\u00f6rv\u00e4g. F\u00f6r komplexa AI-agenter betyder det m\u00e4rkbart f\u00e4rre byggstenar och mindre underh\u00e5ll; i n8n-exemplet r\u00e4cker tv\u00e5 steg: lista och k\u00f6ra. Ansatsen \u00e4r \u00f6vertygande, men fortfarande ung. Den som provar den b\u00f6r b\u00f6rja med okritiska tj\u00e4nster och ta de \u00f6ppna s\u00e4kerhetsfr\u00e5gorna p\u00e5 allvar i produktionsmilj\u00f6er.<\/p>\n<p><strong>K\u00e4lla:<\/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>, p\u00e5 tyska \u2013 YouTube-kanalen Philip Thomas.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vad \u00e4r Model Context Protocol (MCP) och hur f\u00f6renklar det AI-agenter? Konceptet, ett praktiskt exempel med n8n och Airbnb samt s\u00e4kerhetsaspekter i \u00f6versikt.<\/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-2396","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-unkategorisiert"],"_links":{"self":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts\/2396","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"replies":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/comments?post=2396"}],"version-history":[{"count":1,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts\/2396\/revisions"}],"predecessor-version":[{"id":3041,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/posts\/2396\/revisions\/3041"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/media\/1503"}],"wp:attachment":[{"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/media?parent=2396"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/categories?post=2396"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pletzenauer.com\/sv\/wp-json\/wp\/v2\/tags?post=2396"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}