Commit 29b08ec4 authored by Boris Glimcher's avatar Boris Glimcher Committed by Tomasz Zawadzki
Browse files

python/mcp: adding badge and argument



/var/tmp/spdk.sock is still the default
but now also allow to connect to remote SPDK rpc

Change-Id: I980899c5e83265ca9f00ce916d223831e02d4097
Signed-off-by: default avatarBoris Glimcher <Boris.Glimcher@emc.com>
Reviewed-on: https://review.spdk.io/c/spdk/spdk/+/26133


Reviewed-by: default avatarJim Harris <jim.harris@nvidia.com>
Tested-by: default avatarSPDK Automated Test System <spdkbot@gmail.com>
Reviewed-by: default avatarTomasz Zawadzki <tomasz@tzawadzki.com>
Reviewed-by: default avatarKarol Latecki <karol.latecki@nutanix.com>
parent e436f4c3
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -55,6 +55,8 @@ For more information, see <https://spdk.io/doc/jsonrpc.html>

## Model Context Protocol (MCP)

[![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_SPDK-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=spdk&config=%7B%22name%22%3A%22spdk%22%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22spdk-mcp%22%5D%2C%22env%22%3A%7B%22SPDK_RPC_ADDRESS%22%3A%22%2Fvar%2Ftmp%2Fspdk.sock%22%7D%7D)

The [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) lets you build servers that expose
data and functionality to LLM applications in a secure, standardized way.
Think of it like a web API, but specifically designed for LLM interactions.
+8 −3
Original line number Diff line number Diff line
# SPDX-License-Identifier: BSD-3-Clause
# Copyright (C) 2025 Dell Inc, or its subsidiaries.  All rights reserved.

import os
from spdk import rpc
from spdk.rpc.client import JSONRPCClient
from mcp.server.fastmcp import FastMCP
@@ -8,8 +9,8 @@ from mcp.server.fastmcp import FastMCP
# Create an MCP server
mcp = FastMCP("SPDK")

# TODO: add tcp support and make it input argument
client = JSONRPCClient("/var/tmp/spdk.sock")
# Create an SPDK client
client = JSONRPCClient(addr=os.getenv("SPDK_RPC_ADDRESS", default="/var/tmp/spdk.sock"), port=8080)


@mcp.tool()
@@ -18,7 +19,7 @@ def spdk_get_version() -> dict:
    return rpc.spdk_get_version(client)


@mcp.resource("bdevs://all")
@mcp.tool()
def bdev_get_bdevs() -> list:
    """Get a list of block devices"""
    return rpc.bdev.bdev_get_bdevs(client)
@@ -28,3 +29,7 @@ def bdev_get_bdevs() -> list:
def bdev_malloc_create(name: str, num_blocks: int = 1024, block_size: int = 512) -> dict:
    """Create a malloc block device"""
    return rpc.bdev.bdev_malloc_create(client, num_blocks, block_size, name=name)


if __name__ == "__main__":
    mcp.run()