ai-machine-learning

Model Context Protocol: Bygg din første MCP-server i dag

Skrevet av Mert Batur
Mar 17, 2026
18 lesing
Model Context Protocol: Bygg din første MCP-server i dag

Model Context Protocol (MCP) er en åpen standard som gir AI-modeller en universell måte å koble seg til eksterne verktøy, datakilder og tjenester. I stedet for å skrive tilpasset integrasjonskode for hver modell-verktøy-kombinasjon skriver du én MCP-server og alle kompatible modeller kan bruke den. Anthropic skapte MCP i slutten av 2024, Linux Foundation styrer det nå, og OpenAI, Google og resten av det agentiske AI-økosystemet har tatt det i bruk. Her er alt du trenger å forstå, bygge og distribuere med MCP.

MCP på ett øyeblikk

Hvis du vil ha den raske versjonen før du dykker ned i 6 000 ord med detaljer, her er den.

AttributtDetalj
Fullt navnModel Context Protocol (MCP)
Skapt avAnthropic (nov 2024), nå styrt av Linux Foundation / AAIF (des 2025)
Hva det gjørUniversell standard for å koble AI-modeller til verktøy, data og tjenester
Problem det løserEliminerer M x N tilpassede integrasjoner -- som USB-C for AI
KjerneprimitiverVerktøy, Ressurser, Prompter og Sampling
Transportstdio (lokal utvikling), Streamable HTTP (produksjon)
AutentiseringOAuth 2.1 (kreves for HTTP-transport)
SDK-erPython (FastMCP), TypeScript, Java, Kotlin, C#
Økosystemstørrelse10 000+ aktive servere (ifølge Linux Foundation, des 2025)
Store brukereClaude, ChatGPT, Gemini, Cursor, VS Code Copilot, Windsurf
SpesifikasjonsstatusÅpen standard, aktivt utviklende (2026-veikart pågår)
Best forAI-agenter som trenger å samhandle med virkelige verktøy og data

La oss nå pakke ut hvert av disse punktene, med start på hva MCP faktisk er og problemet som gjorde det nødvendig.

Hva er Model Context Protocol?

Model Context Protocol er et åpent, JSON-RPC-basert protokoll som standardiserer hvordan AI-modeller oppdager og samhandler med eksterne verktøy og data. Tenk på det som HTTP for AI-integrasjoner -- et felles språk som enhver modell og ethvert verktøy kan snakke.

Du har sannsynligvis hørt USB-C-analogien, og den er nyttig til et visst punkt: før USB-C trengte hver enhet sin egen kabel. MCP gjør det samme for AI, men analogien undervurderer det. USB-C bærer bare data og strøm. MCP bærer verktøydefinisjoner, dataaksessmønstre, gjenbrukbare promptmaler og lar til og med servere be om kompletteringer fra modellen. Det er et rikere protokoll enn en kabelmetafor antyder.

M x N-problemet som MCP løser

Uten MCP krever det å koble M modeller til N verktøy M x N tilpassede integrasjoner. La oss si at du støtter 5 LLM-er (Claude, GPT-4, Gemini, Llama, Mistral) og trenger dem til å få tilgang til 10 verktøy (GitHub, Postgres, Slack, Jira og så videre). Det er 50 skreddersydde integrasjonslag, hvert med sin egen autentisering, feilhåndtering og dataformatering.

Med MCP implementerer hver modell MCP-klientprotokollen én gang, og hvert verktøy implementerer en MCP-server én gang. Nå er det 5 + 10 = 15 implementasjoner i stedet for 50. Legge til en ny modell? Den fungerer umiddelbart med alle 10 verktøyene. Legge til et nytt verktøy? Alle 5 modellene kan bruke det.

En kort historie om MCP

Anthropic open-sourcet MCP i november 2024 sammen med SDK-er for Python og TypeScript pluss koblinger for Claude Desktop. Adopsjonen gikk raskt. OpenAI la til MCP-støtte for ChatGPT i mars 2025. Google fulgte for Gemini i april 2025. I desember 2025 donerte Anthropic MCP til Linux Foundations nye Agentic AI Foundation (AAIF), medgrunnet med Block og OpenAI, noe som gjør MCP til en leverandørnøytral standard med bransjeover­gripende styring.

Hva MCP IKKE er:

  • Ikke en modell eller et AI-rammeverk (det er et protokoll, som HTTP)
  • Ikke en erstatning for LangChain eller LlamaIndex (de er orkestreringslag; MCP sitter under dem)
  • Ikke begrenset til Anthropic eller Claude (det er modellagnostisk by design)
  • Ikke det samme som function calling (mer om det i sammenligningsavsnittet)

