MCP ontketenen: USB-C voor AI

Het rijk van Large Language Models (LLM’s) vereist vaak dat ze worden verbonden met externe bronnen zoals data repositories, gespecialiseerde tools of Application Programming Interfaces (API’s) om hun ware potentieel te ontsluiten. Er was echter een gestandaardiseerde methode voor deze integratie opvallend afwezig – tot nu.

Anthropic is naar voren gestapt met een potentiële oplossing: het Model Context Protocol (MCP), een open protocol dat ernaar streeft de ‘USB-C’ van de AI-wereld te worden. Laten we MCP in detail onderzoeken, waarbij we de functionaliteiten, toepassingen, uitdagingen en implementatiestrategieën onderzoeken.

MCP, dat onlangs werd geïntroduceerd, is een open-source project onder leiding van de makers van het Claude-model. Het voorziet in een universele, open standaard die AI-systemen naadloos verbindt met verschillende databronnen.

MCP reikt verder dan eenvoudige databases en biedt toegang tot een divers scala aan tools en resources. Deze mogelijkheden omvatten het opvragen van databases, het starten van Docker-containers en zelfs interactie met populaire messaging platforms zoals Slack of Discord.

Of het doel nu is om een LLM te integreren met een SQL-database, een Kubernetes-cluster te beheren of Jira-taken te automatiseren, er is een grote kans dat er al een geschikte MCP-server bestaat. Het momentum van het project is opmerkelijk geweest en trekt aanzienlijke interesse en steun van industriegiganten zoals OpenAI en Google.

Deze verkenning zal ingaan op de praktische aspecten van MCP, waarbij de potentiële toepassingen, inherente uitdagingen en methoden voor het implementeren en integreren van MCP-servers met Claude Desktop en aangepaste modellen met behulp van de Open WebUI worden belicht.

MCP begrijpen: Een client-server architectuur

MCP werkt op een conventionele client-server architectuur, bestaande uit drie fundamentele elementen: de host, de client en de server.

  • De host is typisch een gebruikersinterface, zoals Claude Desktop of een Integrated Development Environment (IDE) zoals Cursor. Het is verantwoordelijk voor het beheren van een of meer MCP-clients.

  • Elke client legt een speciale verbinding met de server via het MCP-protocol. Communicatie tussen client en server vindt plaats via JSON-RPC-berichten, waarbij de transportlaag varieert afhankelijk van de specifieke implementatie. Momenteel ondersteunde transportlagen zijn Stdio, HTTP en server-sent events (SSE).

  • De MCP server stelt specifieke mogelijkheden beschikbaar aan de client, waardoor ze op een gestandaardiseerde manier toegankelijk zijn voor de host. Deze uniforme toegankelijkheid is de belangrijkste reden waarom MCP vaak wordt vergeleken met USB-C voor AI.

Net zoals USB een revolutie teweegbracht in de connectiviteit door de noodzaak van verschillende interfaces voor randapparatuur en opslagapparaten te elimineren, streeft MCP ernaar een gemeenschappelijke taal te creëren voor modellen om te communiceren met data en tools.

De rol van de MCP-server hangt af van de locatie van de resource. Voor lokale resources, zoals een SQLite-database, heeft de server direct toegang tot de resource. Voor externe resources, zoals een S3-bucket, fungeert het als een brug en stuurt het API-aanroepen door. Deze overbruggingsfunctie versterktde USB-C-analogie, aangezien MCP-servers vaak fungeren als adapters, die leveranciersspecifieke interfaces vertalen naar een gestandaardiseerd formaat dat taalmodellen gemakkelijk kunnen begrijpen.

Het consistente blootstellings- en responsmechanisme is een belangrijk aspect van MCP, waardoor uniformiteit tussen verschillende resources wordt gegarandeerd.

Een van de meest intrigerende functies van MCP is de bi-directionele communicatiemogelijkheid. Niet alleen kan de hostapplicatie data opvragen van de server, maar de server kan ook communiceren met de LLM via sampling/createMessage-verzoeken aan de client. Hoewel deze functionaliteit nog niet universeel wordt ondersteund, maakt het de weg vrij voor opwindende agentische workflows.

Met een fundamenteel begrip van MCP gaan we de praktische toepassing ervan onderzoeken.

Hands-on met MCP: Testen met Claude Desktop

Gezien Anthropic’s ontwikkeling van MCP biedt Claude Desktop een eenvoudige omgeving voor initieel experimenteren.

Voor gebruikers die liever third-party LLM-providers vermijden, zal het volgende gedeelte ingaan op het verbinden van MCP-servers met lokale modellen en de Open WebUI-interface.

Naast Claude Desktop zijn er een paar dependencies nodig, omdat MCP-servers in verschillende omgevingen kunnen werken. Voor deze demonstratie moeten Node.js, Python 3 en de UVX-pakketbeheerder voor Python worden geïnstalleerd.

Na het installeren van de benodigde dependencies, start Claude Desktop en log in met een Anthropic-account. Navigeer naar de applicatie-instellingen en vervolgens naar het tabblad ‘Developer’.

Door op de knop ‘Edit Config’ te klikken, wordt automatisch een leeg claude_desktop_config.json-bestand gegenereerd in de map ~/Library/Application Support/Claude/ op macOS of de map %APPDATA%\\Claude\\ op Windows. Dit bestand bevat de MCP Client-configuratie. De System Time en File System MCP-servers worden gebruikt voor testdoeleinden.

Open het claude_desktop_config.json-bestand in een teksteditor of IDE (bijv. VSCodium) en vervang de inhoud ervan door de volgende time-server configuratie, waarbij u de tijdzone naar wens aanpast: