Model Context Protocol fylder efterhånden det meste af samtalen om AI-kodning i 2026. Protokollen, som Anthropic søsatte og som nu drives af en bredere arbejdsgruppe med flere store bidragydere, binder VS Code, GitHub Copilot, Claude Code og Cursor sammen om de samme værktøjsservere. Den nyeste spec-revision, 2026-07-28, gør protokollen enklere at implementere og strammere på sikkerhed. Denne guide viser dig, trin for trin, hvordan du sætter MCP-servere op på tværs af de fire mest brugte AI-assistenter i danske udviklerteams, bygger din egen server fra bunden og undgår de fejl, der oftest sender folk tilbage til søgemaskinen efter hjælp.

Guiden er skrevet til dig, der allerede kører et af de fire værktøjer i det daglige, men aldrig har koblet en MCP-server på. Du behøver ikke forstå protokollens interne skema for at få gavn af den. Til gengæld skal du kunne åbne en terminal, redigere en JSON-fil og læse en fejlbesked, uden at gå i panik. Vi bruger de samme kommandoer og filnavne, som VS Code, GitHub Copilot, Claude Code og Cursor selv dokumenterer, så du kan følge med, uanset hvilken af de fire du sidder med lige nu, eller om du, som mange teams gør, ender med at bruge to eller tre af dem parallelt.

Vi har delt guiden op, så du kan springe direkte til den klient, du bruger, men vi anbefaler at læse afsnittet om sikkerhed og faldgruber uanset hvad, fordi de fejl, der driller folk mest, går igen på tværs af alle fire værktøjer.

Hvad er MCP, og hvorfor skal du bruge det?

MCP er en åben protokol, der forbinder AI-modeller med eksterne værktøjer, filer og datakilder gennem standardiserede “servere” og “klienter”. I stedet for at hver AI-assistent skal bygge sin egen integration til GitHub, en database eller filsystemet, eksponerer en MCP-server et sæt værktøjer på en fælles måde, som enhver MCP-kompatibel klient kan læse og kalde. Specifikationen ligger offentligt tilgængelig på modelcontextprotocol.io og i det officielle GitHub-repository, hvor arbejdsgruppen og Anthropic som ledende bidragyder holder skemaet og protokolreglerne opdateret.

I praksis fungerer det sådan: du beder din assistent om noget, for eksempel “find de tre nyeste åbne issues i dette repository”. Assistenten genkender, at opgaven kræver et værktøj, den ikke selv har indbygget, slår op i listen af tilkoblede MCP-servere, finder en, der tilbyder et værktøj til GitHub-issues, og kalder det med de rigtige parametre. Serveren svarer med rå data, som modellen derefter formulerer til et menneskeligt svar. Hele udvekslingen sker uden, at du selv skal skifte vindue, logge ind på GitHub i browseren eller skrive en eneste linje kode for at hente informationen.

Interessen har taget fart det seneste år. Ifølge DataForSEOs søgeordsdata ligger søgeordet “mcp server” nu på over 1.300 månedlige søgninger i Danmark, med lav konkurrence, hvilket afspejler, at MCP er gået fra nichebegreb til noget de fleste teams med en Copilot- eller Claude-licens støder på i praksis. Gevinsten er konkret: du slipper for at kopiere kode ind i en chatboks, fordi assistenten selv kan læse filer, søge i en database eller slå et GitHub-issue op, mens du arbejder. For et team, der allerede har sat VS Code og en Copilot-licens op, er MCP typisk det næste logiske skridt, fremfor endnu en editor eller endnu et abonnement.

Et andet eksempel gør forskellen tydeligere. Forestil dig, at du beder assistenten om at “tjekke, om der er en ledig migration i databasen, der endnu ikke er kørt”. Uden MCP skal du selv åbne et databaseværktøj, finde svaret og lime det ind i samtalen. Med en database-MCP-server koblet på kan assistenten selv sende forespørgslen, læse svaret og fortælle dig resultatet, mens den samtidig kan foreslå den kommando, der kører migrationen, hvis du beder om det. Det er den samme mekanik som med GitHub-eksemplet, bare med en anden server bag kulissen.

MCP-spec 2026-07-28: Det vigtigste, der er nyt