Hvordan fungerer MCP? Dypdykk i arkitekturen

MCP har tre roller, og å blande dem er den vanligste nybegynnerfeilden. La oss klargjøre forskjellen.

<!-- IMAGE: MCP-arkitekturdiagram som viser host-, klient- og serverroller med virkelige eksempler som Claude Desktop, GitHub MCP Server, Postgres MCP Server -->

Host, Klient og Server -- Hva er forskjellen?

KomponentRolleEksemplerHva den gjør
HostApplikasjonen brukeren samhandler medClaude Desktop, Cursor, VS CodeGir brukergrensesnittet, administrerer klientinstanser
KlientProtokollbehandler inne i hostenInnebygd i hostappenOpprettholder en 1:1-tilkobling med én MCP-server
ServerEksponerer verktøy og data via MCPGitHub-server, Postgres-server, Slack-serverPakker inn eksterne API-er/data i MCP-kompatible endepunkter

Her er et konkret eksempel: du ber Claude Desktop om å sjekke dine åpne GitHub-pull requests. Claude Desktop er hosten. Dens innebygde MCP-klient åpner en tilkobling til GitHub MCP-serveren. Serveren kaller GitHub-API-et, henter dine PR-er og returnerer resultatene til klienten, som sender dem til modellen.

En enkelt host kan kjøre flere klienter, hver koblet til en annen server. Slik kan Claude Desktop simultaneously få tilgang til GitHub, Postgres-databasen din og Slack -- tre separate MCP-servere, tre separate klienttilkoblinger, én host.

Hvordan meldinger flyter (JSON-RPC 2.0)

All MCP-kommunikasjon bruker JSON-RPC 2.0 -- et lett forespørsel/svar-protokoll. Slik ser en tools/list-utveksling ut over nettverket:

json
// Klientforespørsel: "Hvilke verktøy har du?"
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

// Serversvar: ett verktøy tilgjengelig
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "get_weather",
        "description": "Hent gjeldende vær for en by",
        "inputSchema": {
          "type": "object",
          "properties": {
            "city": { "type": "string" }
          },
          "required": ["city"]
        }
      }
    ]
  }
}

Modellen leser disse verktøydefinisjonene, bestemmer når de skal kalles basert på brukerens forespørsel, og klienten sender en tools/call-forespørsel tilbake til serveren med de riktige argumentene.

Tilkoblingens livssyklus

Hver MCP-sesjon følger den samme livssyklusen:

  1. Initialisere -- klienten sender kapabiliteter, serveren svarer med sine egne
  2. Kapabilitetsforhandling -- begge sider er enige om støttede funksjoner (verktøy, ressurser, prompter, sampling)
  3. Klar -- tilkoblingen er aktiv; forespørsler flyter i begge retninger
  4. Forespørsler/svar -- tools/call, resources/read, osv.
  5. Avslutning -- ren frakobling

Dette håndtrykket sikrer fremoverkompatibilitet. Hvis en server legger til en ny primitiv, ignorerer eldre klienter det elegant i stedet for å krasje.

MCP-primitiver: Verktøy, Ressurser, Prompter og Sampling

MCP definerer fire primitiver, og å forstå hvem som kontrollerer hver enkelt er nøkkelen til å designe gode MCP-servere.

PrimitivHvem kontrollerer denRetningEksempelBrukstilfelle
VerktøyModellen bestemmer når den skal kallesKlient -> Servercreate_github_issueHandlinger AI-en utfører autonomt
RessurserApplikasjon/bruker velgerKlient -> Serverfile://project/README.mdData festet til kontekst
PrompterBrukeren utløserKlient -> Servercode_review-malGjenbrukbare interaksjonsmønstre
SamplingServer ber om kompletteringServer -> KlientServer ber modellen oppsummereAgentiske løkker der serveren bruker LLM-en

Verktøy (modellkontrollerte)

Verktøy er funksjoner modellen kan kalle. Serveren erklærer dem med et navn, en beskrivelse og en JSON Schema-inndatadefinisjon. Modellen leser disse definisjonene og, når en brukers forespørsel krever det, bestemmer den seg for å kalle verktøyet.

json
// Klienten sender en tools/call-forespørsel
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": { "city": "Oslo" }
  }
}

Hvis du har brukt OpenAIs function calling vil verktøy føles kjente -- men de er standardisert for alle MCP-kompatible modeller.

