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 .
- 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
Listed below are the tools which are presently exposed thought the MCP server:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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 typesduration
(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
- 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 typesduration
(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
- 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 typesduration
(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
- 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 typesduration
(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
- 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 typesduration
(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
- 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 typesduration
(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
- 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
- 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.
- 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
- Install uv : Refer Installing UV section to install uv.
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)>
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"
]
}
}
}
-
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.
-
Optionally, change
LOG_LEVEL
in .env file and set it toDEBUG
to collect debug logs from the server.
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
Contributions are welcome! Feel free to open an issue or a pull request if you have any suggestions, bug reports, or improvements to propose.
This project is licensed under the Apache License, Version 2.0.