Labsco
IBM logo

IBM Storage Insights MCP Server

โœ“ Officialโ˜… 9

from IBM

An open-source MCP server providing real-time observability for IBM Storage Insights assets.

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedFreeQuick setup

IBM Storage Insights MCP Server

DISCLAIMER: This is a community-maintained project and is not officially affiliated with, endorsed by, or supported by IBM. This MCP server utilizes the IBM Storage Insights External APIs.

This open-sourced Model Context Protocol (MCP) server will help IBM Storage Insights to integrate in the Agentic-AI ecosystem. It will help users to bring their AI-Agents for seamless observability and diagnosis of their Storage Assets registered with IBM Storage Insights .

๐Ÿš€ Features

  • Observability Tools: Leverage key IBM Storage Insights monitoring capabilities via an MCP interface.
  • Extensible Design: Easily integrate additional Storage Insights APIs for future expansions.
  • Pythonic: Allowing ease of use and extension for AI developers

๐Ÿ› ๏ธ Tools

Listed below are the tools which are presently exposed thought the MCP server:

1. fetch_tenant_alerts

  • Description: Retrieve a list of alerts for a tenant.
  • Inputs:
    • tenant_id_input (optional string): Storage Insights Tenant id.
  • Returns: List of alerts present for the tenant.
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Fetch alerts using default tenant ID from .env
    "Get all alerts for my tenant"
    
    # Example 2: Fetch alerts for a specific tenant
    "Show me alerts for tenant ID 01f13d45-27fd-1e2d-1234-66e2fdea0987"
    
    # Example 3: Check critical alerts
    "What are the current alerts on my storage systems?"

2. fetch_tenant_notifications

  • Description: Retrieve a list of notifications for a tenant.
  • Inputs:
    • tenant_id_input (optional string): Storage Insights Tenant id.
  • Returns: List of notifications present for the tenant.
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get all notifications using default tenant
    "Show me all notifications for my tenant"
    
    # Example 2: Fetch notifications for specific tenant
    "Get notifications for tenant 01f13d45-27fd-1e2d-1234-66e2fdea0987"
    
    # Example 3: Check recent notifications
    "What notifications do I have on my storage infrastructure?"

3. fetch_storage_systems

  • Description: Get all storage systems added to the tenant for monitoring tenant.
  • Inputs:
    • tenant_id_input (optional string): Storage Insights Tenant id.
  • Returns: List of storage systems present on the tenant.
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: List all storage systems
    "Show me all storage systems in my tenant"
    
    # Example 2: Get storage systems for specific tenant
    "List storage systems for tenant 01f13d45-27fd-1e2d-1234-66e2fdea0987"
    
    # Example 3: Check available systems
    "What storage systems are being monitored?"

4. fetch_system_notifications

  • Description: Get notifications of system under the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
  • Returns: List of notifications for a system represented by unique system id.
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get notifications for a specific system
    "Show notifications for system 5249e140-3d44-11f1-8e40-a94d2a0672fd"
    
    # Example 2: Check system-specific notifications
    "What notifications exist for storage system 5249e140-3d44-11f1-8e40-a94d2a0672fd?"
    
    # Example 3: Get notifications for system in specific tenant
    "Get notifications for system 5249e140-3d44-11f1-8e40-a94d2a0672fd in tenant 01f13d45-27fd-1e2d-1234-66e2fdea0987"

5. fetch_system_details

  • Description: Get details for given system present on the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
  • Returns: Details of a system represented by unique system id.
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get complete details of a system
    "Show me details for storage system 5249e140-3d44-11f1-8e40-a94d2a0672fd"
    
    # Example 2: Check system configuration
    "What are the details of system 5249e140-3d44-11f1-8e40-a94d2a0672fd?"
    
    # Example 3: Get system info for specific tenant
    "Get details for system 5249e140-3d44-11f1-8e40-a94d2a0672fd in tenant 01f13d45-27fd-1e2d-1234-66e2fdea0987"