Den 28. juli 2026 blev spec-revisionen 2026-07-28 udgivet som afløser for 2025-11-25, og den er den version, alle fire klienter i denne guide bygger mod. Den mest markante ændring er, at protokollen er gjort primært tilstandsløs: håndtrykket med initialize/initialized og session-id’et Mcp-Session-Id fra tidligere versioner er fjernet fra kernen. I stedet tilføjes _meta-metadata på forespørgsler, en valgfri server/discover-mekanisme, header-baseret routing via Mcp-Method og Mcp-Name, samt cachebare svar på værktøjslister.

Samtidig blev de officielle SDK’er til TypeScript, Python, Go og C# opdateret til at følge den nye spec, noget Cloudflare bekræftede i deres eget blogindlæg om overgangen. Konsekvensen for dig som udvikler er hovedsageligt praktisk: nyere servere svarer hurtigere, fordi klienter kan cache værktøjslister i stedet for at spørge hver gang, og autorisationslaget er strammet, så en ondsindet server har sværere ved at udgive sig for noget andet, end den er.

Skemaet blev også udvidet med begreberne Extensions, Tasks og MCP Apps, som samlet flytter protokollen fra “kald et værktøj, få et svar” til noget, der ligner længerevarende opgaver, en server kan holde styr på over tid. Det er endnu tidligt i den udvikling, og de fleste servere, du støder på i denne guide, bruger stadig den enkle model med ét værktøjskald ad gangen. Men hvis du bygger dine egne servere fremadrettet, er det værd at kende retningen, protokollen bevæger sig i, så du ikke designer dig ind i et hjørne, den nyeste SDK allerede har løst bedre.

Forudsætninger: Software, versioner og konti

Før du går i gang, skal et par ting være på plads. Du behøver ikke alle fire klienter for at følge guiden, men trinene forudsætter, at du har adgang til mindst én af dem, og at grundværktøjerne nedenfor er installeret. Har du i forvejen sat en af klienterne op via vores andre guider til GitHub Copilot, Claude Code eller Cursor, kan du springe direkte til trin 3.

VærktøjVersion / kravHvorfor du skal bruge det
Node.js20 LTS eller nyereKører TypeScript-baserede MCP-servere via npx
Python3.11 eller nyereKører Python-baserede MCP-servere via uvx eller pip
VS Code1.132 eller nyere (5. august 2026)Indbygget MCP-understøttelse plus GitHub Copilot-udvidelsen
GitHub Copilot-licensFree, Pro, Business eller EnterpriseAdgang til Copilot Chat med MCP-værktøjer i VS Code
Claude Code CLISeneste version (npm-pakke @anthropic-ai/claude-code)MCP-servere tilføjes via kommandoen claude mcp add
CursorSeneste versionIndbygget MCP-klient med .cursor/mcp.json
Git og terminalEnhver nyere versionKlargøring, versionsstyring og fejlsøgning
GitHub Personal Access TokenFine-grained, snævre scopesAutentificering mod GitHubs egen hostede MCP-server

Har du et team, hvor kollegaer sidder på både macOS, Windows og Linux, er det værd at bemærke, at kommandoerne til Node.js og uv er identiske på tværs af de tre platforme, mens installationsscriptet til uv findes i en separat PowerShell-variant til Windows. Selve MCP-konfigurationen, altså indholdet af json-filerne senere i guiden, er 100 procent ens uanset styresystem, fordi den bare beskriver, hvilken kommando klienten skal starte, ikke hvordan kommandoen selv er bygget.

Tidsforbruget afhænger af, hvor mange klienter du sætter op. Skal du kun bruge én klient, filesystem-serveren og memory-serveren fra trin 3-4, tager det typisk 10-15 minutter inklusive installation af Node.js og uv. Følger du hele guiden med alle fire klienter, GitHubs remote-server og dit eget mini-projekt fra trin 10, bør du afsætte omkring 45 minutter, hvoraf en stor del går med at vente på, at pakker downloades første gang.

MCP på tværs af fire klienter: konfigurationen side om side

Den hyppigste kilde til frustration, når udviklere sætter MCP op for første gang, er ikke selve protokollen, men at de fire store klienter bruger let forskellige filnavne og nøglestrukturer til at beskrive nøjagtig det samme. Før vi går i gang med trinene, er det derfor nyttigt at se dem ved siden af hinanden.

