概要
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.
管理就地部署的儲存傳統上是一個繁瑣的手動流程,詢問系統指標、監控效能,以及執行動作,通常需要複雜的指令碼或專門工具。但如果您可以簡單地以英文索取所需的資訊,並立即取得可行的深度資訊,該怎麼辦?
這就是模型內容協定 (MCP) 的源頭。MCP 是一種開放式協定,能讓大型語言模型 (LLM) 與應用程式進行智慧互動,為儲存管理帶來自然語言功能。在本部落格中,我們將示範如何建立與 Pure Storage® FlashBlade® 整合的 MCP 伺服器,讓您查詢系統資料,甚至直接採取行動,所有操作皆透過直覺式 AI 介面進行。
透過將我們的方法模組化,我們正在開啟代理式儲存管理的新領域,自動化不僅有效率,而且還能進行對話和適應性。讓我們深入探討。
我們的目標是 Pure Storage 陣列,特別是 FlashBlade 系統,但主要的原則也適用於 FlashArray 系統。使用 Claude 桌面應用程式,我們的查詢將使用此 MCP 伺服器提供的工具與指定的 Pure Storage 陣列進行互動,如以下螢幕截圖所示:
建立 MCP 伺服器
第一步是安裝 uv Python 封裝管理員。有關安裝說明,請參閱官方指南。
接下來,我們需要建立 MCP 伺服器結構。為此,我們將使用 uv 套件中提供的工具:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
% uvx create–mcp–server Creating a new MCP server project using uv. This will set up a Python project with MCP dependency. Let‘s begin! Project name (required): pure–mcp–server Project description [A MCP server project]: A MCP server to retrieve realtime information from a Pure Storage FlashBlade Project version [0.1.0]: Project will be created at: /Users/jthomas/mcp/pure–mcp–server Is this correct? [Y/n]: Y .... Claude.app detected. Would you like to install the server into Claude.app now? [Y/n]: Y ✅ Added pure–mcp–server to Claude.app configuration Settings file location: /Users/jthomas/Library/Application Support/Claude/claude_desktop_config.json ✅ Created project pure–mcp–server in pure–mcp–server ℹ️ To install dependencies run: cd pure–mcp–server uv sync —dev —all–extras |
繼續執行最後指示的步驟以安裝相依性,我們的 skeleton MCP 伺服器已準備就緒。我們需要修改的原始程式碼位於 pure-mcp-server/src/pure-mcp-server 之下。此時,代碼適用於範本附加備註工具。我們將修改,以便與就地部署的 Pure Storage FlashBlade 陣列進行互動。
從專案資料夾中,我們進入了由 uv 自動建立的 Python 虛擬環境,並安裝 Pure Storage Python SDK,因為我們會利用此工具與 FlashBlade REST API 進行互動。
1 2 |
% source .venv/bin/activate (pure–mcp–server) % uv pip install py–pure–client |
然後,我們新增相關程式碼,建立兩個 MCP 工具,針對指定的 FlashBlade 陣列端點執行查詢:
- get_arrays
- get_arrays 和 get_arrays_performance
MCP 伺服器在初始化階段自動新增至 Claude 桌面。若要驗證,請開啟下列檔案,並檢查項目是否正確:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
cat /Users/jthomas/Library/Application\ Support/Claude/claude_desktop_config.json { “mcpServers”: { “pure-mcp-server”: { “command”: “uv”, “args”: [ “–directory”, “/path/to/folder/pure-mcp-server”, “run”, “pure-mcp-server” ] } } } |
除了 MCP 檢查員之外,我們還使用下列腳本來驗證:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import asyncio from mcp.client.session import ClientSession from mcp.client.stdio import StdioServerParameters, stdio_client async def main(): async with stdio_client( StdioServerParameters(command=“uv”, args=[“–directory”, “/Users/jthomas/mcp/pure-mcp-server”, “run”, “pure-mcp-server”]) ) as (read, write): async with ClientSession(read, write) as session: await session.initialize() # List available tools tools = await session.list_tools() print(tools) # Call the fetch tool result = await session.call_tool(“get-array”, {“host”: “1.2.3.4”, “api_token”: “T-da03****1a98”}) print(result) asyncio.run(main()) |
此代碼正確列出我的 MCP 伺服器工具。它還能連接至遠端陣列,執行必要的 API 呼叫,並傳回相關的 JSON 字串。
現在,我們可以透過 Claude 桌面應用程式,針對指定的 Pure Storage FlashBlade 使用 MCP 伺服器工具來執行查詢:
使用全功能工具,詢問儲存空間:
請注意,這是一個相當閒置的實驗室陣列,但可以詢問後續問題,例如:
「建立圖表,根據每公制 Epoch 時間值顯示過去 7 天的表現。每天轉換 epoch 和團隊績效結果。”
運行模組化 MCP 工具
目前為止,該代碼根據 MCP 伺服器工具定義,為硬式編碼通話提供基本整合,但我們可能要提交行動和擷取資訊。每個請求只有一個 MCP 工具不是一個理想的方法,我們必須從硬式編碼 REST API 調用get_arrays變成模組化方法,它透過單一的 pure-fb 工具接受任何端點調用作為參數,以用於任何端點。
完整的程式碼可在 GitHub 儲存庫中找到。
使用方式
有了我們新的 MCP 伺服器,我們就能執行資訊查詢,例如:
「在主機上使用 pure-fb: 1.2.3.4 with api-token:T-7c7a*****f23e 執行指令:get_file_systems然後執行指令: get_buckets.依使用大小排序項目,並針對每個項目標示為 ‘s3’ 或檔案系統,標示為 ‘fs’。確保根據使用的大小以遞減順序正確排序,並按使用的空間列出前 5 名。”
這會產生以下輸出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
I‘ll help you retrieve and analyze the file systems and buckets information from your FlashBlade. View result from pure–fb from pureflashblade (local){} View result from pure–fb from pureflashblade (local){} Here are the top 5 storage items (combining both file systems and buckets) sorted by used space in descending order: lbo–outscale–perfs [fs]: 7,240,575,042,227 bytes (7.24 TB) lbo–vertica [fs]: 3,311,892,804,361 bytes (3.31 TB) dm [fs]: 2,213,617,471,583 bytes (2.21 TB) lbo–hdf5 [fs]: 1,643,315,388,928 bytes (1.64 TB) eg–px–share01 [fs]: 869,598,847,641 bytes (869.6 GB) As we can see, the top 5 spots are all occupied by file systems, with the largest being lbo–outscale–perfs at 7.24 TB. For reference, the largest bucket (cvlt–uklab–object–lock at 265.1 GB) would rank much lower in this combined list. |
透過這種模組化方法,我們可以查詢任何端點(取得陣列、儲存桶、檔案系統等),以擷取資訊並對陣列採取行動。例如,我們將使用以下查詢運行簡單的建立儲存區指令:
「在主機上使用 pure-fb: 1.2.3.4 with api-token:T-7c7a*****f23e 以及post_buckets參數為: names=[“jbtmcptest”], bucket=BucketPost(account=Reference(name=’jbt’))) ”
在 Pure Storage FlashBlade 陣列上,我們可以看到相關儲存桶現在已經存在:
我們利用這個查詢建立檔案系統。請注意,在此範例中,我們不會提供特定端點。我們交給 LLM 來了解:
「使用以下參數建立檔案系統:Name=[“jbt-myfs”], file_system=FileSystemPost(provisioned=5000, hard_limit_enabled=True, nfs=Nfs(v4_1_enabled=True), smb=Smb(啟用=True), multi_protocol=MultiProtocolPost(access_control_style=”nfs”))”
我們可以看到 ClaudeAI 能夠提供正確的指令post_file_system來執行這項請求。
設定提示以扮演客服人員
現在,我們將在聊天中添加一些背景,並定義儲存代理的行為和能力,該儲存代理有兩個陣列要控制:
「您是一位智慧型儲存管理代理,可透過 pure-fb 工具管理以下兩個陣列:
array01 at host: 1.2.3.4 with api-token:T-7c7a*****f23e
陣列02 主機:1.2.3.5,帶 api-token:T-f2e0*****3b8d”
定義儲存代理後,我們就可以針對兩個陣列執行查詢,例如:
「將兩個陣列的所有儲存桶、擷取名稱、原始total_used空間和來源陣列都納入單一清單。嚴格根據原始total_used值排序,不需任何轉換。提供清單中的前 15 名,並將使用的空間轉換成適當的單位進行顯示。」
我們的代理從使用get_buckets及get_file_systems對照兩個陣列收集相關資料開始:
值機員會繼續依要求使用的空間排序貯體。請注意,需要數次嘗試才能得到正確排序的提示。
從 CLI 驅動到 AI 輔助儲存管理
借助 MCP 伺服器,我們將就地部署儲存管理從嚴格的命令行驅動流程轉變為 AI 輔助的自然語言體驗。透過將 LLM 與企業級儲存裝置連結,我們不再只是擷取資料,而是動態地命令基礎架構,降低複雜性,並為更智慧、更有效率的工作流程開啟大門。
但這只是個開端。代理自動化正在重塑企業技術,儲存也不例外。隨著這些功能的發展,我們正邁向 AI AI 驅動的儲存管理不僅方便,而且具有競爭優勢的未來。問題不在於這是否會成為新的標準,而是多快。
您準備好採取下一步了嗎?
Free Test Drive
Explore FlashBlade in our virtual lab.