Ressurser (applikasjonskontrollerte)

Ressurser er skrivebeskyttede dataendepunkter. I motsetning til verktøy bestemmer ikke modellen å hente en ressurs på egenhånd -- hostapplikasjonen eller brukeren fester eksplisitt ressurser til samtalesammenhengen. Tenk på dem som GET-endepunkter: postgres://mydb/users/schema, file://docs/api-reference.md. Se også vår guide til context engineering.

Ressurser støtter abonnementer via resources/subscribe, slik at klienten kan varsles når data endres.

Prompter (brukerkontrollerte)

Prompter er gjenbrukbare maler som en MCP-server eksponerer. En code_review-prompt kan akseptere en filsti og generere en strukturert gjennomgangsforespørsel. Brukeren (eller host-brukergrensesnittet) utløser prompter eksplisitt -- de kalles ikke automatisk av modellen.

Sampling (serverinitiering) -- Avansert

Her er primitiven de fleste veiledninger hopper over. Sampling lar serveren be klienten om å generere en komplettering ved hjelp av LLM-en. Dette inverterer den vanlige flyten: i stedet for at modellen kaller et verktøy, kaller verktøyet modellen.

Hvorfor? Agentiske løkker. Forestill deg en MCP-server som behandler støttebilletter. Den leser billetten (en ressurs), bruker sampling/createMessage for å be modellen om et sammendrag, og bruker deretter det sammendraget til å rute billetten via et verktøy. Serveren orkestrerer en flerstegs arbeidsflyt ved å utnytte modellens intelligens.

Sampling kontrolleres av hostapplikasjonen -- brukeren må godkjenne det, og hosten kontrollerer hva serveren kan be om. Dette forhindrer ukontrollerte løkker og opprettholder menneskelig tilsyn.

Bygg din første MCP-server: Python og TypeScript side om side

Nok teori. La oss bygge en fungerende MCP-server som eksponerer et get_weather-verktøy. Jeg viser både Python og TypeScript så du kan sammenligne utvikleropplevelsen og velge stakken som passer til prosjektet ditt.

Python med FastMCP

FastMCP er den offisielle høynivå Python SDK-en. Den håndterer all protokollinfrastrukturen slik at du kan fokusere på verktøylogikken din.

bash
# Installer FastMCP
pip install fastmcp
python
# weather_server.py
from fastmcp import FastMCP

mcp = FastMCP("Værtjeneste")

@mcp.tool()
def get_weather(city: str) -> str:
    """Hent gjeldende vær for en by."""
    # I produksjon, kall et ekte vær-API her
    weather_data = {
        "Oslo": "Overskyet, 5°C",
        "Tokyo": "Solrikt, 22°C",
        "New York": "Regnfullt, 8°C",
    }
    return weather_data.get(city, f"Ingen data for {city}")

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

Det er alt -- 15 linjer. FastMCP utleder verktøyets inndataskjema fra Python-typeannoteringer og docstring. Ingen JSON Schema-boilerplate.

TypeScript med offisiell SDK

TypeScript SDK-en (@modelcontextprotocol/sdk) er litt mer eksplisitt men gir deg full kontroll over skjemadefinisjoner.

bash
# Installer SDK og Zod for skjemavalidering
npm install @modelcontextprotocol/sdk zod
typescript
// weather-server.ts
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: "Værtjeneste",
  version: "1.0.0",
});

server.tool(
  "get_weather",
  "Hent gjeldende vær for en by",
  { city: z.string() },
  async ({ city }) => {
    const weatherData: Record<string, string> = {
      Oslo: "Overskyet, 5°C",
      Tokyo: "Solrikt, 22°C",
      "New York": "Regnfullt, 8°C",
    };
    return {
      content: [
        { type: "text", text: weatherData[city] ?? `Ingen data for ${city}` },
      ],
    };
  }
);

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

TypeScript-versjonen bruker Zod-skjemaer i stedet for typeannoteringer og returnerer strukturerte innholdsblokker. Mer utfyllende, men typesikkerheten er utmerket.

Koble til Claude Desktop

For å koble en av serverne til Claude Desktop, legg den til i claude_desktop_config.json:

json
{
  "mcpServers": {
    "weather-python": {
      "command": "python",
      "args": ["weather_server.py"],
      "cwd": "/sti/til/ditt/prosjekt"
    },
    "weather-typescript": {
      "command": "npx",
      "args": ["tsx", "weather-server.ts"],
      "cwd": "/sti/til/ditt/prosjekt"
    }
  }
}