KlientKonfigurationsfilRod-nøgleUnderstøttede transporter
VS Code.vscode/mcp.json eller settings.json (nøgle “mcp”)serversstdio, http
GitHub Copilot (i VS Code)Samme fil som VS Code, læses af Copilot-udvidelsenserversstdio, http
Claude Code~/.claude/settings.json eller projektfilen .mcp.jsonmcpServersstdio, SSE, http
Cursor.cursor/mcp.json (projekt) eller ~/.cursor/mcp.json (globalt)mcpServersstdio, SSE, http

Læg mærke til mønsteret: VS Code og Copilot deler samme fil og samme rod-nøgle, fordi Copilot i praksis er en udvidelse oven på VS Codes eget MCP-lag. Claude Code og Cursor bruger derimod begge mcpServers som rod-nøgle, men gemmer den i hver deres filstruktur. Kender du denne tabel udenad, sparer du dig selv for det meste af den fejlsøgning, resten af guiden ellers ville handle om.

Transportvalget har også praktisk betydning for, hvor en server kan køre. Stdio-transport betyder, at klienten selv starter serverprocessen lokalt på din maskine, hvilket er hurtigst at sætte op, men kræver, at alle nødvendige runtime-værktøjer, Node.js eller Python, er installeret lokalt. Http- og SSE-transport betyder derimod, at serveren kører et andet sted, hos en vendor eller på en intern maskine i teamets netværk, og klienten blot taler med den over internettet eller det lokale netværk. GitHubs remote-server i trin 5 er et eksempel på det sidste, mens git- og filesystem-serverne i denne guide er eksempler på det første.

Trin 1-2: Installer Node.js, Python og de nødvendige CLI-værktøjer

Start med at bekræfte, at grundstenene er på plads. TypeScript-servere hentes og køres typisk med npx, mens Python-servere bruger uvx fra Astrals uv-pakkehåndtering. Claude Code CLI installeres separat som en global npm-pakke. Rækkefølgen har betydning: installerer du Claude Code CLI, før Node.js er på plads, fejler installationen med en uklar fejlbesked om manglende npm-kommando, i stedet for en klar besked om, hvad der reelt mangler.

# Tjek at Node.js og npm er installeret
node --version
npm --version

# Installer uv, som styrer uvx til Python-baserede MCP-servere
curl -LsSf https://astral.sh/uv/install.sh | sh
uvx --version

# Installer Claude Code CLI globalt
npm install -g @anthropic-ai/claude-code
claude --version

Kør hver linje for sig og læs outputtet. Får du “command not found” efter installationen af uv, skal du typisk genstarte terminalen, så den nye PATH-variabel bliver læst ind. Windows-brugere bruger PowerShell-varianten af uv-installationskommandoen fra Astrals dokumentation i stedet for curl-linjen. Er du i tvivl om, hvorvidt Node.js allerede er nyt nok, er 20 LTS et sikkert minimum, fordi det er den version, de fleste MCP-relaterede npm-pakker er testet imod i skrivende stund. Ældre versioner kan fungere, men du risikerer uforklarlige fejl i pakker, der bruger nyere JavaScript-syntaks under motorhjelmen.

Trin 3-4: Opret din første mcp.json og tilføj en lokal server

VS Code læser MCP-konfiguration fra en projektfil kaldet .vscode/mcp.json, med en øverste nøgle ved navn servers. Du kan alternativt lægge den samme struktur under en mcp-nøgle i din almindelige settings.json, hvis du vil have serverne tilgængelige på tværs af projekter. Se VS Codes egen dokumentation om MCP-servere for den fulde oversigt over understøttede transporter. Vi starter med to af de officielle referenceservere, filesystem og memory, fordi de ikke kræver nogen konto eller adgangstoken og derfor er den hurtigste måde at bekræfte, at grundopsætningen virker.

{
  "servers": {
    "filesystem": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/dev/projekter"]
    },
    "memory": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-memory"]
    }
  }
}

Gem filen i projektroden under mappen .vscode, og genindlæs vinduet (Ctrl+Shift+P, “Developer: Reload Window”). Åbn dernæst kommandopaletten igen og kør “MCP: List Servers” for at bekræfte, at både filesystem- og memory-serveren dukker op som forbundet. Filesystem-serveren og memory-serveren er begge del af de aktive referenceservere i det officielle modelcontextprotocol/servers-repository. Bemærk stien i filesystem-eksemplet: erstat /home/dev/projekter med den mappe, du faktisk vil give assistenten adgang til. Jo mere præcis sti, jo mindre er risikoen for, at et forkert formuleret spørgsmål får assistenten til at rode i filer, der ikke er relevante.