6. fetch_system_io_rate

  • Description: Get io rate for a system present on the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
    • metric_types (optional list of strings): performance metric types
    • duration (optional string): duration for the data fetch (e.g. 20m, 1h, 1d)
  • Returns: Requested IO Rate for the given system represented by unique system id.
  • Supported IO rate metrics
    • volume_overall_read_io_rate
    • volume_overall_write_io_rate
    • volume_overall_total_io_rate
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get IO rate for last hour
    "Show me IO rate for system 5249e140-3d44-11f1-8e40-a94d2a0672fd for the last 1 hour"
    
    # Example 2: Get read and write IO rates for last day
    "Get read and write IO rates for system 5249e140-3d44-11f1-8e40-a94d2a0672fd over the last day"
    
    # Example 3: Check total IO rate for last 20 minutes
    "What is the total IO rate for system 5249e140-3d44-11f1-8e40-a94d2a0672fd in the last 20 minutes?"

7. fetch_system_data_rate

  • Description: Get data rate for a system present on the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
    • metric_types (optional list of strings): performance metric types
    • duration (optional string): duration for the data fetch (e.g. 20m, 1h, 1d)
  • Returns: Requested Data Rate for the given system represented by unique system id.
  • Supported IO rate metrics
    • volume_read_data_rate
    • volume_write_data_rate
    • volume_total_data_rate
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get data rate for last hour
    "Show me data rate for system 5249e140-3d44-11f1-8e40-a94d2a0672fd for the past hour"
    
    # Example 2: Get read data rate for last day
    "What is the read data rate for system 5249e140-3d44-11f1-8e40-a94d2a0672fd over the last 24 hours?"
    
    # Example 3: Check total data throughput
    "Get total data rate for system 5249e140-3d44-11f1-8e40-a94d2a0672fd in the last 30 minutes"

8. fetch_system_response_time

  • Description: Get response time for a system present on the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
    • metric_types (optional list of strings): performance metric types
    • duration (optional string): duration for the data fetch (e.g. 20m, 1h, 1d)
  • Returns: Requested Response time for the given system represented by unique system id.
  • Supported IO rate metrics
    • volume_read_response_time
    • volume_write_response_time
    • volume_total_response_time
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get response time for last hour
    "Show me response time for system 5249e140-3d44-11f1-8e40-a94d2a0672fd for the last hour"
    
    # Example 2: Check read response time
    "What is the read response time for system 5249e140-3d44-11f1-8e40-a94d2a0672fd over the last day?"
    
    # Example 3: Get total response time metrics
    "Get total response time for system 5249e140-3d44-11f1-8e40-a94d2a0672fd in the last 20 minutes"

9. fetch_system_transfer_size

  • Description: Get transfer size for a system present on the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
    • metric_types (optional list of strings): performance metric types
    • duration (optional string): duration for the data fetch (e.g. 20m, 1h, 1d)
  • Returns: Requested transfer size for the given system represented by unique system id.
  • Supported IO rate metrics
    • volume_read_transfer_size
    • volume_write_transfer_size
    • volume_total_transfer_size
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get transfer size for last hour
    "Show me transfer size for system 5249e140-3d44-11f1-8e40-a94d2a0672fd for the last hour"
    
    # Example 2: Check write transfer size
    "What is the write transfer size for system 5249e140-3d44-11f1-8e40-a94d2a0672fd over the last day?"
    
    # Example 3: Get total transfer size metrics
    "Get total transfer size for system 5249e140-3d44-11f1-8e40-a94d2a0672fd in the last 30 minutes"

10. fetch_system_cpu_utilization

  • Description: Get cpu utilization for a system present on the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
    • metric_types (optional list of strings): performance metric types
    • duration (optional string): duration for the data fetch (e.g. 20m, 1h, 1d)
  • Returns: Requested cpu utilization for the given system represented by unique system id.
  • Supported IO rate metrics
    • cpu_utilization
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get CPU utilization for last hour
    "Show me CPU utilization for system 5249e140-3d44-11f1-8e40-a94d2a0672fd for the last hour"
    
    # Example 2: Check CPU usage over last day
    "What is the CPU utilization for system 5249e140-3d44-11f1-8e40-a94d2a0672fd over the last 24 hours?"
    
    # Example 3: Monitor CPU performance
    "Get CPU utilization for system 5249e140-3d44-11f1-8e40-a94d2a0672fd in the last 20 minutes"