Start Claude Desktop på nytt og begge værtjenestene vises i verktøylisten. Spør "Hvordan er været i Oslo?" og modellen kaller get_weather-verktøyet ditt automatisk.

Test med MCP Inspector

Før du kobler serveren til en host, test den isolert med MCP Inspector:

bash
npx @modelcontextprotocol/inspector python weather_server.py

Inspector åpner et nettleser-UI der du kan se oppdagede verktøy, kalle dem manuelt og inspisere JSON-RPC-meldingene som går frem og tilbake. Det er det beste feilsøkingsverktøyet i MCP-økosystemet -- bruk det tidlig og ofte.

MCP-transporter: stdio for utvikling, Streamable HTTP for produksjon

MCP-meldinger trenger en måte å reise mellom klient og server. Det er transportlaget, og å velge riktig er viktig.

TransportBrukstilfelleFordelerUlemperStatus
stdioLokal utvikling, personlige verktøyNullkonfigurasjon, enkel, raskBare samme maskinAktiv
Streamable HTTPProduksjon, fjernservere, flerbrukerFungerer over nettverk, støtter streaming via SSE, tilstandsløs-vennligKrever HTTP-server, trenger autentiseringAktiv (2025-spesifikasjon)
HTTP+SSE (gammel)Legacy fjærntransportVar det originale fjernalternativetErstattet av Streamable HTTPForeldet

stdio fungerer ved å starte MCP-serveren som en underprosess og kommunisere via stdin/stdout. Det er det du brukte i opplæringen ovenfor -- ingen porter, ingen TLS, ingen autentisering nødvendig. Perfekt for utvikling og enkeltbruker lokale verktøy.

Streamable HTTP er produksjonstransporten, lagt til i 2025-spesifikasjonsoppdateringen. Klienter sender standard HTTP POST-forespørsler til serveren. Serveren kan svare synkront eller åpne en SSE-strøm for lengre operasjoner. Det er tilstandsløs-vennlig, fungerer bak lastbalanserere og støtter standard HTTP-autentisering.

Hvis du ser eldre veiledninger som nevner "HTTP+SSE" som to separate transporter (én for sending, én for mottak), det er den foreldede tilnærmingen. Streamable HTTP konsoliderer begge til én enkelt, renere mekanisme.

Avgjørelsen er enkel: bruk stdio ved lokal utvikling, bytt til streamable-http når du distribuerer for andre.

typescript
// Bytte fra stdio til Streamable HTTP i TypeScript
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";

const transport = new StreamableHTTPServerTransport({ port: 3001 });
await server.connect(transport);

MCP vs Function Calling vs REST API-er -- Når bruker man hva

Dette er spørsmålet som dukker opp i enhver MCP-diskusjon, så la oss løse det med en direkte sammenligning. Du kan også være interessert i Claude Code vs Cursor vs Copilot-sammenligning.

FunksjonMCPFunction CallingREST API-er
StandardiseringÅpent protokoll, modellagnostiskPer leverandør (OpenAI, Anthropic har hver sin)Universell
VerktøyoppdagelseInnebygd (tools/list)Ingen -- du sender skjemaer per forespørselIngen -- krever docs eller OpenAPI-spec
DatatilgangRessurser-primitivStøttes ikkeStandard endepunkter
PromptmalerPrompter-primitivStøttes ikkeIkke aktuelt
AutentiseringOAuth 2.1 (spesifikasjonsnivå)Leverandør-API-nøkkelVarierer (API-nøkler, OAuth, osv.)
StreamingSSE via Streamable HTTPLeverandøravhengigVarierer
Multi-modellFungerer med alle MCP-kompatible modellerLåst til én leverandørs APIModellagnostisk (med limpekode)
Server-økosystem10 000+ forhåndsbygde servereN/AMillioner av API-er
OppsettkompleksitetKjøre en MCP-serverSende JSON i API-kallHTTP-klient
Best forMulti-modell, multi-verktøy agentmiljøerEnkle enmodell-apper med noen få verktøyTjeneste-til-tjeneste-kommunikasjon

Når function calling er nok

Hvis du har færre enn 5 verktøy og bruker én modell, er function calling enklere. Du definerer verktøyskjemaene dine inline med hvert API-kall, modellen returnerer funksjonsnavnet og argumentene, og du utfører dem i applikasjonskoden din. Ingen server å kjøre, ingen protokoll å lære. For en chatbot som sjekker ordrestatus og slår opp i FAQ-er er function calling helt fint.