Kommandopaletten viser typisk et resultat, der ligner dette, når begge servere er korrekt forbundet:

MCP: List Servers

  filesystem   stdio   npx @modelcontextprotocol/server-filesystem   Running
  memory       stdio   npx @modelcontextprotocol/server-memory        Running

Står en af serverne som “Stopped” eller slet ikke fremgår af listen, er filen enten placeret forkert, eller også indeholder den en syntaksfejl i JSON’en, hvilket VS Code normalt vil markere med en rød bølgelinje, hvis du åbner filen direkte i editoren.

Trin 5: Forbind GitHub Copilot til en remote MCP-server

Mange af de servere, der tidligere blev regnet som officielle, herunder GitHub-, Postgres- og Sentry-serverne, er flyttet til et arkiveret repository og vedligeholdes ikke længere aktivt af kerneteamet. Den anbefalede vej for GitHub-integration i 2026 er derfor ikke den gamle npm-pakke, men GitHubs egen hostede MCP-server, som Copilot i VS Code kan pege direkte på uden lokal installation eller vedligehold af serverkoden.

{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "Authorization": "Bearer ${input:github_pat}"
      }
    }
  }
}

Bemærk ${input:github_pat}-syntaksen. Den beder VS Code om at spørge dig om tokenet, første gang serveren startes, i stedet for at gemme det i klartekst i filen. Opret et fine-grained personal access token under GitHub-kontoindstillingerne, giv det kun de scopes, du reelt har brug for (typisk repo-læsning og issues), og indsæt det, når VS Code beder om det. Se GitHubs Copilot-dokumentation for den fulde liste over understøttede scopes til MCP-brug. Har du allerede fulgt vores guide til GitHub Copilot Agents i VS Code, genkender du en del af mønsteret her, remote MCP-servere er i praksis den samme mekanisme, som agent-funktionerne bygger ovenpå.

Trin 6: Opsæt MCP i Claude Code med claude mcp add

Claude Code gemmer delt konfiguration, inklusive MCP-servere, i ~/.claude/settings.json, en fil både CLI’en og VS Code-udvidelsen læser fra, ifølge Anthropics egen dokumentation for VS Code-integrationen. Den hurtigste måde at tilføje en server på er kommandolinjen, og fordi Claude Code er bygget til at køre både i terminalen og som udvidelse i VS Code, gælder konfigurationen automatisk begge steder, så snart du har kørt kommandoen én gang.

claude mcp add --transport http github https://api.githubcopilot.com/mcp/ \
  --header "Authorization: Bearer YOUR_GITHUB_PAT"

# Bekræft at serveren er registreret
claude mcp list

Syntaksen er claude mcp add --transport <transport> <navn> <url> --header "<Header: Værdi>", og den virker til både http- og SSE-baserede servere. Vil du i stedet dele en server med resten af teamet gennem versionsstyring, kan du lægge den i en projektfil, .mcp.json, med en øverste nøgle kaldet mcpServers, som understøtter stdio, SSE og HTTP som transport. Fordelen ved projektfilen frem for den globale settings.json er, at nye teammedlemmer automatisk får de rigtige servere, så snart de kloner repositoriet, uden at nogen skal huske at sende dem en liste af kommandoer i en chat.

Vil du sikre dig, at hele teamet får den samme server, uden at hver enkelt skal køre claude mcp add selv, er den mest robuste løsning at redigere .mcp.json direkte og committe filen til Git, mens hver udvikler kun tilføjer sit eget token lokalt via en input-prompt eller miljøvariabel. På den måde bliver serverdefinitionen delt kode, mens hemmelighederne forbliver personlige og aldrig rammer versionsstyringen.

Trin 7: Konfigurer Cursor med .cursor/mcp.json

Cursor bruger en lignende, men ikke identisk struktur. Konfigurationen ligger enten i .cursor/mcp.json på projektniveau eller i ~/.cursor/mcp.json, hvis du vil have serveren tilgængelig globalt, og roden hedder her mcpServers i stedet for servers. Det er den hyppigste kilde til fejl, når udviklere kopierer en konfiguration fra VS Code over i Cursor uden at rette nøglenavnet, fordi filen ellers ligner hinanden til forveksling.

