IBM Storage Insights MCP Server
Enables AI agents to integrate with IBM Storage Insights for seamless observability and diagnosis of registered storage assets. It provides tools to retrieve alerts, performance metrics, and system configurations via the IBM Storage Insights External APIs.
README
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 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_ratevolume_overall_write_io_ratevolume_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 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_ratevolume_write_data_ratevolume_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 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_timevolume_write_response_timevolume_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 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_sizevolume_write_transfer_sizevolume_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 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
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 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_capacityavailable_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
volumespoolsenclosuresdrivesfc-portsip-portshost-connectionsio-groupsmanaged-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
- Install uv : Refer Installing UV section to install uv.
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
-
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.pyThe inspector will provide a URL you can open in your browser to see logs and send requests manually.
-
Optionally, change
LOG_LEVELin .env file and set it toDEBUGto 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.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。