Når MCP er verdt det

MCP er verdt kompleksiteten når:

  • Du støtter flere LLM-er og ikke ønsker å skrive om verktøydefinisjoner for hver leverandør
  • Du trenger verktøyoppdagelse -- modellen kan spørre hva som er tilgjengelig i stedet for at du hardkoder skjemaer
  • Du vil ha ressurser og prompter, ikke bare verktøykall
  • Du bygger AI-agenter som koordinerer autonomt og trenger et standardisert integrasjonslag
  • Teamet ditt vokser og forskjellige ingeniører bygger forskjellige verktøy -- MCP lar dem jobbe uavhengig

Konklusjon: MCP vinner når du trenger standardisert, multi-modell verktøytilgang. Function calling vinner for enkle, enmodell-brukstilfeller. REST API-er forblir det riktige valget for tradisjonell tjeneste-til-tjeneste-kommunikasjon som ikke involverer en LLM.

MCP-økosystemet i 2026: Hvem støtter det og hva er tilgjengelig

MCP gikk fra et Anthropic-sideprosjekt til en bransjestandard på under 18 måneder. Her er tilstanden.

Hvilke LLM-er støtter MCP?

LLMMCP-støtteSidenMerknader
ClaudeInnebygd, full støtteNov 2024Skapte MCP; dypest integrasjon
ChatGPTOffisiell støtteMar 2025Via OpenAIs MCP-integrasjon
GeminiOffisiell støtteApr 2025Google Cloud MCP-servere for Google-tjenester
Llama / Åpen kildekodeVia adaptere2025LangChain, LlamaIndex og tilpassede adaptere
Copilot (VS Code)Innebygd i agentmodus2025Microsoft leverer MCP-støtte i VS Code

Populære MCP-servere verdt å kjenne til

KategoriServerHva den gjør
KodeGitHubPR-er, issues, repositorier, kodesøk
KodeGitLabMerge requests, pipelines, prosjektledelse
DatabasePostgreSQLSkjemainspeksjon, kjøring av spørringer
DatabaseMySQLSpørring og skjematilgang
SaaSSlackKanalmeldinger, søk, varsler
SaaSGoogle DriveFiltilgang, søk, dokumentlesing
SaaSNotionSidelesing, databasespørringer
SøkBrave SearchNettsøkresultater
DevOpsDockerContaineradministrasjon
InfrastrukturAWSSkyressursadministrasjon

Linux Foundations AAIF-kunngjøring siterte 10 000+ aktive servere og 97 millioner månedlige SDK-nedlastinger ved MCP-donasjonen i desember 2025. Økosystemet er ikke lenger eksperimentelt -- det er produksjonsklart.

MCP Apps er en ny primitiv introdusert i januar 2026. Det lar servere tilby interaktive UI-komponenter som gjengis inne i hostapplikasjonen. Fortsatt tidlig, men det signaliserer MCP-s utvikling fra et dataprotokoll til et fullstendig agentapplikasjonsrammeverk. Verdt å følge med på.

Styring: Fra Anthropic til Linux Foundation

MCP styres av Agentic AI Foundation (AAIF) under Linux Foundation, medgrunnet av Anthropic, Block og OpenAI. Dette betyr noe for bedriftsadopsjon: MCP er ikke knyttet til én enkelt leverandørs veikart. 2026-veikartet fokuserer på transportutvikling, agent-til-agent-kommunikasjon (en ny "Tasks"-primitiv), styringmodenhet og bedriftsberedskap.

For team som bygger produksjons-AI-systemer integrerer rammeverk som et autonomt AI-agentrammeverk som OpenClaw allerede med MCP-servere for å gi agenter virkelige evner.

MCP-sikkerhet: OAuth 2.1, trusler og en praktisk sjekkliste

Sikkerhet er der MCP-økosystemet har mest grunn å dekke. Og tallene maler et tydelig bilde.

88%-problemet: Hvorfor de fleste MCP-servere er usikre

Astrix Security analyserte 5 200+ åpen kildekode MCP-serverimplementasjoner og fant at 88% krever legitimasjon av en eller annen type -- men 53% er avhengige av usikre langlivede statiske hemmeligheter som API-nøkler og personlige tilgangstokener hardkodet i konfigurasjonsfiler. Bare 8,5% implementerer OAuth.

Det betyr at det store flertallet av MCP-servere i naturen bruker autentiseringsekvivalenten av å tape husnøkkelen på ytterdøren.

OAuth 2.1 for MCP-servere

