IBM FlashSystem存储管理服务器

一个基于Model Context Protocol的服务器,使AI代理和LLM能够通过标准化接口管理IBM FlashSystem存储系统,实现存储卷、主机配置、快照和系统监控等功能。

  • by IBM
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 IBM/ibm-flashsystems-mcpserver

使用说明

IBM FlashSystem MCP服务器

一种模型上下文协议(MCP)服务器,使AI代理和LLM能够通过标准化接口管理IBM FlashSystem存储系统。该服务器弥合了人工智能自动化和企业存储管理之间的差距,使智能代理能够安全高效地执行存储操作。

🎯 概述

IBM FlashSystem MCP服务器为AI代理提供了以下能力:

  • 管理存储卷:创建、调整大小、重命名和组织卷
  • 配置主机:设置光纤通道、iSCSI和NVMe主机连接
  • 处理快照:创建和管理卷和卷组快照
  • 管理卷组:使用复制和快照策略组织卷
  • 监控系统:查询系统信息和运行状况
  • 控制分区:查看存储分区

建立在 模型上下文协议,此服务器可与兼容MCP的AI客户端(如Claude Desktop)无缝集成,允许与IBM FlashSystem存储基础架构进行自然语言交互。

📋 目录

🔧 先决条件

  • python:3.12或更高
  • IBM闪存系统:管理员访问一个或多个IBM FlashSystem系统
  • REST API访问:具有适当权限的有效凭据
  • 网络:与FlashSystem管理接口的HTTPS连接(默认端口7443)

支持的IBM FlashSystem代码级别

  • IBM存储虚拟化版本9.1.0及更高版本

📦 安装

步骤1:克隆存储库

git clone https://github.com/IBM/ibm-flashsystems-mcpserver.git
cd ibm-flashsystems-mcpserver

步骤2:选择安装方法

选项A:使用pip(全局或虚拟环境)

使用 pip 要安装到您的活动Python环境(全局Python或激活的虚拟环境)中:

# Create and activate a virtual environment (recommended)
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install the package in editable mode
pip install -e .

选项B:使用uv(快速、隔离开发)

使用 uv 对于具有自动虚拟环境管理的快速安装:

# uv automatically creates and manages a virtual environment
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install the package in editable mode (faster than pip)
uv pip install -e .

步骤3:验证安装

如果你使用pip(选项A):

python -c "import flashsystem_mcp; print('Installation successful!')"

如果您使用紫外线(选项B):

# Option 1: With activated virtual environment
python -c "import flashsystem_mcp; print('Installation successful!')"

# Option 2: Using uv run (without activating venv)
uv run python -c "import flashsystem_mcp; print('Installation successful!')"

🚀 快速开始

1.创建配置文件

创建配置文件 mcp_server_config.json:

{
  "flashsystems": {
    "production-fs": {
      "name": "production-fs",
      "rest_base_url": "https://flashsystem.example.com:7443",
      "rest_username": "admin",
      "rest_password_file": "/secure/path/to/password_file",
      "verify_tls": true,
      "description": "Production FlashSystem"
    }
  },
  "default_flashsystem": "production-fs"
}

2.创建安全密码文件

# Create password file with secure permissions
echo "your_password_here" > /secure/path/to/password_file
chmod 600 /secure/path/to/password_file

重要:密码文件必须具有仅限所有者的读/写权限(Unix/Linux上为0600或0400,Windows上为受限ACL)。

3.启动服务器

# Basic usage
python -m flashsystem_mcp_server mcp_server_config.json

# With custom log directory
python -m flashsystem_mcp_server mcp_server_config.json /path/to/logs

命令行参数:

  • 论点1 (必需):配置文件的路径
  • 论点2 (可选):日志目录的路径(默认: ./logs)

登录中: 服务器输出结构化的JSON日志,这些日志可以很容易地被纳入监控和可观察性平台:

  • 格式:JSON(每行一个日志条目)
  • 位置:可配置日志目录(默认: ./logs/flashsystem_mcp_server.log)
  • 整合:兼容Prometheus、Grafana Loki、ELK Stack、Splunk和其他日志聚合工具
  • 领域:包括时间戳(ISO 8601)、日志级别、相关性ID、操作细节和执行指标

日志条目示例:

{
  "timestamp": "2026-01-15T10:30:45.123456Z",
  "level": "info",
  "event": "Tool execution completed",
  "correlation_id": "01HQXYZ123ABC",
  "tool_name": "lsvdisk",
  "execution_time": 0.234,
  "api_execution_time": 0.189,
  "transport": "rest",
  "rest_base_url": "https://flashsystem.example.com:7443",
  "result_count": 15,
  "success": true
}

4.连接MCP客户端

