← Tilbage til guides

MCP Server Guide

Model Context Protocol (MCP) er Anthropics åbne standard for at give sprogmodeller sikker adgang til data og handlinger. Her er hvordan MCP-servere fungerer, hvorfor de er blevet et de facto-standardformat, og hvordan du bygger din første.

Hvad er MCP

Model Context Protocol blev lanceret af Anthropic i november 2024 som et åbent standardformat for kommunikation mellem sprogmodeller og eksterne systemer. Problemet det løser er velkendt: hver LLM-applikation havde tidligere sin egen måde at integrere tools, data-kilder og handlinger på. Det betød at en integration til fx Google Drive skulle bygges én gang til ChatGPT, én gang til Claude, én gang til hvert enkelt agent-framework.

MCP standardiserer denne kommunikation. En MCP-server annoncerer hvilke resources (læse-data), tools (handlinger) og prompts (genbrugelige templates) den udbyder. Enhver MCP-klient — hvad enten det er Claude Desktop, Claude Code, Cursor, Windsurf eller din egen applikation — kan tale med serveren via samme protokol.

I 2025 tilsluttede OpenAI, Google og Microsoft sig standarden. Det betyder at en MCP-server du bygger i dag, kan bruges på tværs af de tre store økosystemer uden ændringer i din server-kode.

Sådan fungerer protokollen

MCP bygger på JSON-RPC 2.0. Serveren kører som en selvstændig proces og kommunikerer med klienten via en af tre transport-metoder: stdio (lokal proces), Server-Sent Events over HTTP (SSE) eller streamable HTTP. Klienten starter serveren, forhandler capabilities og udveksler beskeder for hver tool-invocation.

De centrale koncepter er:

KonceptFormålEksempel
ResourcesData modellen kan læseFil-indhold, database-rows, API-svar
ToolsHandlinger modellen kan udføreSend email, opret PR, kør SQL-query
PromptsGenbrugelige prompt-templatesCode review, sammenfatning, oversættelse
SamplingServer beder klient om LLM-kaldServer-side generering uden egen API-nøgle

Byg en MCP-server

Den officielle SDK findes til Python, TypeScript, Java, Kotlin, C#, Rust og Swift. Nedenfor er et minimalt eksempel i Python der eksponerer et enkelt tool: en vejrudsigt-lookup.

from mcp.server.fastmcp import FastMCP
import httpx

mcp = FastMCP("weather-server")

@mcp.tool()
async def get_weather(city: str) -> str:
    """Hent aktuel vejrudsigt for en given by."""
    async with httpx.AsyncClient() as client:
        r = await client.get(
            f"https://api.open-meteo.com/v1/forecast",
            params={"latitude": 55.68, "longitude": 12.57, "current_weather": True}
        )
        data = r.json()
        temp = data["current_weather"]["temperature"]
        return f"{city}: {temp}°C"

if __name__ == "__main__":
    mcp.run(transport="stdio")

For at bruge serveren i Claude Desktop tilføjer du den til konfigurationsfilen:

{
  "mcpServers": {
    "weather": {
      "command": "python",
      "args": ["/path/to/weather_server.py"]
    }
  }
}

Populære MCP-servere

Der findes hundredvis af færdige MCP-servere. Anthropic vedligeholder en katalog på modelcontextprotocol.io, og community-projekter samler flere hundrede yderligere på GitHub. Nogle af de mest brugte:

Filesystem

Læs og skriv filer i en whitelisted mappe. Praktisk til at lade Claude arbejde med lokale projekter uden at give fuld shell-adgang.

GitHub / GitLab

Læs issues, opret pull requests, commit ændringer. Bruges intensivt i AI-assisted development.

Postgres / SQLite

Kør SELECT-queries mod en database. Modellen kan udforske schemaet og skrive queries baseret på strukturen.

Slack / Notion / Linear

Læs beskeder, opret tasks, opdater sider. Anvendes til at bygge assistenter der interagerer med kollaborative værktøjer.

Puppeteer / Playwright

Browser-automation. Modellen kan hente websider, udfylde formularer og tage screenshots.

Sikkerhed og faldgruber

MCP-servere har fuld adgang til hvad du giver dem. En filsystem-server kan læse og slette filer, en database-server kan køre destruktive queries hvis den ikke er begrænset til read-only. Kør aldrig ukendte MCP-servere fra tilfældige GitHub-repos uden at gennemgå koden først.

Prompt injection er en reel risiko. Hvis en MCP-server henter data fra utroværdige kilder (fx web-sider), kan indholdet indeholde instruktioner der forsøger at manipulere modellen til at kalde andre tools på uønsket måde. Beskyt følsomme tools bag eksplicit brugerbekræftelse i klienten.

Rate limiting og logging bør bygges ind i serveren, især hvis den giver adgang til betalte API'er. En løbsk agent-loop kan generere hundredvis af tool-calls på få minutter og brænde budget hurtigt.

MCP vs. traditionel function calling

Function calling har eksisteret i OpenAIs API siden 2023. Forskellen på MCP og function calling er at MCP standardiserer selve transport-laget og livscyklussen: hvordan tools opdages, hvordan de kaldes på tværs af klienter, og hvordan servere kan opdatere deres capabilities dynamisk.

Med function calling skal du selv definere tools i din prompt-konstruktion for hver applikation. Med MCP definerer du dem én gang i en server, og enhver klient der taler MCP kan bruge dem. Det er samme værdi som REST API'er tilbød da hvert firma havde sin egen proprietære integration.

Relateret læsning