MCP-spesifikasjonen krever OAuth 2.1 for alle HTTP-baserte servere fra og med juni 2025-oppdateringen. Flyten fungerer slik: MCP-klienten starter et OAuth 2.1-autorisasjonsflyt med serveren, henter et omfangsbegrenset tilgangstoken og inkluderer det med hver påfølgende forespørsel. PKCE (Proof Key for Code Exchange) er påkrevd for alle klienter -- ingen unntak.

Hvis du bygger en MCP-server som kjører over Streamable HTTP, er OAuth 2.1 ikke valgfritt. Det er spesifikasjonspåkrevd.

Trusselmodell: Hva kan gå galt

Fire trusler fortjener oppmerksomhet i enhver MCP-utrulling:

  • Promptinjeksjon via verktøy -- En ondsinnet eller kompromittert datakilde returnerer innhold designet for å manipulere modellen. Hvis et verktøy henter en nettside og den siden inneholder skjulte instruksjoner, kan modellen utføre dem.
  • Forvirret stedfortreder-angrep -- Modellen kaller et verktøy med bredere tillatelser enn brukeren hadde tenkt. Hvis MCP-serveren har administratortilgang til en database, kan modellen teoretisk slette en tabell.
  • Token-konsentrasjonsrisiko -- En MCP-server som holder API-nøkler for GitHub, Slack og produksjonsdatabasen din er et enkelt høyverdimål. Kompromitter én server, kompromitter alt den kobler til.
  • Usikker transport -- Å kjøre en HTTP MCP-server uten TLS eksponerer hver forespørsel, inkludert OAuth-tokens og sensitive data, i klartekst.

Sikkerhetssjekkliste for produksjons-MCP

  1. Implementer OAuth 2.1 for enhver server eksponert via HTTP. Ingen statiske API-nøkler i konfigurasjonsfiler.
  2. Anvend minste-privilegier-omfang. Hvis verktøyet ditt bare leser data, skal serverens legitimasjon være skrivebeskyttet. Ikke gi et rapporteringsverktøy skrivetilgang.
  3. Isoler legitimasjon. Hver MCP-server bør ha sine egne omfangsbegrensede tokens. Ikke del ett enkelt "gud-token" på tvers av servere.
  4. Håndhev TLS overalt. Streamable HTTP uten HTTPS er automatisk utelukket for produksjon.
  5. Valider og rens verktøyutdata. Behandle data som returneres av verktøy på samme måte som du ville behandle brukerinndata -- ikke stol blindt på det.
  6. Ratebegrens verktøykall. En ukontrollert agentløkke som kaller et verktøy tusenvis av ganger kan tømme API-kvoter eller forårsake utilsiktede bivirkninger.
  7. Revider og logg hvert verktøykall. Inkluder forespørsels-ID-er, tidsstempler, den kallende modellen og verktøyargumentene. Du trenger dette for feilsøking og for sikkerhetshendelsesrespons.

Feilsøking av MCP: Inspector, logging og vanlige feil

Du vil støte på feil. Alle utviklere gjør det. Her er hvordan du fikser dem raskt.

MCP Inspector er det offisielle feilsøkingsverktøyet og din første forsvarslinje. Det kobler til hvilken som helst MCP-server, oppdager verktøyene/ressursene/promptene og lar deg kalle dem manuelt mens det viser råe JSON-RPC-trafikk.

bash
# Start Inspector mot Python-serveren din
npx @modelcontextprotocol/inspector python weather_server.py

# Eller mot en TypeScript-server
npx @modelcontextprotocol/inspector npx tsx weather-server.ts

Inspector åpner et nettleserbasert UI med faner for Verktøy, Ressurser, Prompter og et varslingsvindu. Du kan kalle ethvert verktøy med tilpassede argumenter og se nøyaktig hvilket JSON som går over nettverket. Bruk det før du kobler til en hostapplikasjon -- det er mye enklere å feilsøke serveren i isolasjon.