Claude桌面配置

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "ibm-flashsystem": {
      "command": "python",
      "args": [
        "-m",
        "flashsystem_mcp_server",
        "/path/to/mcp_server_config.json",
        "/path/to/logs"
      ]
    }
  }
}

备注:第二个参数(日志目录)是可选的。如果省略,日志将写入 ./logs 在当前工作目录中。

⚙️ 配置

配置文件结构

{
  "flashsystems": {
    "system-name": {
      "name": "system-name",
      "rest_base_url": "https://hostname:7443",
      "rest_username": "username",
      "rest_password_file": "/path/to/password_file",
      "verify_tls": true,
      "description": "Optional description"
    }
  },
  "default_flashsystem": "system-name"
}

配置选项

选项 类型 必填 描述
name string 是 FlashSystem的唯一标识符
rest_base_url string 是 基本URL(例如。, https://10.0.0.5:7443)
rest_username string 是 REST API用户名
rest_password_file string 是 安全密码文件的路径
verify_tls boolean 否 启用TLS证书验证(默认值: true)
description string 否 人类可读的描述

环境变量

您可以使用环境变量覆盖配置:

export FLASHSYSTEM_REST_BASE_URL="https://flashsystem.example.com:7443"
export FLASHSYSTEM_REST_USERNAME="admin"
export FLASHSYSTEM_REST_PASSWORD_FILE="/secure/path/to/password_file"

多闪光灯系统

为多站点管理配置多个系统:

{
  "flashsystems": {
    "site-a": {
      "name": "site-a",
      "rest_base_url": "https://site-a.example.com:7443",
      "rest_username": "admin",
      "rest_password_file": "/secure/site-a-password",
      "verify_tls": true
    },
    "site-b": {
      "name": "site-b",
      "rest_base_url": "https://site-b.example.com:7443",
      "rest_username": "admin",
      "rest_password_file": "/secure/site-b-password",
      "verify_tls": true
    }
  },
  "default_flashsystem": "site-a"
}

🛠️ 可用工具

服务器公开了20多个MCP工具用于存储管理:

卷管理

工具 说明
ibm_flashsystem_list_volumes 列出所有卷或获取特定卷的详细信息
ibm_flashsystem_create_volume 创建具有指定大小和池的新卷
ibm_flashsystem_rename_volume 更改现有卷的名称
ibm_flashsystem_resize_volume 扩大或缩小体积
ibm_flashsystem_change_volume_volumegroup 将卷移动到其他卷组
ibm_flashsystem_list_storage_pools 列出可用存储池(mdisk组)

主机管理

工具 说明
ibm_flashsystem_list_hosts 列出所有主机或获取特定主机的详细信息
ibm_flashsystem_create_host_fc 创建光纤通道主机
ibm_flashsystem_create_host_iscsi 创建iSCSI主机
ibm_flashsystem_create_host_nvme 创建NVMe主机
ibm_flashsystem_map_volume_to_host 将卷映射到主机以供访问
ibm_flashsystem_modify_host 修改主机属性
ibm_flashsystem_list_portsets 列出可用端口集

主机群集管理

工具 说明
ibm_flashsystem_create_host_cluster 创建主机群集以实现高可用性
ibm_flashsystem_list_host_clusters 列出所有主机群集
ibm_flashsystem_add_host_to_cluster 将主机添加到现有群集中
ibm_flashsystem_map_volume_to_host_cluster 将卷映射到主机群集

卷组管理

工具 说明
ibm_flashsystem_create_volume_group 创建新的卷组
ibm_flashsystem_list_volume_groups 列出所有卷组
ibm_flashsystem_rename_volume_group 重命名卷组
ibm_flashsystem_modify_volumegroup_replication_policy 更改复制策略
ibm_flashsystem_modify_volumegroup_snapshot_policy 更改快照策略

快照管理

工具 说明
ibm_flashsystem_create_snapshot 创建卷或卷组的快照
ibm_flashsystem_list_volume_snapshots 列出特定卷的快照
ibm_flashsystem_list_volumegroup_snapshots 列出卷组的快照
ibm_flashsystem_list_snapshot_policies 列出可用快照策略

系统管理

工具 说明
ibm_flashsystem_get_system_info 获取系统信息和运行状况
ibm_flashsystem_list_partitions 列出存储分区
ibm_flashsystem_list_replication_policies 列出复制策略

💡 使用示例

示例1:列出所有卷

用户请求:

"List all volumes on the FlashSystem"

MCP工具调用:

ibm_flashsystem_list_volumes

请求:

{
  "volume_name": null,
  "flashsystem_name": null
}

答复:

{
  "success": true,
  "data": [
    {
      "name": "volume1",
      "capacity": "100GB",
      "volume_group_name": "prod-vg"
    },
    {
      "name": "volume2",
      "capacity": "500GB",
      "volume_group_name": "dev-vg"
    }
  ],
  "error_message": null,
  "error_type": null
}

示例2:创建新卷

用户请求:

"Create a 200MB volume in mdg0 pool and add it to volumegroup1"

MCP工具调用:

ibm_flashsystem_create_volume

请求:

{
  "pool": "mdg0",
  "size": 200,
  "unit": "mb",
  "volume_group": "volumegroup1"
}

答复:

{
  "success": true,
  "data": [
    {
      "id": "24",
      "message": "Volume created successfully"
    }
  ],
  "error_message": null,
  "error_type": null
}

示例3:列出存储池

用户请求:

"Show me all the volume pools"

MCP工具调用:

ibm_flashsystem_list_storage_pools

请求:

{}

答复:

{
  "success": true,
  "data": [
    {
      "name": "mdg0",
      "free_capacity": "21.16TB"
    },
    {
      "name": "mdg0_child0",
      "free_capacity": "440.00GB"
    },
    {
      "name": "mdg0_child1",
      "free_capacity": "433.00GB"
    }
  ],
  "error_message": null,
  "error_type": null
}

示例4:创建卷组

用户请求:

"Make me a volume group in myPartition"

MCP工具调用:

ibm_flashsystem_create_volume_group

请求:

{
  "partition": "myPartition"
}

答复:

{
  "success": true,
  "data": [
    {
      "id": "12",
      "message": "Volume group created successfully"
    }
  ],
  "error_message": null,
  "error_type": null
}

示例5:多系统管理

用户请求:

"List volumes on site-b FlashSystem"

MCP工具调用:

ibm_flashsystem_list_volumes

请求:

{
  "volume_name": null,
  "flashsystem_name": "site-b"
}

答复:

{
  "success": true,
  "data": [
    {
      "name": "site-b-vol1",
      "capacity": "1TB",
      "volume_group_name": "backup-vg"
    }
  ],
  "error_message": null,
  "error_type": null
}

🔒 安全

密码文件安全

服务器对密码文件执行严格的安全要求:

Unix/Linux/macOS:

  • 文件必须具有权限 0600 (仅限所有者读/写)或 0400 (所有者只读)
  • 不允许任何组或其他权限

窗户:

  • 文件必须具有ACL,仅限制所有者和受信任的系统帐户的访问
  • 其他用户或组无法访问

TLS/SSL配置

在生产环境中始终使用TLS验证:

{
  "verify_tls": true
}

对于具有自签名证书的开发/测试:

{
  "verify_tls": false
}

🔨 发展

设置开发环境

# Clone the repository
git clone https://github.com/IBM/ibm-flashsystems-mcpserver.git
cd ibm-flashsystems-mcpserver

# Create virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install development dependencies
pip install -e ".[dev]"

项目结构

ibm-flashsystems-mcpserver/
├── src/
│   ├── flashsystem_mcp/          # Main MCP server implementation
│   │   ├── server.py             # Server initialization
│   │   ├── config.py             # Configuration management
│   │   ├── executor.py           # Tool execution logic
│   │   ├── client_factory.py     # FlashSystem client factory
│   │   └── tools/                # MCP tool implementations
│   ├── flashrest/                # REST API client
│   │   ├── client.py             # HTTP client
│   │   ├── endpoints.py          # API endpoints
│   │   └── api_result.py         # Result types
│   ├── fs_core/                  # Core types and utilities
│   │   ├── fs_requests.py        # Request models
│   │   ├── fs_responses.py       # Response models
│   │   └── fs_types.py           # Type definitions
│   └── config_models.py          # Configuration models
├── tests/                        # Test suite
├── pyproject.toml               # Project metadata and dependencies
└── README.md                    # This file

代码质量工具

# Format code
ruff format .

# Lint code
ruff check .

# Type checking
mypy src/

# Run all checks
ruff check . && ruff format --check . && mypy src/

🧪 测试

运行测试

# Run all tests
pytest

# Run with coverage
pytest --cov=src --cov-report=html

# Run specific test file
pytest tests/test_mcp_tools/test_volume_tools.py

# Run with verbose output
pytest -v

# Run and stop on first failure
pytest -x

测试结构

  • tests/test_mcp_tools/ -MCP工具集成测试
  • tests/test_client_endpoints/ -REST API端点测试
  • tests/test_configuration/ -配置验证测试
  • tests/test_security/ -安全和权限测试

🐛 故障排除

调试日志记录

启用调试日志以进行故障排除:

import logging
logging.basicConfig(level=logging.DEBUG)

或者设置环境变量:

export LOG_LEVEL=DEBUG

📄 许可证

此项目根据Apache许可证2.0获得许可-请参阅 许可证 文件以获取详细信息。

Copyright 2026 IBM Corporation

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

📞 支持

IBM支持

有关IBM FlashSystem产品支持,请通过您的正常支持渠道联系IBM支持部门。

🙏 致谢