11. fetch_system_capacity

  • Description: Get capacity for a system present on the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
    • metric_types (optional list of strings): performance metric types
    • duration (optional string): duration for the data fetch (e.g. 20m, 1h, 1d)
  • Returns: Requested capacity for the given system represented by unique system id.
  • Supported IO rate metrics
    • used_capacity
    • available_capacity
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get capacity metrics for last hour
    "Show me capacity metrics for system 5249e140-3d44-11f1-8e40-a94d2a0672fd for the last hour"
    
    # Example 2: Check available capacity
    "What is the available capacity for system 5249e140-3d44-11f1-8e40-a94d2a0672fd?"
    
    # Example 3: Monitor used capacity over time
    "Get used capacity for system 5249e140-3d44-11f1-8e40-a94d2a0672fd over the last day"

12. fetch_system_components

  • Description: Get component for a system present on the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • comp_type (string): name of the component to fetch.
    • tenant_id_input (optional string): Storage Insights Tenant id.
  • Returns: Requested capacity for the given system represented by unique system id.
  • Supported components
    • volumes
    • pools
    • enclosures
    • drives
    • fc-ports
    • ip-ports
    • host-connections
    • io-groups
    • managed-disks
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get volumes for a system
    "Show me all volumes for system 5249e140-3d44-11f1-8e40-a94d2a0672fd"
    
    # Example 2: List storage pools
    "What pools are configured on system 5249e140-3d44-11f1-8e40-a94d2a0672fd?"
    
    # Example 3: Check FC ports
    "Get fc-ports for system 5249e140-3d44-11f1-8e40-a94d2a0672fd"

13. fetch_system_alerts

  • Description: Get alerts of system under the tenant.
  • Inputs:
    • system_id (string): Unique system id for the system.
    • tenant_id_input (optional string): Storage Insights Tenant id.
  • Returns: List of alerts for a system represented by unique system id.
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get alerts for a specific system
    "Show me alerts for system 5249e140-3d44-11f1-8e40-a94d2a0672fd"
    
    # Example 2: Check system alerts
    "What alerts are active on system 5249e140-3d44-11f1-8e40-a94d2a0672fd?"
    
    # Example 3: Get alerts for system in specific tenant
    "Get alerts for system 5249e140-3d44-11f1-8e40-a94d2a0672fd in tenant tenant123"

๐Ÿ’ฌ Prompts

1. morning_cup_of_coffee

  • Description: Fetch storage system details, alert details and notification details in sequence with the same input. Filter the result to show only systems in error status, critical alerts and notifications.
  • Inputs:
    • tenant_id_input (optional string): Storage Insights Tenant id.
  • Returns: Prompt to execute required tools and output the result
  • Examples:
    Copy & paste โ€” that's it
    # Example 1: Get morning summary with default tenant
    "Run morning cup of coffee for my tenant"
    
    # Example 2: Get daily health check
    "Give me the morning cup of coffee report"
    
    # Example 3: Get summary for specific tenant
    "Run morning cup of coffee for tenant 01f13d45-27fd-1e2d-1234-66e2fdea0987"

๐Ÿž Testing and Debugging

  1. We recommend using the MCP Inspector for testing and debugging. You can run the inspector with:

    Copy & paste โ€” that's it
    npx @modelcontextprotocol/inspector uv --directory /ABSOLUTE/PATH/TO/PARENT/FOLDER/si-mcp-server-oss/src/si_mcp_server_oss run server.py

    The inspector will provide a URL you can open in your browser to see logs and send requests manually.

  2. Optionally, change LOG_LEVEL in .env file and set it to DEBUG to collect debug logs from the server.

๐Ÿค Contributing

Contributions are welcome! Feel free to open an issue or a pull request if you have any suggestions, bug reports, or improvements to propose.

๐Ÿ“„ License

This project is licensed under the Apache License, Version 2.0.