Vanlige feil og løsninger

  • "Serveren ble ikke funnet" i Claude Desktop -- Nesten alltid et stiespørsmål i claude_desktop_config.json. Dobbeltsjekk at command peker til en ekte binær og at cwd peker til riktig katalog. På macOS, bruk absolutte stier.
  • Verktøyskjema-valideringsfeil -- Hvis modellen sender argumenter som ikke samsvarer med verktøyets inputSchema, avviser serveren kallet. Sjekk at skjematypene dine samsvarer med hva modellen forventer. Zod (TypeScript) og typeannoteringer (Python) fanger de fleste av disse ved definisjonsstid.
  • Transporttilkoblingsfrafall -- For stdio betyr dette vanligvis at serverprosessen krasjet. Sjekk stderr-utdata. For Streamable HTTP, verifiser tidsavbruddsinnstillinger -- langkjørende verktøy kan overskride standard HTTP-tidsavbrudd.
  • "Permission denied" eller 401-feil -- OAuth-omfang for smalt. Serveren avviser tokenet fordi det ikke har de nødvendige tillatelsene. Utvid omfanget, men bare så mye som verktøyet faktisk trenger.

Beste praksis for logging

Strukturer loggene dine med forespørsels-ID-er slik at du kan spore en enkelt brukerforespørsel gjennom MCP-klienten, serveren og eventuelle nedstrøms-API-er. Logg hvert tools/call-kall med verktøynavnet, argumentene, svartiden og resultatstatusen. I produksjon, send disse loggene til en observabilitetsplattform -- når noe går galt klokken 3 om natten, vil du være glad for at du gjorde det. Les mer om guide til LLM function calling.

Hvordan Techsy bygger med MCP

Vi har integrert MCP i klientprosjekter siden tidlig 2025, og mønsteret vi ser oftest er dette: et team har en AI-funksjon som fungerer med én modell og en håndfull verktøy, men de planlegger å skalere -- flere modeller, flere datakilder, flere agentevner. Det er vendepunktet der MCP begynner å lønne seg.

Vår tilnærming følger tre steg:

  1. Vurder egnethet. Ikke hvert prosjekt trenger MCP. Hvis du kaller to verktøy fra én enkelt modell, er function calling enklere og vi vil fortelle deg det. MCP gir mening når du kobler 3 eller flere datakilder, støtter flere modeller, eller bygger agentarbeidsflyter der verktøy trenger å være oppdagbare.
  2. Bygg og test servere i isolasjon. Vi utvikler tilpassede MCP-servere for hver datakilde -- interne databaser, SaaS-API-er, proprietære tjenester -- og validerer dem med MCP Inspector før vi kobler til noen host.
  3. Distribuer med Streamable HTTP og OAuth 2.1. For produksjon kjører vi MCP-servere som containeriserte tjenester bak TLS, med omfangsbegrensede OAuth-tokens og strukturert logging fra dag én. Ingen statiske hemmeligheter.

De vanligste integrasjonene vi bygger: koble AI-assistenter til interne Postgres-databaser, bygge tilpassede MCP-servere for kunders SaaS-plattformer og migrere team fra spredte function calling-oppsett til en standardisert MCP-arkitektur.

Bygger du AI-drevne verktøy som trenger å koble til infrastrukturen din? Vi hjelper team med å designe og implementere MCP-integrasjoner. Få en gratis konsultasjon

Vanlige spørsmål om MCP

Hva er Model Context Protocol (MCP)?

MCP er en åpen standard, opprinnelig skapt av Anthropic og nå styrt av Linux Foundation, som definerer hvordan AI-modeller kobler til eksterne verktøy, datakilder og tjenester. Det standardiserer integrasjonslaget slik at én MCP-server fungerer med alle kompatible modeller -- som et universelt kontaktledd for AI.

Hvordan fungerer MCP?

MCP bruker en tredelt arkitektur: en host-applikasjon (som Claude Desktop eller Cursor), en MCP-klient inne i hosten som administrerer tilkoblinger, og MCP-servere som eksponerer verktøy og data. All kommunikasjon bruker JSON-RPC 2.0-meldinger over enten stdio (lokalt) eller Streamable HTTP (fjern).

Hva brukes MCP til?

Vanlige brukstilfeller inkluderer å koble AI-assistenter til databaser (Postgres, MySQL), integrere med kodeplattformer (GitHub, GitLab), få tilgang til SaaS-verktøy (Slack, Notion, Google Drive) og bygge autonome AI-agenter som trenger å samhandle med virkelige tjenester.

Er MCP det samme som function calling?

Nei. Function calling er modellspesifikt (OpenAIs format er forskjellig fra Anthropics) og per forespørsel -- du sender verktøyskjemaer med hvert API-kall. MCP er et standardisert protokoll som fungerer på tvers av modeller, støtter verktøyoppdagelse og inkluderer ressurser og prompter utover bare funksjonsutførelse.

Hva er MCP-servere?