{
  "mcpServers": {
    "git": {
      "command": "uvx",
      "args": ["mcp-server-git", "--repository", "."]
    }
  }
}

Genstart Cursor efter du har gemt filen, og tjek under indstillinger for MCP, at git-serveren står som aktiv med et grønt ikon. Cursor understøtter, ligesom Claude Code, stdio, SSE og HTTP som transport for hver enkelt serverdefinition. Har du allerede sat Cursor op med Composer efter vores guide til Cursor AI: Opsætning med Composer og MCP, genbruger du samme fil, tilføjelsen her er blot endnu en post under mcpServers.

Trin 8-9: Test forbindelsen og beskyt dine API-nøgler

Når du har registreret et par servere, er det værd at bekræfte, at de faktisk svarer, før du bygger videre. Kør en statuskommando og se på outputtet. Et grønt “forbundet” betyder, at klienten har startet serverprocessen og modtaget et gyldigt svar på dens indledende håndtryk, ikke nødvendigvis at hvert enkelt værktøj virker korrekt, så det er stadig værd at teste et konkret spørgsmål bagefter.

$ claude mcp list

Tjekker konfigurerede MCP-servere...

github    http   https://api.githubcopilot.com/mcp/       forbundet
git       stdio  uvx mcp-server-git                        forbundet
memory    stdio  npx @modelcontextprotocol/server-memory   forbundet

Står en server som fejlet i stedet for forbundet, er første skridt altid at køre den underliggende kommando manuelt i terminalen, så du ser den rå fejlbesked i stedet for klientens forkortede version. Når det gælder nøgler, er reglen enkel: skriv aldrig et token direkte ind i en mcp.json-fil, der ligger under versionsstyring. Brug input-prompts i VS Code, miljøvariabler i Claude Code og Cursor, og læg filen i .gitignore, hvis den absolut skal indeholde hemmeligheder lokalt. Roter tokens jævnligt, og hold scopes så snævre som muligt. Har flere i teamet brug for samme server, er det bedre at give hver person sit eget token med samme snævre scope, end at dele ét token på tværs af flere maskiner, både af sikkerhedshensyn og fordi det gør det lettere at spore, hvem der har kaldt hvad.

Trin 10: Byg dit eget MCP-projekt fra bunden

Det bedste bevis på, at du har forstået protokollen, er at bygge en simpel server selv. Her er et komplet, kørbart eksempel: en lille todo-server med ét værktøj, som en hvilken som helst af de fire klienter kan kalde. Formålet er ikke, at du skal bruge netop denne server i produktion, men at du ser hele kæden fra kode til værktøjskald i praksis, så du kan udvide den til noget, dit team reelt har brug for, for eksempel opslag i et internt API eller en intern vidensbase.

// package.json
{
  "name": "mini-todo-mcp-server",
  "version": "1.0.0",
  "type": "module",
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.0.0",
    "zod": "^3.23.0"
  }
}
// server.js
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";

const server = new McpServer({ name: "mini-todo-server", version: "1.0.0" });
const todos = [];

server.tool(
  "add_todo",
  { task: z.string() },
  async ({ task }) => {
    todos.push(task);
    return { content: [{ type: "text", text: `Tilfoejet opgave: ${task}. I alt ${todos.length} opgaver.` }] };
  }
);

const transport = new StdioServerTransport();
await server.connect(transport);

Kør npm install i projektmappen, og registrer så serveren i din foretrukne klient. I VS Codes mcp.json tilføjer du blot en ny post under servers, der peger på filen med node som kommando og stien til server.js som argument.

{
  "servers": {
    "mini-todo": {
      "type": "stdio",
      "command": "node",
      "args": ["./mini-todo-mcp-server/server.js"]
    }
  }
}

Start klienten, spørg assistenten om at tilføje en opgave, og bekræft, at svaret kommer tilbage gennem dit eget værktøj i stedet for modellens generelle svar, du kan se det ved, at svaret indeholder den præcise sætning fra din kode, “Tilfoejet opgave”, og ikke en omskrivning. Det er den hurtigste måde at forstå, hvordan tool-kald rent faktisk ruter gennem protokollen: modellen ser værktøjets navn og beskrivelse, beslutter at kalde det, sender parametrene af sted, og din kode bestemmer, hvad der kommer tilbage. Vil du udvide serveren, er næste naturlige skridt at tilføje et andet værktøj, for eksempel list_todos, så du får afprøvet, hvordan en server med flere værktøjer opfører sig.

