NE

NetApp MCP Server: Metrics, Volumes, Search

Manage metrics, volumes, and search across your NetApp systems with the MCP server for fast monitoring and control.

Quick Install
npx -y @NetApp/mcp

Overview

The NetApp MCP (Model Context Protocol) server provides a lightweight API layer to monitor and manage storage systems at scale. It centralizes telemetry (metrics), inventory (volumes), and content/metadata search across one or more NetApp systems so monitoring, reporting, and automation tools can work against a single, consistent endpoint.

MCP is useful when you need to aggregate data from multiple clusters or arrays into a single view, export metrics to Prometheus-compatible systems, or run quick searches across volumes and snapshots. It is intended for developers and SREs who want a programmatic interface to storage telemetry and control without having to directly query each system’s native API.

Features

  • Aggregated metrics export in Prometheus-friendly format for monitoring stacks
  • Volume inventory endpoint to list volumes, attributes, and health across systems
  • Full-text and metadata search over volumes, snapshots, and other indexed entities
  • Multi-system configuration to connect and normalize multiple NetApp endpoints
  • Simple HTTP API that can be scraped, queried, or integrated into automation pipelines
  • Configurable auth and TLS support for secure deployments
  • Lightweight server written to be container-friendly and easy to run locally

Installation / Configuration

Clone and build from source (Go required):

git clone https://github.com/NetApp/mcp.git
cd mcp
# build the server binary
go build ./cmd/mcp-server -o mcp-server

Run the server with a configuration file (example path and flag):

./mcp-server --config /etc/mcp/config.yaml
# or via environment variable
export MCP_CONFIG=/etc/mcp/config.yaml
./mcp-server

Example minimal YAML configuration:

# /etc/mcp/config.yaml
listen: "0.0.0.0:8080"
tls:
  enabled: false

systems:
  - name: "cluster-a"
    host: "10.0.0.10"
    auth:
      type: "token"
      token: "REPLACE_WITH_TOKEN"
  - name: "cluster-b"
    host: "10.0.0.11"
    auth:
      type: "basic"
      username: "apiuser"
      password: "secretpassword"

prometheus:
  enabled: true
  path: "/metrics"

Run in Docker (build and run):

# build image locally
docker build -t netapp/mcp:local .

# run container
docker run -p 8080:8080 \
  -v /etc/mcp/config.yaml:/app/config.yaml:ro \
  netapp/mcp:local \
  --config /app/config.yaml

Configuration notes:

  • The exact auth fields depend on the systems you integrate; tokens or basic auth are common.
  • TLS can be enabled with certificates for production deployments.
  • The Prometheus endpoint path is configurable; default is /metrics.

Available Resources

Common HTTP endpoints (paths may be prefixed with /api depending on packaging):

PathMethodDescription
/metricsGETPrometheus-formatted metrics of aggregated telemetry
/volumesGETList volumes across configured systems, supports filters
/volumes/{id}GETGet details for a single volume
/searchGETFull-text / metadata search with query parameters
/healthGETBasic liveness and readiness checks

Example: fetch aggregated metrics (scrape target for Prometheus)

curl http://localhost:8080/metrics

Example: search volumes by a keyword or metadata field

# search query parameter q supports simple terms and expressions
curl "http://localhost:8080/search?q=project:alpha+AND+size:>1TB"

Available integrations and tooling:

  • Use the /metrics endpoint as a Prometheus scrape target.
  • Build Grafana dashboards on top of scraped metrics or use volume endpoints for inventory panels.
  • Automate workflows by calling /volumes and /search from scripts or orchestration tools.

Use Cases

  1. Centralized monitoring with Prometheus

    • Configure MCP as a scrape target in Prometheus:
      • prometheus.yml: scrape_configs:
        • job_name: ‘netapp-mcp’ static_configs:
          • targets: [‘mcp-host:8080’]
    • Advantages: single endpoint for metrics from multiple clusters, simpler alerting rules.
  2. Inventory and reporting

    • Periodically call /volumes to produce CSV reports of capacity, provisioning type, and age:
curl -s http://mcp-host:8080/volumes | jq -r '.volumes[] | [.name,.system,.size,.provision_type] | @csv' > volumes.csv
  1. Automation and troubleshooting using search
    • Find orphaned large volumes or snapshots across clusters:
curl "http://mcp-host:8080/search?q=size:>=5TB+AND+attached:false"
  • Use the results to drive cleanup scripts or ticketing systems.

Next Steps

  • Review and adapt the provided example config to your authentication method.
  • Integrate /metrics into your Prometheus configuration and create Grafana dashboards.
  • Use the /search and /volumes endpoints to bootstrap automation and inventory workflows.
  • See the GitHub repository for code, issues, and contribution guidelines: https://github.com/NetApp/mcp