Afsnit 03 - Integration af Model Context Protocol (MCP)
January 29, 2026 · View on GitHub
Introduktion til MCP (Model Context Protocol)
Model Context Protocol (MCP) er en open-source standard til at forbinde AI-applikationer med eksterne systemer. Ved hjælp af MCP kan AI-applikationer som Claude eller ChatGPT forbindes til datakilder (f.eks. lokale filer, databaser), værktøjer (f.eks. søgemaskiner, regnemaskiner) og arbejdsgange (f.eks. specialiserede prompts)—hvilket gør det muligt for dem at få adgang til vigtig information og udføre opgaver.
Tænk på MCP som en USB-C-port for AI-applikationer. Ligesom USB-C giver en standardiseret måde at forbinde elektroniske enheder på, giver MCP en standardiseret måde at forbinde AI-applikationer med eksterne systemer.
Hvad kan MCP muliggøre?
MCP åbner op for kraftfulde funktioner for AI-applikationer:
- Personlige AI-assistenter: Agenter kan få adgang til din Google Kalender og Notion og fungere som en mere personlig AI-assistent
- Avanceret kodegenerering: Claude Code kan generere en hel webapp baseret på et Figma-design
- Integration af virksomhedsdata: Virksomhedschatbots kan forbinde til flere databaser på tværs af organisationen og give brugere mulighed for at analysere data via chat
- Kreative arbejdsgange: AI-modeller kan skabe 3D-designs i Blender og printe dem ud med en 3D-printer
- Adgang til realtidsinformation: Forbind til eksterne datakilder for opdateret information
- Komplekse flertrinsoperationer: Udfør sofistikerede arbejdsgange, der kombinerer flere værktøjer og systemer
Hvorfor er MCP vigtigt?
MCP giver fordele på tværs af økosystemet:
For udviklere: MCP reducerer udviklingstid og kompleksitet ved opbygning eller integration med en AI-applikation eller agent.
For AI-applikationer: MCP giver adgang til et økosystem af datakilder, værktøjer og apps, som forbedrer funktionaliteten og brugeroplevelsen.
For slutbrugere: MCP resulterer i mere kapable AI-applikationer eller agenter, der kan få adgang til dine data og handle på dine vegne, når det er nødvendigt.
Små sprogmodeller (SLMs) i MCP
Små sprogmodeller repræsenterer en effektiv tilgang til AI-implementering og tilbyder flere fordele:
Fordele ved SLMs
- Ressourceeffektivitet: Lavere krav til beregningskraft
- Hurtigere svartider: Mindre forsinkelse for realtidsapplikationer
- Omkostningseffektivitet: Minimale infrastrukturbehov
- Privatliv: Kan køre lokalt uden dataoverførsel
- Tilpasning: Nem at finjustere til specifikke domæner
Hvorfor SLMs fungerer godt med MCP
SLMs kombineret med MCP skaber en kraftfuld kombination, hvor modellens ræsonnementsevner forstærkes af eksterne værktøjer, hvilket kompenserer for deres mindre parameterantal gennem forbedret funktionalitet.
Python MCP SDK Oversigt
Python MCP SDK giver fundamentet for at bygge MCP-aktiverede applikationer. SDK'en inkluderer:
- Klientbiblioteker: Til at forbinde til MCP-servere
- Serverframework: Til at oprette brugerdefinerede MCP-servere
- Protokolhåndterere: Til at administrere kommunikation
- Værktøjsintegration: Til at udføre eksterne funktioner
Praktisk implementering: Phi-4 MCP-klient
Lad os udforske en implementering i den virkelige verden ved hjælp af Microsofts Phi-4 mini-model integreret med MCP-funktioner.
MCP Arkitektur Oversigt
MCP følger en klient-server arkitektur, hvor en MCP-vært (en AI-applikation som Claude Code eller Claude Desktop) etablerer forbindelser til en eller flere MCP-servere. MCP-værten opnår dette ved at oprette en MCP-klient for hver MCP-server.
Nøgleaktører
- MCP-vært: AI-applikationen, der koordinerer og administrerer en eller flere MCP-klienter
- MCP-klient: En komponent, der opretholder en forbindelse til en MCP-server og henter kontekst fra en MCP-server, som MCP-værten kan bruge
- MCP-server: Et program, der leverer kontekst til MCP-klienter
To-lags arkitektur
MCP består af to adskilte lag:
Datalag: Definerer den JSON-RPC-baserede protokol for klient-server kommunikation, herunder:
- Livscyklusstyring (initialisering af forbindelse, kapabilitetsforhandling)
- Kerneprimitiver (værktøjer, ressourcer, prompts)
- Klientfunktioner (sampling, elicitation, logging)
- Hjælpefunktioner (notifikationer, fremskridtssporing)
Transportlag: Definerer kommunikationsmekanismer og kanaler:
- STDIO Transport: Bruger standard input/output streams til lokale processer (optimal ydeevne, ingen netværksbelastning)
- Streamable HTTP Transport: Bruger HTTP POST med valgfri Server-Sent Events til fjernservere (understøtter standard HTTP-autentifikation)
┌─────────────────────────────────────┐
│ MCP Host │
│ (AI Application) │
└─────────────────┬───────────────────┘
│
┌─────────────────┴───────────────────┐
│ MCP Client 1 │
│ ┌─────────────────────────────────┐ │
│ │ Data Layer │ │
│ │ ├── Lifecycle Management │ │
│ │ ├── Primitives (Tools/Resources)│ │
│ │ └── Notifications │ │
│ └─────────────────────────────────┘ │
│ ┌─────────────────────────────────┐ │
│ │ Transport Layer │ │
│ │ ├── STDIO Transport │ │
│ │ └── HTTP Transport │ │
│ └─────────────────────────────────┘ │
└─────────────────┬───────────────────┘
│
┌─────────────────┴───────────────────┐
│ MCP Server 1 │
│ (Local/Remote Context Provider) │
└─────────────────────────────────────┘
MCP Kerneprimitiver
MCP definerer primitivere, der specificerer typer af kontekstuel information, der kan deles med AI-applikationer, og rækkevidden af handlinger, der kan udføres.
Serverprimitiver
MCP definerer tre kerneprimitiver, som servere kan eksponere:
Værktøjer: Udførbare funktioner, som AI-applikationer kan kalde for at udføre handlinger
- Eksempler: filoperationer, API-kald, databaseforespørgsler
- Metoder:
tools/list,tools/call - Understøtter dynamisk opdagelse og udførelse
Ressourcer: Datakilder, der giver kontekstuel information til AI-applikationer
- Eksempler: filindhold, databaseposter, API-svar
- Metoder:
resources/list,resources/read - Muliggør adgang til strukturerede data
Prompts: Genanvendelige skabeloner, der hjælper med at strukturere interaktioner med sprogmodeller
- Eksempler: systemprompts, få-skud eksempler
- Metoder:
prompts/list,prompts/get - Standardiserer AI-interaktionsmønstre
Klientprimitiver
MCP definerer også primitivere, som klienter kan eksponere for at muliggøre rigere interaktioner:
Sampling: Tillader servere at anmode om sprogmodelkompletteringer fra klientens AI-applikation
- Metode:
sampling/complete - Muliggør modeluafhængig serverudvikling
- Giver adgang til værtens sprogmodel
Elicitation: Tillader servere at anmode om yderligere information fra brugere
- Metode:
elicitation/request - Muliggør brugerinteraktion og bekræftelse
- Understøtter dynamisk informationsindsamling
Logging: Gør det muligt for servere at sende logbeskeder til klienter
- Bruges til fejlfinding og overvågning
- Giver indsigt i serveroperationer
MCP Protokollivscyklus
Initialisering og kapabilitetsforhandling
MCP er en tilstandsbaseret protokol, der kræver livscyklusstyring. Initialiseringsprocessen tjener flere kritiske formål:
- Protokolversionsforhandling: Sikrer, at både klient og server bruger kompatible protokolversioner (f.eks. "2025-06-18")
- Kapabilitetsopdagelse: Hver part erklærer understøttede funktioner og primitivere
- Identitetsudveksling: Giver identifikations- og versionsinformation
# Example initialization request
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {
"elicitation": {}, # Client supports user interaction
"sampling": {} # Client can provide LLM completions
},
"clientInfo": {
"name": "edge-ai-client",
"version": "1.0.0"
}
}
}
Værktøjsopdagelse og udførelse
Efter initialisering kan klienter opdage og udføre værktøjer:
# Discover available tools
tools_response = await session.list_tools()
# Execute a tool
result = await session.call_tool(
"weather_current",
{
"location": "San Francisco",
"units": "imperial"
}
)
Realtidsnotifikationer
MCP understøtter realtidsnotifikationer for dynamiske opdateringer:
# Server sends notification when tools change
{
"jsonrpc": "2.0",
"method": "notifications/tools/list_changed"
}
# Client responds by refreshing tool list
await session.list_tools() # Get updated tools
Kom godt i gang: Trin-for-trin guide
Trin 1: Opsætning af miljø
Installer nødvendige afhængigheder:
pip install fastmcp mcp-python-client openai requests pyautogui Pillow
Trin 2: Grundlæggende konfiguration
Opsæt dine miljøvariabler:
# System Configuration
SYSTEM_PROMPT = "You are an AI assistant with some tools."
# Ollama Configuration (Local)
OLLAMA_URL = "http://localhost:11434/api/chat"
OLLAMA_MODEL_ID = "phi4-mini:3.8b-fp16"
# vLLM Configuration (Server)
VLLM_URL = "http://localhost:8000/v1"
VLLM_MODEL_ID = "microsoft/Phi-4-mini-instruct"
Trin 3: Kør din første MCP-klient
Grundlæggende Ollama-opsætning:
python ghmodel_mcp_demo.py
Brug af vLLM-backend:
python ghmodel_mcp_demo.py --env vllm
Server-Sent Events-forbindelse:
python ghmodel_mcp_demo.py --run sse
Brugerdefineret MCP-server:
python ghmodel_mcp_demo.py --server /path/to/server.py
Trin 4: Programmerbar brug
import asyncio
from ghmodel_mcp_demo import OllamaClient, Phi4MiniMCPClient
async def automated_interaction():
# Configure MCP server parameters
server_params = StdioServerParameters(
command="npx",
args=["@playwright/mcp@latest"],
env=None,
)
# Create MCP client and process tools
async with Phi4MiniMCPClient(server_params) as mcp_client:
tools = await process_mcp_tools(mcp_client)
llm_client = OllamaClient()
# Generate response with tool capabilities
response, messages = await llm_client.generate_response(
"Help me automate a web task",
tools
)
return response
# Execute the automation
result = asyncio.run(automated_interaction())
print(result)
Avancerede funktioner
Multi-backend support
Implementeringen understøtter både Ollama og vLLM backends, så du kan vælge baseret på dine behov:
- Ollama: Bedre til lokal udvikling og test
- vLLM: Optimeret til produktion og høj gennemstrømning
Fleksible forbindelsesprotokoller
To forbindelsestilstande understøttes:
STDIO Mode: Direkte proceskommunikation
- Lavere forsinkelse
- Egnet til lokale værktøjer
- Enkel opsætning
SSE Mode: HTTP-baseret streaming
- Netværkskompatibel
- Bedre til distribuerede systemer
- Realtidsopdateringer
Værktøjsintegrationsmuligheder
Systemet kan integreres med forskellige værktøjer:
- Webautomatisering (Playwright)
- Filoperationer
- API-interaktioner
- Systemkommandoer
- Brugerdefinerede funktioner
Fejlhåndtering og bedste praksis
Omfattende fejlhåndtering
Implementeringen inkluderer robust fejlhåndtering for:
Forbindelsesfejl:
- MCP-serverfejl
- Netværksudfald
- Forbindelsesproblemer
Værktøjsudførelsesfejl:
- Manglende værktøjer
- Parametervalidering
- Udførelsesfejl
Responsbehandlingsfejl:
- JSON-parsning
- Formatinkonsistenser
- LLM-responsanomalier
Bedste praksis
- Ressourcestyring: Brug asynkrone kontekststyrere
- Fejlhåndtering: Implementer omfattende try-catch blokke
- Logging: Aktiver passende logningsniveauer
- Sikkerhed: Valider input og rens output
- Ydeevne: Brug forbindelsespooling og caching
Anvendelser i den virkelige verden
Webautomatisering
# Example: Automated web testing
async def web_automation_example():
tools = await setup_playwright_tools()
response = await llm_client.generate_response(
"Navigate to example.com and take a screenshot",
tools
)
Databehandling
# Example: File analysis
async def data_processing_example():
tools = await setup_file_tools()
response = await llm_client.generate_response(
"Analyze the CSV file and generate a summary report",
tools
)
API-integration
# Example: API interactions
async def api_integration_example():
tools = await setup_api_tools()
response = await llm_client.generate_response(
"Fetch weather data and create a forecast summary",
tools
)
Performanceoptimering
Hukommelsesstyring
- Effektiv håndtering af beskedhistorik
- Korrekt oprydning af ressourcer
- Forbindelsespooling
Netværksoptimering
- Asynkrone HTTP-operationer
- Konfigurerbare timeouts
- Smidig fejlgendannelse
Samtidig behandling
- Ikke-blokerende I/O
- Parallel værktøjsudførelse
- Effektive asynkrone mønstre
Sikkerhedsovervejelser
Databeskyttelse
- Sikker håndtering af API-nøgler
- Inputvalidering
- Outputsanitering
Netværkssikkerhed
- HTTPS-understøttelse
- Standardindstillinger for lokale endpoints
- Sikker tokenhåndtering
Udførelsessikkerhed
- Filtrering af værktøjer
- Sandkassemiljøer
- Audit-logning
MCP Økosystem og udvikling
MCP Projektomfang
Model Context Protocol-økosystemet inkluderer flere nøglekomponenter:
- MCP Specifikation: Officiel specifikation, der beskriver implementeringskrav for klienter og servere
- MCP SDKs: SDK'er for forskellige programmeringssprog, der implementerer MCP
- MCP Udviklingsværktøjer: Værktøjer til udvikling af MCP-servere og -klienter, inklusive MCP Inspector
- MCP Reference Server Implementeringer: Referenceimplementeringer af MCP-servere
Kom godt i gang med MCP-udvikling
For at begynde at bygge med MCP:
Byg servere: Opret MCP-servere for at eksponere dine data og værktøjer
Byg klienter: Udvikl applikationer, der forbinder til MCP-servere
Lær koncepter: Forstå de grundlæggende koncepter og arkitekturen bag MCP
Konklusion
SLMs integreret med MCP repræsenterer et paradigmeskift i udviklingen af AI-applikationer. Ved at kombinere effektiviteten af små modeller med kraften fra eksterne værktøjer kan udviklere skabe intelligente systemer, der både er ressourceeffektive og meget kapable.
Model Context Protocol giver en standardiseret måde at forbinde AI-applikationer med eksterne systemer, ligesom USB-C giver en universel forbindelsesstandard for elektroniske enheder. Denne standardisering muliggør:
- Problemfri integration: Forbind AI-modeller til forskellige datakilder og værktøjer
- Økosystemvækst: Byg én gang, brug på tværs af flere AI-applikationer
- Forbedrede funktioner: Forstærk SLMs med ekstern funktionalitet
- Realtidsopdateringer: Understøt dynamiske, responsive AI-applikationer
Vigtige pointer:
- MCP er en åben standard, der forbinder AI-applikationer og eksterne systemer
- Protokollen understøtter værktøjer, ressourcer og prompts som kerneprimitiver
- Realtidsnotifikationer muliggør dynamiske, responsive applikationer
- Korrekt livscyklusstyring og fejlhåndtering er afgørende for produktionsbrug
- Økosystemet tilbyder omfattende SDK'er og udviklingsværktøjer
Referencer og yderligere læsning
Officiel MCP Dokumentation
- Model Context Protocol Officielt Site - Komplet dokumentation og specifikationer
- MCP Kom godt i gang Guide - Introduktion og grundlæggende koncepter
- MCP Arkitektur Oversigt - Detaljeret teknisk arkitektur
- MCP Specifikation - Officiel protokolspecifikation
- MCP SDKs Dokumentation - Sprog-specifikke SDK-guides
Udviklingsressourcer
- MCP for begyndere - Omfattende begyndervejledning til Model Context Protocol
- MCP GitHub Organisation - Officielle repositories og eksempler
- MCP Server Repository - Reference serverimplementeringer
- MCP Inspector - Udviklings- og fejlsøgningsværktøj
- Byg MCP Servere Guide - Serverudviklingsvejledning
- Byg MCP Klienter Guide - Klientudviklingsvejledning
Små sprogmodeller og Edge AI
- Microsoft Phi Modeller - Phi-modelfamilien
- Foundry Local Dokumentation - Microsofts edge AI runtime
- Ollama Dokumentation - Platform til lokal LLM-implementering
- vLLM Dokumentation - Højtydende LLM-servering
Tekniske standarder og protokoller
- JSON-RPC 2.0 Specifikation - Underliggende RPC-protokol brugt af MCP
- JSON Schema - Standard for skemadefinition til MCP-værktøjer
- OpenAPI Specifikation - Standard for API-dokumentation
- Server-Sent Events (SSE) - Webstandard for realtidsopdateringer
Udvikling af AI-agenter
- Microsoft Agent Framework - Produktionsklar udvikling af agenter
- LangChain Dokumentation - Framework til integration af agenter og værktøjer
- Semantic Kernel - Microsofts SDK til AI-orkestrering
Brancheanalyser og forskning
- Anthropics Model Context Protocol Announcement - Oprindelig MCP-introduktion
- Small Language Models Survey - Akademisk undersøgelse af SLM-forskning
- Edge AI Markedsanalyse - Branchetrends og prognoser
- AI Agent Development Best Practices - Forskning i agentarkitekturer
Denne sektion giver fundamentet for at bygge dine egne MCP-applikationer drevet af SLM, hvilket åbner op for muligheder inden for automatisering, databehandling og integration af intelligente systemer.
➡️ Hvad er næste skridt
Ansvarsfraskrivelse:
Dette dokument er blevet oversat ved hjælp af AI-oversættelsestjenesten Co-op Translator. Selvom vi bestræber os på nøjagtighed, skal det bemærkes, at automatiserede oversættelser kan indeholde fejl eller unøjagtigheder. Det originale dokument på dets oprindelige sprog bør betragtes som den autoritative kilde. For kritisk information anbefales professionel menneskelig oversættelse. Vi er ikke ansvarlige for eventuelle misforståelser eller fejltolkninger, der opstår som følge af brugen af denne oversættelse.