Når du er tryg ved mønsteret, kan du erstatte den simple array-baserede lagring med et rigtigt lager, for eksempel en lokal SQLite-fil eller et kald til et internt API. Selve MCP-laget ændrer sig ikke, kun det, der sker inde i add_todo-funktionen. Det er en af de mest undervurderede fordele ved protokollen: du kan starte med det simplest mulige eksempel og gradvist bygge det om til noget produktionsklart, uden at klienterne, der kalder serveren, nogensinde skal ændre en linje kode.

Trin 11-12: Overvåg drift, log kald og lås sikkerheden fast

Når serverne kører i praksis, er der to ting, du bør holde øje med løbende. For det første: giv filesystem-servere adgang til én bestemt projektmappe, aldrig hele hjemmemappen, så en fejl eller ondsindet prompt ikke kan læse eller ændre filer uden for scope. For det andet: behandl tredjeparts MCP-servere som enhver anden afhængighed i din supply chain, det vil sige med versionslåsning, gennemgang af kildekoden før installation og opdatering på et tidspunkt, du selv styrer, ikke automatisk ved hver genstart.

Sikkerhedsforskere har siden protokollens tidlige udbredelse peget på prompt injection og “tool poisoning”, altså en server, der beskriver et værktøj vildledende for at få modellen til at kalde det med skadelig hensigt, som de primære risici ved MCP. Spec-revisionen 2026-07-28 svarer på det med skærpet autorisation og eksplicit metadata-routing, så en klient nemmere kan afgøre, hvilken server og hvilket værktøj der reelt blev kaldt. Der er ikke offentliggjort bredt kendte CVE’er specifikt mod selve MCP-protokollen på nuværende tidspunkt, men det ændrer ikke ved, at du selv bærer ansvaret for, hvilke servere du giver adgang til dine filer og konti. En simpel tommelfingerregel: hvis du ikke ville installere en npm-pakke fra samme kilde uden at læse koden, bør du heller ikke pege en MCP-klient mod den.

MCP-økosystemet i 2026: hvor stort er det egentlig?

Det korte svar er, at ingen har et præcist, officielt tal at pege på. Opsummeringer fra fællesskabet efter udgivelsen af spec 2026-07-28 beskriver et “voksende register” og et økosystem med “hundredvis” af servere, men det officielle GitHub-repository fører ikke selv en autoritativ optælling, du kan citere som endeligt facit. Det er værd at have in mente, fordi det er fristende at tage det første søgeresultat for en MCP-server for pålydende, når markedet vokser så hurtigt, som det gør lige nu.

Det, der til gengæld er verificerbart, er strukturen omkring protokollen. Changelog-siden på modelcontextprotocol.io holder styr på præcis, hvad der er ændret fra version til version, og det officielle repository forbliver det centrale sted for spec, skema og de aktive referenceimplementeringer. Når du vurderer en ny MCP-server, du er stødt på i en artikel eller et forum, er den mest pålidelige fremgangsmåde derfor at gå direkte til serverens eget repository, se hvornår den sidst blev opdateret, og sammenholde det med, om den overhovedet følger den nyeste spec-revision. En server, der stadig bruger det gamle håndtryk med initialize/initialized, er ikke nødvendigvis farlig, men den fortæller dig, at vedligeholderen ikke har fulgt med i protokollens seneste ændringer, hvilket er værd at vide, før du bygger noget kritisk ovenpå den.

For danske og nordiske teams, der arbejder med følsomme data, for eksempel inden for finans, sundhed eller offentlig forvaltning, er den samme logik særlig vigtig at anvende på servere, der rører ved persondata eller interne systemer. Brug de officielle, aktivt vedligeholdte servere fra vendoren selv, hvor det er muligt, og reservér tredjeparts- og community-servere til opgaver, hvor konsekvensen af en fejl er lav.

