longhorn-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@longhorn-mcplist all Longhorn volumes and their replica counts"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
longhorn-mcp
An MCP server for the Longhorn distributed storage manager API. Full read/write coverage of Longhorn's REST API (volumes, snapshots, backups, backing images, nodes, settings, engine images, recurring jobs, and more), a --read-only mode, both stdio and Streamable HTTP transports, and an official Helm chart.
AI-assisted development. The majority of this codebase — implementation, tests, and this documentation — was written with AI assistance (Claude). Review accordingly, especially before running write-mode tools against a production Longhorn cluster.
Quick start
npx -y longhorn-mcp --longhorn-url=http://<longhorn-manager-host>:9500Longhorn's manager API is unauthenticated — reachability is the only access control. If you're not running this against an in-cluster Longhorn (see Connecting popular MCP clients → Remote/HTTP), you'll need a VPN, SSH tunnel, or kubectl port-forward svc/longhorn-backend 9500:9500 to reach it safely. Never expose Longhorn's manager API directly to an untrusted network.
Related MCP server: Rancher MCP Server
CLI reference
Flag | Default | Description |
| off (stdio) | Serve Streamable HTTP instead of stdio. |
|
| HTTP listen port (with |
|
| HTTP listen address (with |
| off | Register only read tools; the client also refuses any non-GET request. |
|
| Base URL of the Longhorn manager API. Standard Kubernetes cluster-local DNS by default — a cluster with a custom cluster domain overrides this via |
|
| Comma-separated |
Deploying with Helm
An official chart is published alongside every release:
helm install longhorn-mcp oci://ghcr.io/rafaelgaspar/longhorn-mcp/charts/longhorn-mcp --version 0.1.0 \
--set args[0]=--http \
--set args[1]=--longhorn-url=http://longhorn-backend.longhorn-system.svc.cluster.local:9500Key values:
Value | Default | Notes |
|
| |
|
| Append |
|
| |
|
| Optional, vendor-neutral core Gateway API |
|
|
Full schema: chart/values.yaml / chart/values.schema.json.
The chart is also attached as an OCI referrer directly on the image manifest, for tooling that discovers charts via the OCI Referrers API instead of pulling a separately tagged artifact:
oras discover ghcr.io/rafaelgaspar/longhorn-mcp:0.1.0Connecting popular MCP clients
Each client's exact config file path/key can drift between versions — check the client's own docs if these don't work. All of them accept the same underlying command/args shape for a local stdio server.
Claude Code
claude mcp add longhorn -- npx -y longhorn-mcp --longhorn-url=http://localhost:9500Claude Desktop
Edit claude_desktop_config.json:
{
"mcpServers": {
"longhorn": {
"command": "npx",
"args": ["-y", "longhorn-mcp", "--longhorn-url=http://localhost:9500"]
}
}
}Cursor
Edit .cursor/mcp.json (project-scoped) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"longhorn": {
"command": "npx",
"args": ["-y", "longhorn-mcp", "--longhorn-url=http://localhost:9500"]
}
}
}VS Code (Copilot Chat)
.vscode/mcp.json uses a servers key (not mcpServers):
{
"servers": {
"longhorn": {
"command": "npx",
"args": ["-y", "longhorn-mcp", "--longhorn-url=http://localhost:9500"]
}
}
}Remote/HTTP
To point a client at an already-running Streamable HTTP instance (e.g. this server deployed in-cluster, see Deploying with Helm) instead of spawning a local npx process, use that client's remote-MCP configuration with the server's /mcp URL. Clients without native remote-HTTP MCP support can bridge via mcp-remote.
Running behind a gateway
Longhorn's manager API — and by extension this server — has no authentication of its own; reachability is the access control (see Quick start). For a multi-tenant or externally-reachable deployment, fronting --http mode with an MCP-aware gateway (e.g. Envoy AI Gateway or similar) for auth, rate limiting, and routing is a good idea. It's not required, though — a private network boundary (VPN, SSH tunnel, cluster-internal only) is a perfectly reasonable standalone posture too, and is exactly what the Helm chart defaults to (route.enabled: false, no external exposure).
Destructive-action guardrails
--read-only is an enforced, structural guarantee (see below); the following is a softer, model-facing one — it shapes what a well-behaved LLM should do, not what the server can refuse.
Every tool whose action is destructive or hard to reverse (deletes, force-detaches, reverts, restores cluster-wide state, evicts a node, deploys an arbitrary engine image, redirects a backup target, etc.) has its description suffixed with an explicit instruction not to call it unless the user has explicitly authorized that specific action in the current conversation, and never proactively, speculatively, or as a side effect of an unrelated task. The server's MCP instructions field (surfaced by clients that support it, in addition to each tool's own description) repeats the same guidance at the server level as a backstop for tools called without reading their full description closely.
This is advisory, not enforced — a client or model can ignore it. It reduces the chance of an LLM calling volume_delete or systemrestore_create as an unprompted "helpful" side effect; it is not a substitute for --read-only where that's the guarantee you actually need.
Longhorn documentation links
Most tool descriptions end with a Longhorn docs: <url> link to the relevant page in Longhorn's official documentation, pinned to the Longhorn version this server's default --longhorn-url target runs (currently 1.12.0) rather than "latest," so the linked content matches the API version actually in use. A handful of tools with no clearly corresponding doc page (instancemanager_*, volumeattachment_*, longhorn_events, the longhorn_raw_request/longhorn_list_resource_types/longhorn_describe_resource_type introspection tools) don't have one.
Read-only mode
--read-only enforces itself two ways:
Registration-time filtering — every write tool is simply never advertised in
tools/list, so a read-only instance's tool set is a strict subset of the read-write one.Client-layer guard —
LonghornClientrefuses any non-GETrequest regardless of which tool triggered it. This is what protectslonghorn_raw_request, the one escape-hatch tool that stays registered in both modes (its write-ness isn't known until it's actually called).
Run both a read-write and a read-only instance under different names in the same client config if you want an LLM session to default to read-only but have an explicit, differently-named write-capable tool set available:
{
"mcpServers": {
"longhorn": { "command": "npx", "args": ["-y", "longhorn-mcp", "--longhorn-url=http://localhost:9500"] },
"longhorn-readonly": { "command": "npx", "args": ["-y", "longhorn-mcp", "--read-only", "--longhorn-url=http://localhost:9500"] }
}
}Development
npm ci
npm run typecheck
npm test
npm run buildscripts/introspect-schema.ts dumps a live Longhorn manager's self-described /v1/schemas — useful for cross-checking this package's hand-written tool coverage against whatever Longhorn version you're actually running:
npm run introspect-schema -- http://localhost:9500
npm run introspect-schema -- http://localhost:9500 volume # one resource type in fullContributing
Contributions are welcome — see CONTRIBUTING.md for dev setup, coding conventions, and how releases work.
License
MIT — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityCmaintenanceModel Context Protocol (MCP) server for the Rancher ecosystem: multi-cluster Kubernetes, Harvester HCI (VMs, storage, networks), and Fleet GitOps.1012Apache 2.0
- FlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server that exposes the Rancher Manager v2.x API to LLM clients.113
- AlicenseAqualityAmaintenanceMCP server for the Hetzner Cloud API. Manage servers, networks, volumes, firewalls, load balancers, and more through the Model Context Protocol.1002224Functional Source , Version 1.1, MIT Future
- Alicense-qualityBmaintenanceA standalone MCP server that exposes Rancher-side tools, forwards Authorization headers or uses configured credentials, and supports HTTP and stdio transports.MIT
Related MCP Connectors
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
MCP server for interacting with the Supabase platform
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rafaelgaspar/longhorn-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server