MCP-servere er programmer som eksponerer verktøy, ressurser og prompter til AI-modeller via MCP-protokollen. De pakker inn eksterne API-er og datakilder i et standardisert grensesnitt. Eksempler inkluderer GitHub MCP-serveren (for PR- og issue-administrasjon) og Postgres MCP-serveren (for databasespørringer).

Hvordan bygger jeg en MCP-server?

Bruk Python med FastMCP (pip install fastmcp) eller TypeScript med offisiell SDK (npm install @modelcontextprotocol/sdk). Definer verktøyene dine som dekorerte funksjoner (Python) eller registrerte behandlere (TypeScript), kjør deretter serveren. Se opplæringsavsnittet ovenfor for komplett fungerende kode.

Er MCP sikkert?

Protokollet i seg selv støtter OAuth 2.1 for autentisering og omfangsbegrensede tillatelser. Men Astrix Security-forskning fant at 88% av eksisterende MCP-serverimplementasjoner er avhengige av statiske hemmeligheter snarere enn OAuth. Protokollet er sikkert by design, men de fleste virkelige utrullinger har ikke hentet seg inn ennå.

Hvilke LLM-er støtter MCP?

Claude har innebygd MCP-støtte siden det ble opprettet i november 2024. ChatGPT la til støtte i mars 2025 og Gemini fulgte i april 2025. Open source-modeller kan bruke MCP via adaptere i LangChain og LlamaIndex.

Hva er forskjellen mellom MCP og en REST API?

REST API-er er designet for generell tjeneste-til-tjeneste-kommunikasjon. MCP er designet spesifikt for AI-modellinteraksjon -- det inkluderer verktøyoppdagelse, skjemaforhandling, resurstilgang og promptmaler som REST ikke har. Du ville ikke erstatte REST API-ene dine med MCP; de tjener forskjellige lag.

Hvem vedlikeholder MCP nå?

Linux Foundations Agentic AI Foundation (AAIF), dannet i desember 2025, styrer MCP. Det ble medgrunnet av Anthropic, Block og OpenAI. Denne leverandørnøytrale styringen er en viktig grunn til at bedrifter tar i bruk MCP.

Hva er Streamable HTTP i MCP?

Streamable HTTP er produksjonstransportmekanismen lagt til i 2025 MCP-spesifikasjonsoppdateringen. Den erstatter den eldre HTTP+SSE-transporten med et renere design: klienter sender HTTP POST-forespørsler og servere kan svare synkront eller via SSE-streaming. Det fungerer bak lastbalanserere og støtter standard HTTP-autentisering.

Hvor mange MCP-servere finnes det?

Linux Foundation siterte 10 000+ aktive servere og 97 millioner månedlige SDK-nedlastinger da MCP ble donert til AAIF i desember 2025. Økosystemet spenner over databaser, kodeverktøy, SaaS-integrasjoner, søkemotorer og skysinfrastrukturleverandører.

Konklusjon

MCP har gått fra Anthropics åpen kildekode-eksperiment til bransjenstandarprotokollen for å koble AI-modeller til verktøy på litt mer enn ett år. Her er hva som betyr noe:

  • MCP løser M x N-problemet -- én server fungerer med alle kompatible modeller, én klient fungerer med alle servere
  • Du kan bygge en fungerende MCP-server på under 50 linjer Python (FastMCP) eller TypeScript
  • Bruk stdio for utvikling, Streamable HTTP for produksjon -- transportvalget er enkelt
  • Sikre serverne dine med OAuth 2.1 -- 88% av nåværende implementasjoner gjør det ikke, og det er en reell risiko
  • Økosystemet er produksjonsklart -- 10 000+ servere, alle store LLM-er, leverandørnøytral styring under Linux Foundation

Fremover fokuserer 2026-veikartet på agent-til-agent-kommunikasjon via en ny Tasks-primitiv, forbedret bedriftssikkerhet og MCP Apps for interaktivt serverdriven brukergrensesnitt. MCP er ikke lenger bare et protokoll for verktøytilgang -- det blir infrastrukturlaget for agentisk AI.

Begynn med opplæringskoden ovenfor, test den i MCP Inspector og koble den til Claude Desktop. Du vil ha en fungerende MCP-integrasjon på under én time.

Kilder

Emneord

model context protocolmcpmcp serverai agentermcp opplæringmcp arkitekturfastmcpai utvikling

Del denne artikkelen

Kom i gang

Klar til å bygge noe ekstraordinært?

La oss gjøre visjonen din til virkelighet. Teamet vårt er klart til å hjelpe deg med å lage programvare som utgjør en forskjell.