On-premise storage-agenten ontgrendelen via het Model Context Protocol (MCP)

Wat als u on-premise opslagbeheer zou kunnen omzetten in een AI-ondersteunde, natuurlijke taalervaring? In dit artikel wordt bekeken hoe u een Model Context Protocol (MCP)-server kunt bouwen die integreert met FLASHBLADE.

Model Context Protocol

Samenvatting

Using an MCP server that integrates with FlashBlade allows you to query system data and even take direct actions, unlocking a new frontier in agentic storage management.

image_pdfimage_print

Het beheren van on-premise opslag is van oudsher een vervelend, handmatig proces geweest – het doorzoeken van systeemmetrieken, het monitoren van prestaties en het uitvoeren van acties vereist vaak complexe scripts of gespecialiseerde tools. Maar wat als u gewoon om de informatie die u nodig hebt in gewoon Engels zou kunnen vragen en onmiddellijke, bruikbare inzichten zou krijgen?

Daar komt het Model Context Protocol (MCP) om de hoek kijken. MCP is een open protocol waarmee large language models (LLM’s) intelligent kunnen communiceren met applicaties, waardoor natuurlijke taalmogelijkheden worden toegevoegd aan opslagbeheer. In deze blog laten we u zien hoe u een MCP-server kunt bouwen die integreert met Pure Storage® FLASHBLADE®, zodat u systeemgegevens kunt opvragen en zelfs directe acties kunt ondernemen – allemaal via een intuïtieve, AI-aangedreven interface.

Door onze aanpak te modulariseren, ontsluiten we een nieuwe grens op het gebied van agentisch opslagbeheer, waarbij automatisering niet alleen efficiënt is, maar ook converserend en adaptief. Laten we eens kijken.

Ons doel voor deze acties is een Pure Storage-array, met name een FLASHBLADE-systeem, maar de principes zijn ook van toepassing op FlashArray™-systemen. Met behulp van de Claude-desktopapp gebruiken onze query’s de tools die door de MCP-server worden geleverd om te communiceren met de aangewezen Pure Storage-array volgens deze screenshot:

Een MCP-server maken

De eerste stap is het installeren van de uv Python-pakketbeheerder. Raadpleeg de officiële handleiding voor installatie-instructies.

Vervolgens moeten we de MCP-serverstructuur creëren. Hiervoor maken we gebruik van de geleverde tools binnen het uv-pakket:

Ga verder met de laatste aangegeven stappen om de afhankelijkheden te installeren en onze skelet MCP-server is klaar. De broncode die we moeten wijzigen, bevindt zich onder pure-mcp-server/src/pure-mcp-server. Op dit punt is de code voor een template add-notes tool. We zullen dat aanpassen om te communiceren met een Pure Storage FLASHBLADE-array op locatie.

Vanuit de projectmap gaan we de virtuele Python-omgeving binnen die automatisch door uv is gecreëerd en installeren we de Pure Storage Python SDK, omdat we dit zullen gebruiken om te communiceren met de FLASHBLADE REST API.

Vervolgens voegen we de relevante code toe om twee MCP-tools te maken om query’s uit te voeren tegen de eindpunten van een bepaalde FLASHBLADE-array:

  • get_arrays 
  • get_arrays en get_arrays_performance 

De MCP-server werd tijdens de initialisatiefase automatisch toegevoegd aan de Claude-desktop. Om te verifiëren, opent u het volgende bestand en controleert u of de invoer correct is:

Naast de MCP-inspecteur hebben we het volgende script gebruikt om te valideren:

Deze code vermeldt mijn MCP-servertools correct. Het maakt ook verbinding met de externe array, voert de noodzakelijke API-oproep uit en retourneert de relevante JSON-string.

Via de Claude-desktopapp kunnen we nu query’s uitvoeren met behulp van de MCP-servertools tegen een bepaalde Pure Storage FLASHBLADE:

En met de tool voor volledige arrays kunt u vragen naar opslagruimte:

Merk op dat dit een vrij inactieve labarray is, maar er kunnen vervolgvragen worden gesteld, zoals:

“Maak een grafiek om de prestaties van de afgelopen 7 dagen te tonen op basis van de tijdwaarde per metrische epoch. Converteer epoch- en groepsprestatieresultaten per dag.”

Een modulaire MCP-tool draaien