5 almindelige faldgruber, når du sætter MCP op

  • Du glemmer at genindlæse editoren. Ændringer i mcp.json træder først i kraft, når VS Code eller Cursor genindlæses, ikke bare gemmes.
  • Du bruger en arkiveret pakke. GitHub-, Postgres- og Sentry-serverne fra det oprindelige repository ligger nu i servers-archived og vedligeholdes ikke aktivt, brug i stedet vendorens egen hostede server, hvor det findes.
  • Du committer et token til Git. En hemmelighed i en mcp.json-fil under versionsstyring bliver fundet af enhver, der klonet repositoriet, også efter du har fjernet den i en senere commit.
  • Du åbner for bred filadgang. Peger filesystem-serveren på hele hjemmemappen i stedet for ét projekt, kan assistenten læse og redigere langt mere, end du havde til hensigt.
  • Du forveksler servers og mcpServers. VS Code og Copilots projektfil bruger nøglen servers, mens Claude Code og Cursor bruger mcpServers, en detalje der driller de fleste ved det første setup.

Fejlfinding: 8 problemer og deres løsninger

ProblemSandsynlig årsagLøsning
“MCP: List Servers” viser en tom listemcp.json ligger uden for .vscode-mappenFlyt filen til .vscode/mcp.json i projektroden, genindlæs vinduet
Serveren fejler med “connection refused”Processen crasher ved opstartKør kommandoen manuelt i terminalen for at se den rå fejlbesked
claude mcp add fejler med statuskode 401Udløbet eller forkert scopet tokenGenerér et nyt fine-grained personal access token
Cursor viser ingen værktøjer fra serverenFilen bruger nøglen servers i stedet for mcpServersRet roden til mcpServers i .cursor/mcp.json
npx-kommandoen hænger uendeligtFørste download tager tid, eller netværket er nedeKør npx -y pakkenavn –version separat for at isolere problemet
Terminalen melder “uvx: command not found”uv blev installeret, men PATH er ikke opdateretGenstart terminalen, tjek at uv’s binmappe er i PATH
Assistenten ignorerer dit eget værktøjVærktøjsbeskrivelsen er for uklar eller for tekniskSkriv en kortere, mere konkret beskrivelse af, hvad værktøjet gør
Et sikkerhedsscan flager mcp.jsonEt token ligger i klartekst i en fil under versionsstyringFlyt tokenet til en input-prompt eller miljøvariabel, tilføj filen til .gitignore

Kommer du forbi de otte problemer ovenfor uden held, er det ofte fordi to fejl optræder samtidig, for eksempel et forkert nøglenavn kombineret med et udløbet token. Fjern én variabel ad gangen: test kommandoen isoleret i terminalen, bekræft at outputtet ser rigtigt ud, og læg først derefter konfigurationen tilbage i klienten. Det er langsommere end at rette flere ting på én gang, men det sparer dig for at gætte dig frem.

Er du stadig i tvivl, efter du har gennemgået tabellen, er det ofte en hjælp at slette hele konfigurationsfilen og genopbygge den fra bunden med kun én server ad gangen. Det lyder drastisk, men en tom fil med en enkelt, velkendt server, for eksempel memory-serveren fra trin 3-4, er den mest pålidelige måde at bekræfte, at selve klienten fungerer, før du lægger flere lag med eksterne API’er og tokens oveni.

Avancerede tips til produktionsbrug

Når du flytter opsætningen fra eget skrivebord til et helt team, er det værd at centralisere, hvilke MCP-servere der er godkendt, i stedet for at lade hver udvikler tilføje sine egne. Læg en delt .mcp.json i repositoriet med de servere, teamet reelt bruger, og lad den enkelte udvikler kun tilføje personlige nøgler lokalt. Det giver samtidig et naturligt sted at dokumentere, hvorfor hver server er godkendt, og hvem der er ansvarlig for at opdatere den, hvis den bliver arkiveret ligesom de gamle GitHub- og Postgres-serverne.

Udnyt desuden de cachebare svar på værktøjslister, som spec 2026-07-28 introducerede, det reducerer opstartstiden mærkbart, når en editor med mange projekter åbner mange servere samtidig. Overvej header-baseret routing med Mcp-Method og Mcp-Name, hvis du selv bygger servere, der skal betjene flere klienter samtidig, det gør det nemmere at logge, hvilken klient der kaldte hvad. Endelig: økosystemet af MCP-servere vokser hurtigt, med beskrivelser af “hundredvis” af servere i omløb ifølge opsummeringer fra fællesskabet, så tjek altid stjerner, seneste commit og vedligeholder på det officielle repository, før du peger produktionskode mod en tredjeparts-server. En server uden aktivitet det seneste halve år er et advarselstegn, uanset hvor godt den ser ud på papiret.

