
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.
| Attributt | Detalj |
|---|---|
| Fullt navn | Model Context Protocol (MCP) |
| Skapt av | Anthropic (nov 2024), nå styrt av Linux Foundation / AAIF (des 2025) |
| Hva det gjør | Universell standard for å koble AI-modeller til verktøy, data og tjenester |
| Problem det løser | Eliminerer M x N tilpassede integrasjoner -- som USB-C for AI |
| Kjerneprimitiver | Verktøy, Ressurser, Prompter og Sampling |
| Transport | stdio (lokal utvikling), Streamable HTTP (produksjon) |
| Autentisering | OAuth 2.1 (kreves for HTTP-transport) |
| SDK-er | Python (FastMCP), TypeScript, Java, Kotlin, C# |
| Økosystemstørrelse | 10 000+ aktive servere (ifølge Linux Foundation, des 2025) |
| Store brukere | Claude, ChatGPT, Gemini, Cursor, VS Code Copilot, Windsurf |
| Spesifikasjonsstatus | Åpen standard, aktivt utviklende (2026-veikart pågår) |
| Best for | AI-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 bransjeovergripende 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?
| Komponent | Rolle | Eksempler | Hva den gjør |
|---|---|---|---|
| Host | Applikasjonen brukeren samhandler med | Claude Desktop, Cursor, VS Code | Gir brukergrensesnittet, administrerer klientinstanser |
| Klient | Protokollbehandler inne i hosten | Innebygd i hostappen | Opprettholder en 1:1-tilkobling med én MCP-server |
| Server | Eksponerer verktøy og data via MCP | GitHub-server, Postgres-server, Slack-server | Pakker 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:
// 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:
- Initialisere -- klienten sender kapabiliteter, serveren svarer med sine egne
- Kapabilitetsforhandling -- begge sider er enige om støttede funksjoner (verktøy, ressurser, prompter, sampling)
- Klar -- tilkoblingen er aktiv; forespørsler flyter i begge retninger
- Forespørsler/svar --
tools/call,resources/read, osv. - 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.
| Primitiv | Hvem kontrollerer den | Retning | Eksempel | Brukstilfelle |
|---|---|---|---|---|
| Verktøy | Modellen bestemmer når den skal kalles | Klient -> Server | create_github_issue | Handlinger AI-en utfører autonomt |
| Ressurser | Applikasjon/bruker velger | Klient -> Server | file://project/README.md | Data festet til kontekst |
| Prompter | Brukeren utløser | Klient -> Server | code_review-mal | Gjenbrukbare interaksjonsmønstre |
| Sampling | Server ber om komplettering | Server -> Klient | Server ber modellen oppsummere | Agentiske 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.
// 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.
# Installer FastMCP
pip install fastmcp# 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.
# Installer SDK og Zod for skjemavalidering
npm install @modelcontextprotocol/sdk zod// 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:
{
"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:
npx @modelcontextprotocol/inspector python weather_server.pyInspector å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.
| Transport | Brukstilfelle | Fordeler | Ulemper | Status |
|---|---|---|---|---|
| stdio | Lokal utvikling, personlige verktøy | Nullkonfigurasjon, enkel, rask | Bare samme maskin | Aktiv |
| Streamable HTTP | Produksjon, fjernservere, flerbruker | Fungerer over nettverk, støtter streaming via SSE, tilstandsløs-vennlig | Krever HTTP-server, trenger autentisering | Aktiv (2025-spesifikasjon) |
| HTTP+SSE (gammel) | Legacy fjærntransport | Var det originale fjernalternativet | Erstattet av Streamable HTTP | Foreldet |
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.
// 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.
| Funksjon | MCP | Function Calling | REST API-er |
|---|---|---|---|
| Standardisering | Åpent protokoll, modellagnostisk | Per leverandør (OpenAI, Anthropic har hver sin) | Universell |
| Verktøyoppdagelse | Innebygd (tools/list) | Ingen -- du sender skjemaer per forespørsel | Ingen -- krever docs eller OpenAPI-spec |
| Datatilgang | Ressurser-primitiv | Støttes ikke | Standard endepunkter |
| Promptmaler | Prompter-primitiv | Støttes ikke | Ikke aktuelt |
| Autentisering | OAuth 2.1 (spesifikasjonsnivå) | Leverandør-API-nøkkel | Varierer (API-nøkler, OAuth, osv.) |
| Streaming | SSE via Streamable HTTP | Leverandøravhengig | Varierer |
| Multi-modell | Fungerer med alle MCP-kompatible modeller | Låst til én leverandørs API | Modellagnostisk (med limpekode) |
| Server-økosystem | 10 000+ forhåndsbygde servere | N/A | Millioner av API-er |
| Oppsettkompleksitet | Kjøre en MCP-server | Sende JSON i API-kall | HTTP-klient |
| Best for | Multi-modell, multi-verktøy agentmiljøer | Enkle enmodell-apper med noen få verktøy | Tjeneste-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?
| LLM | MCP-støtte | Siden | Merknader |
|---|---|---|---|
| Claude | Innebygd, full støtte | Nov 2024 | Skapte MCP; dypest integrasjon |
| ChatGPT | Offisiell støtte | Mar 2025 | Via OpenAIs MCP-integrasjon |
| Gemini | Offisiell støtte | Apr 2025 | Google Cloud MCP-servere for Google-tjenester |
| Llama / Åpen kildekode | Via adaptere | 2025 | LangChain, LlamaIndex og tilpassede adaptere |
| Copilot (VS Code) | Innebygd i agentmodus | 2025 | Microsoft leverer MCP-støtte i VS Code |
Populære MCP-servere verdt å kjenne til
| Kategori | Server | Hva den gjør |
|---|---|---|
| Kode | GitHub | PR-er, issues, repositorier, kodesøk |
| Kode | GitLab | Merge requests, pipelines, prosjektledelse |
| Database | PostgreSQL | Skjemainspeksjon, kjøring av spørringer |
| Database | MySQL | Spørring og skjematilgang |
| SaaS | Slack | Kanalmeldinger, søk, varsler |
| SaaS | Google Drive | Filtilgang, søk, dokumentlesing |
| SaaS | Notion | Sidelesing, databasespørringer |
| Søk | Brave Search | Nettsøkresultater |
| DevOps | Docker | Containeradministrasjon |
| Infrastruktur | AWS | Skyressursadministrasjon |
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
- Implementer OAuth 2.1 for enhver server eksponert via HTTP. Ingen statiske API-nøkler i konfigurasjonsfiler.
- Anvend minste-privilegier-omfang. Hvis verktøyet ditt bare leser data, skal serverens legitimasjon være skrivebeskyttet. Ikke gi et rapporteringsverktøy skrivetilgang.
- Isoler legitimasjon. Hver MCP-server bør ha sine egne omfangsbegrensede tokens. Ikke del ett enkelt "gud-token" på tvers av servere.
- Håndhev TLS overalt. Streamable HTTP uten HTTPS er automatisk utelukket for produksjon.
- 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.
- 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.
- 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.
# 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.tsInspector å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 atcommandpeker til en ekte binær og atcwdpeker 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
stdiobetyr 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:
- 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.
- 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.
- 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
- MCP-spesifikasjon (2025-11-25)
- MCP-autorisasjonsspesifikasjon
- MCP-transportspesifikasjon
- MCP Inspector-dokumentasjon
- Introduksjon av Model Context Protocol -- Anthropic
- Donasjon av MCP til Linux Foundation -- Anthropic
- Linux Foundation AAIF-kunngjøring
- Google Cloud MCP-støtte
- FastMCP Python SDK
- MCP TypeScript SDK
- Astrix Security: Tilstanden for MCP-serversikkerhet 2025
- MCP 2026-veikart