Skip to main content

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.

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.

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.

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.

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.

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

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

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

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

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

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

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

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.

💬 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

🧪 Setup

Set up your environment

Storage Insights Credentials

Tools in this MCP Server invokes IBM Storage Insights APIs and hence needs Storage Insights tenant ID and API key for a working setup. Refer Generating a REST API key to generate REST API key for your tenant ID.

Add below values to src/si_mcp_server_oss/.env file:

DEFAULT_SI_TENANT_ID =  <Your Storage Insights tenant ID>
DEFAULT_SI_API_KEY = <Your Storage Insights External Rest API key>
ADDITIONAL_TENANT_API_MAPPING = <Additional tenant id and API key mapping if you want the server to support multiple tenants (optional)>
LOG_FILE_PATH = <Directory path to store mcp server logs (optional)>
LOG_LEVEL = <Log level fo the configured logger (optional)>
CONFIG_FILE_PATH = <Path to the config file (optional)>

🖥️ Usage with Claude Desktop

Add the following configuration to your claude_desktop_config.json:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "si_mcp_server": {
      "command": "uv",
      "args": [
        "--directory",
        "/ABSOLUTE/PATH/TO/PARENT/FOLDER/si-mcp-server-oss/src/si_mcp_server_oss",
        "run",
        "server.py"
      ]
    }
  }
}

🐞 Testing and Debugging

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

    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.

Running MCP server with Streamable HTTP Transport

This MCP servers is configured to communicate over standard input/output (transport=stdio), but can be re-configured for Streamable HTTP. To setup streamable HTTP please refer Authentication and Streamable HTTP

🤝 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.

Metadata

Release files for iflow-mcp_ibm-si-mcp-server-oss 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for iflow-mcp_ibm-si-mcp-server-oss 0.1.0
File Size Uploaded
iflow_mcp_ibm_si_mcp_server_oss-0.1.0.tar.gz 16.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for iflow-mcp_ibm-si-mcp-server-oss 0.1.0
File Interpreter ABI Platform
iflow_mcp_ibm_si_mcp_server_oss-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 32.4 kB

Release files / iflow_mcp_ibm_si_mcp_server_oss-0.1.0.tar.gz

Download URL iflow_mcp_ibm_si_mcp_server_oss-0.1.0.tar.gz
Size 16.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f121fc20a47383849341bcb97d3fe7ba08c862d5db74523ac3f8240d2fabe4a3
BLAKE2b-256 checksum
How to use checksums
b44c2aabe6be3449b73f114a8365ade5540f90bd43ab26ef6b363f39c058c178
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release files / iflow_mcp_ibm_si_mcp_server_oss-0.1.0-py3-none-any.whl

Download URL iflow_mcp_ibm_si_mcp_server_oss-0.1.0-py3-none-any.whl
Size 15.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b774d104c33d32c8dc7e9a7dab5d551ac0efc20859b4b52e00b0a30dd2b50df
BLAKE2b-256 checksum
How to use checksums
9f7403618672da4f9c58721f25268f93cacc7af141dde6c0914c90ff4e9e1deb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page