Et sidste tip, der ofte overses: log ikke bare, at et værktøj blev kaldt, men også hvilke parametre det blev kaldt med. De fleste af klienterne i denne guide viser en detaljeret log i deres output-panel eller devtools, og den bør du vænne dig til at kigge i, især i de første uger efter du har koblet en ny server på. Det er her, du opdager, om assistenten for eksempel sender en bredere forespørgsel til en database, end du havde forventet, længe før det bliver et reelt problem.

Ofte stillede spørgsmål

Hvad er forskellen på MCP og en almindelig API-integration?

En almindelig API-integration er skræddersyet til ét system ad gangen, og skal typisk genskrives for hver ny klient, der skal bruge den. En MCP-server beskriver derimod sine værktøjer på en standardiseret måde, så enhver MCP-kompatibel klient, uanset om det er VS Code, Claude Code eller Cursor, kan læse og bruge dem uden ekstra kode på klientsiden.

Skal jeg bruge den samme MCP-server i VS Code, Claude Code og Cursor?

Ja, det er hele pointen med protokollen. Selve serveren er den samme, kun konfigurationsfilens navn og nøglestruktur ændrer sig mellem klienterne, som vist i sammenligningstabellen tidligere i guiden.

Er MCP-servere sikre at bruge i virksomhedskode?

Officielle referenceservere og vendorers egne hostede servere, som GitHubs, er generelt sikre at bruge, forudsat at du scoper adgang og tokens korrekt. Tredjepartsservere bør gennemgås som enhver anden afhængighed, fordi de kan læse filer eller kalde eksterne tjenester på dine vegne, og bør ikke bare tilføjes, fordi de dukker op i en søgning. Har din virksomhed en proces for godkendelse af tredjepartssoftware, bør en ny MCP-server gennem den samme proces, ikke en genvej, fordi den “bare er et lille værktøj”.

Koster det noget at bruge MCP-servere?

Selve protokollen og de fleste referenceservere er gratis og open source. Det, du betaler for, er den underliggende AI-assistent, altså din GitHub Copilot-, Claude Code- eller Cursor-licens, samt eventuelle API-kald hos tredjepartstjenester, serveren kalder på dine vegne, for eksempel hvis en server slår op i en betalt datakilde. Nogle hostede remote-servere, som store SaaS-udbydere selv driver, kan desuden kræve, at du allerede har et betalt abonnement hos den underliggende tjeneste, før serveren giver adgang til dine data.

Kan jeg bruge MCP uden GitHub Copilot?

Ja. Claude Code og Cursor har begge deres egen indbyggede MCP-understøttelse uafhængigt af Copilot, og du kan sagtens køre MCP-servere med kun én af de fire klienter fra denne guide installeret.

Hvordan opdaterer jeg til den nyeste MCP-spec?

Du opdaterer typisk ikke spec-versionen direkte selv, den følger med opdateringer af klienten og SDK’et. Hold VS Code, Claude Code CLI og Cursor opdateret til seneste version, så følger protokolunderstøttelsen automatisk med, uden at du selv skal redigere konfigurationsfiler.

Virker MCP med JetBrains-IDE’er?

JetBrains AI Assistant understøtter tilslutning af eksterne modeller og værktøjer gennem sin egen konfiguration. Har du allerede sat JetBrains AI Assistant op, er tilgangen beslægtet, men konfigurationsformatet adskiller sig fra VS Code, Claude Code og Cursor, så genbrug ikke json-filerne direkte mellem dem.

Hvad sker der, hvis en MCP-server, jeg bruger, bliver arkiveret?

Serveren stopper ikke med at virke med det samme, men den holder op med at få sikkerhedsrettelser og nye funktioner. Det skete allerede med GitHub-, Postgres- og Sentry-serverne fra det oprindelige repository, som nu ligger arkiveret, mens vendorerne selv har overtaget vedligeholdelsen af deres respektive servere, typisk som en hostet remote-server i stedet for en lokal npm-pakke.

Relateret dækning

Se også al vores øvrige dækning af AI-udviklerværktøjer for flere opsætningsguider til danske og nordiske udviklerteams.