De code tot nu toe biedt basisintegratie voor hardcoded calls volgens de definitie van de MCP-servertool, maar we willen misschien acties indienen en informatie ophalen. Het hebben van één MCP-tool per verzoek is geen wenselijke aanpak – we moeten overschakelen van een hardgecodeerde REST API-oproep zoals get_arrays naar een modulaire benadering waarbij elke eindpuntoproep als parameter wordt geaccepteerd via één enkele pure-fb-tool om voor elk eindpunt te gebruiken. 

De volledige code is te vinden in deze GitHub-repository.

Gebruik

Met onze nieuwe MCP-server kunnen we informatieve query’s uitvoeren, zoals:

Gebruik pure-fb op host: 1.2.3.4 met api-token: T-7c7a*****f23e om de opdracht: get_file_systems en vervolgens de opdracht: get_buckets. Sorteer de items op gebruikte grootte en geef voor elk item aan of het een bucket is door het item te taggen als ‘s3’ of een bestandssysteem door het item te taggen als ‘fs’. Zorg ervoor dat u correct sorteert op aflopende volgorde op basis van gebruikte grootte en vermeld de top 5 op gebruikte ruimte.”

Dit resulteert in de volgende output:

Met deze modulaire aanpak kunnen we elk eindpunt opvragen (arrays, buckets, bestandssystemen, enz.) om informatie op te halen en acties op de array te ondernemen. We voeren bijvoorbeeld een eenvoudige creatie-bucketopdracht uit met behulp van de volgende query:

“Gebruik pure-fb op host: 1.2.3.4 met api-token: T-7c7a*****f23e en het commando post_buckets met de parameters: names=[“jbtmcptest”], bucket=BucketPost(account=Reference(name=’jbt’)) ”

Op de Pure Storage FLASHBLADE-array zien we dat de relevante bucket nu aanwezig is:

En met deze vraag creëren we een bestandssysteem. Merk op dat we in dit voorbeeld het specifieke eindpunt niet geven. We laten dit over aan de LLM om erachter te komen:

“Maak een bestandssysteem met de volgende parameters: names=[“jbt-myfs”], file_system=FileSystemPost(provisioned=5000, hard_limit_enabled=True, nfs=Nfs(v4_1_enabled=True), smb=Smb(enabled=True), multi_protocol=MultiProtocolPost(access_control_style=”nfs”))”

We kunnen zien dat ClaudeAI de juiste opdracht heeft kunnen geven om dit verzoek uit post_file_system te voeren.

De prompt instellen om als agent op te treden

We zullen nu wat context toevoegen aan de chat en het gedrag en de mogelijkheden definiëren van een storage agent die twee arrays moet beheren:

“U bent een slimme storage management agent die via de pure-fb tool de volgende twee arrays kan beheren:

array01 bij host: 1.2.3.4 met api-token: T-7c7a*****f23e

array02 bij host: 1.2.3.5 met api-token: T-f2e0*****3b8d”

Met deze opslagagent gedefinieerd, kunnen we query’s uitvoeren tegen beide arrays, zoals:

Verzamel alle buckets van beide arrays, extraheer naam, ruwe total_used ruimte en bronarray in één lijst. Sorteer strikt op basis van de ruwe total_used waarden zonder conversies. Geef de top 15 van de lijst en zet gebruikte ruimte om in geschikte eenheden voor weergave.”

Onze agent begint met het verzamelen van de relevante data met behulp van get_buckets en get_file_systems tegen de twee arrays:

De agent gaat verder met het sorteren van de buckets op gebruikte ruimte zoals gevraagd. Merk op dat het verschillende pogingen kostte om de prompt te krijgen dat de sortering correct was.

Van CLI-gedreven naar AI-ondersteund opslagbeheer

Met een MCP-server hebben we on-premise opslagbeheer getransformeerd van een star, command-line-gedreven proces in een AI-ondersteunde, natuurlijke taalervaring. Door LLM’s te overbruggen met enterprise storage, halen we niet langer alleen data op – we leiden onze infrastructuur dynamisch, verminderen de complexiteit en openen de deur naar slimmere, efficiëntere workflows.

Maar dit is nog maar het begin. Agentische automatisering verandert de bedrijfstechnologie en opslag is daarop geen uitzondering. Naarmate deze mogelijkheden evolueren, gaan we op weg naar een toekomst waarin AI-gestuurd opslagbeheer niet alleen een gemak is, maar ook een concurrentievoordeel. De vraag is niet of dit de nieuwe norm zal worden – het is hoe snel.

Bent u klaar om de volgende stap te zetten?