13
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

IBM Bob が AIX OS (IBM Power)を日本語で操作する ~ 自作MCPサーバー実装ログ ~

13
Last updated at Posted at 2026-01-06

はじめに

「堅牢な基幹システムと、最新の生成AI。この『距離』をどう埋めるか」

日々、ミッションクリティカルな領域で AIX を運用している私たちにとって、昨今のAIブームは少し遠い世界の出来事に感じられることがあります。
Web業界がAIエージェントで自動化を進める一方で、私たちは変わらず SSH で接続し、errpt を確認し、nmon でパフォーマンスを監視する──。この確実な運用スタイルこそが AIX の強みですが、「もし、この運用業務に安全に AI を組み込めたら?」 と考えたことはないでしょうか。

今回取り上げるのは、IBMのAIアシスタント IBM Bob に、Model Context Protocol (MCP) を介して AIX の操作権限を与える試みです。

2026年1月現在、AIX 用の MCP サーバーは市場に存在しません。そこで、「ないなら作る」 の精神で TypeScript を用いて(IBM Bobにお願いして) 自作しました。 本記事は、レガシーとモダンをつなぐブリッジを構築し、システム管理の新しい可能性(AIによる自律的なヘルスチェックなど)を検証したレポートです。


なぜ MCP サーバーを自作するのか?

単に AI にコマンドを教え込むだけでは、実運用には耐えられません。インフラエンジニアとして納得できる「安全性」と「確実性」を担保するためには、標準プロトコルである MCP の採用が不可欠でした。

  • 運用の属人化解消: 独特な AIX コマンド体系(ODM操作など)を抽象化し、自然言語で操作可能にすることで、熟練者以外でも一次切り分けが可能になる。

  • セキュリティ境界の設計: AI に SSH の全権限を渡すのではなく、MCP サーバー側で「許可された操作(Read Only等)」のみを API として公開するセキュアなゲートウェイが必要だった。

  • 既存資産の活用: AI と親和性の高い TypeScript/JSON-RPC ベースで既存の運用スクリプトをラップし、モダンなインターフェースへ昇華させる。


IBM BobとMCP:アーキテクチャの理解

本プロジェクトでは、IBM Bob(頭脳)とAIX(操作対象)の間を、自作のMCPサーバー(手足)でつなぐ構成をとります。それぞれの役割を技術的な観点から整理します。

1 IBM Bob(オーケストレーター)

IBM Bob は、本システムにおける「司令塔」です。 通常のAIチャットボットとは異なり、彼は単に会話をするだけでなく、ユーザーの曖昧な指示(例:「システムが重いんだけど」)を解釈し、適切なツールを選定して実行する能力を持っています。

しかし、デフォルトのBobはAIX固有のコマンド(lscfg, errpt, topasなど)を知りませんし、閉域網にあるサーバーへSSH接続する権限もありません。そこでMCPの出番となります。

2 MCP (Model Context Protocol)

MCP は、AIモデルと外部システムを接続するためのオープン標準プロトコルです。 これを採用することで、以下のような「翻訳」と「仲介」が可能になります。

翻訳機能: Bobからの「ディスクを見たい」という自然言語の意図を、AIXが理解できるdf -gなどのコマンド実行に変換します。

コンテキスト提供: AIXから返ってきた非構造化データ(ログテキスト)を、Bobが理解しやすい形式(コンテキスト)として渡します。

セキュリティ境界: AIにサーバーの全権限を渡すのではなく、MCPサーバー側で定義した「許可された10個のツール」のみを実行可能にすることで、安全性を担保します。


つまり、今回作成するMCPサーバーは、「AIXの作法を知らないBob」と「自然言語を理解しないAIX」の間を取り持つ、専用の通訳ドライバーとして機能します。


実行環境

  • ローカル環境 (MacBook)
    • IBM Bob: インストール済み
    • Node.js: MCPサーバーの実行ランタイムとして導入済み(brew install node 等でセットアップ)

  • リモート環境
    • 操作対象 AIXサーバー: SSH接続が可能な状態
    • Proxyサーバー: ローカル環境とAIXをつなぐ踏み台サーバー(セキュリティ要件による経由接続を想定)

[環境概要図]


AIX MCPサーバーの開発プロセス

ここからは、実際に IBM Bob のコーディング機能を使って、MCPサーバーを実装する手順をご紹介します。


IBM Bob にお願いした内容

開発は IBM Bob のAdvancedモードで行います。 以下のプロンプトを入力し、プロジェクトの雛形作成から依頼しました。

プロンプト: AIXを操作するMCP(Model Context Protocol) を作成したいです。

Bob が実装に必要なステップ(ToDoリスト)を提案してくれます。

途中で、ローカルPCへのディレクトリ作成や環境設定などの要求でコマンド実行承認処理があり、Bobの実行プロセスに沿って処理を繰り返します。

IBM Bob と直接AIXサーバーが通信できないケースを考慮して、Proxy 設定を追加

Bob が作成してくれた内容

## 📁 最終的なプロジェクト構成

testmcp/
├── 📄 .gitignore                           # バージョン管理除外設定
│                                           # (.mcp_settings.json, .bob/mcp.json を除外)
│
├── 📄 .mcp_settings.json                   # MCP設定ファイル(機密情報、gitignore対象)
├── 📄 .mcp_settings.json.example           # MCP設定テンプレート
│
├── 📂 .bob/                                # IBM Bob専用ディレクトリ
│   ├── 📄 mcp.json                         # IBM Bob用MCP設定(機密情報、gitignore対象)
│   └── 📄 mcp.json.example                 # IBM Bob用設定テンプレート
│
├── 📄 README.md                            # プロジェクトドキュメント(日本語)
├── 📄 README_en.md                         # プロジェクトドキュメント(英語)
│
└── 📂 aix-server/                          # AIX MCPサーバー
    ├── 📄 package.json                     # Node.jsパッケージ設定
    ├── 📄 package-lock.json                # 依存関係ロックファイル
    ├── 📄 tsconfig.json                    # TypeScript設定
    ├── 📄 README.md                        # サーバー詳細ドキュメント
    │
    ├── 📂 src/                             # ソースコード
    │   └── 📄 index.ts                     # メイン実装(424行)
    │                                       # - 10個のAIX操作ツール
    │                                       # - Proxy経由接続サポート
    │
    └── 📂 build/                           # ビルド済みファイル
        ├── 📄 index.js                     # コンパイル済みJavaScript
        ├── 📄 index.js.map                 # ソースマップ
        ├── 📄 index.d.ts                   # TypeScript型定義
        └── 📄 index.d.ts.map               # 型定義ソースマップ

## 🎯 主要ファイルの役割

### 設定ファイル
- **`.bob/mcp.json`** - IBM Bobが優先的に読み込むMCP設定(機密情報)
- **`.mcp_settings.json`** - 代替MCP設定(機密情報)
- **`*.example`** - 設定テンプレート(バージョン管理対象)

### ドキュメント
- **`README.md`** - 日本語プロジェクトドキュメント
- **`README_en.md`** - 英語プロジェクトドキュメント

### MCPサーバー
- **`aix-server/src/index.ts`** - TypeScriptソースコード
- **`aix-server/build/index.js`** - 実行可能なJavaScript

## ✨ 実装機能

### 10個のAIX操作ツール
1. `execute_aix_command` - 任意のコマンド実行
2. `get_aix_system_info` - システム情報取得
3. `list_aix_devices` - デバイス一覧
4. `check_aix_errors` - エラーログ確認
5. `get_aix_performance` - パフォーマンス監視
6. `list_aix_filesystems` - ファイルシステム一覧
7. `get_aix_network_info` - ネットワーク情報
8. `list_aix_processes` - プロセス一覧
9. `get_aix_users` - ユーザー情報
10. `read_aix_file` - ファイル読み取り

### 接続機能
- 直接SSH接続
- Proxy/踏み台サーバー経由接続
- パスワード認証
- SSH鍵認証
`
## 📊 統計情報
- **総ファイル数**: 17ファイル
- **ドキュメント**: 3ファイル(日本語2、英語1)
- **設定ファイル**: 4ファイル(実設定2、テンプレート2)
- **ソースコード**: 1ファイル(424行)
- **ビルド成果物**: 4ファイル
- **動作確認**: ✅ 完了(ホスト名取得成功)
**次のステップ:**
[`.mcp_settings.json`](.mcp_settings.json)でAIX接続情報を設定後、IBM Bobを再起動してください。

IBM Bobの再起動

設定を反映させるため、IBM Bobを再起動します。

起動後、MCPサーバーにプロジェクト設定で aix という表示の10個のツールがある MCPサーバーが見えるようになりました。


接続情報の設定

.bob/mcp.json に接続情報を記載します。
対象のAIX と IBM Bob が直接接続できないネットワークであるため Proxy 経由での接続としています。

{
  "mcpServers": {
    "aix": {
      "command": "node",
      "args": [
        "./aix-server/build/index.js"
      ],
      "env": {
        "AIX_HOST": "your-aix-hostname-or-ip",      #<- 修正
        "AIX_PORT": "22",
        "AIX_USERNAME": "your-username",             #<- 修正
        "AIX_PASSWORD": "your-password",             #<- 修正
        "PROXY_HOST": "your-proxy-hostname-or-ip",   #<- 修正
        "PROXY_PORT": "22",
        "PROXY_USERNAME": "your-proxy-username",  #<- 修正
        "PROXY_PASSWORD": "your-proxy-password"   #<- 修正
      },
      "disabled": false,
      "alwaysAllow": [],
      "disabledTools": [],
      "_comment": "PROXY_* variables are optional. If not set, direct connection to AIX will be used. If set, connection will be made through the proxy server."
    }
  }
}

AIX MCPサーバーの機能確認

IBM Bob で以下の操作を実行できるようになりました。

  • ✅ AIXコマンドの実行
  • ✅ システム情報の取得
  • ✅ デバイス管理
  • ✅ エラーログの確認
  • ✅ パフォーマンス監視
  • ✅ ファイルシステム管理
  • ✅ ネットワーク情報の取得
  • ✅ プロセス管理
  • ✅ ユーザー管理
  • ✅ ファイル操作

続いて稼働テストを行います。

基本的な使用例

システム情報の取得:

AIXシステムの情報を取得してください

スクリーンショット 2026-01-06 13.36.54.png

IBM Bobが自動的にget_aix_system_infoツールを使用して、OSレベル、ハードウェア情報、メモリ情報などを取得し以下の内容が返ってきました。

AIXシステム情報を取得しました:

**基本情報**
- OSレベル: 7200-04-06-2220 (AIX 7.2 TL4 SP6)
- システムモデル: IBM,9105-41B
- マシンシリアル番号: 785CA21
- ホスト名: aix72test
- 
**プロセッサ情報**
- プロセッサタイプ: PowerPC_POWER10
- 実装モード: POWER 9互換
- プロセッサ数: 1
- クロック速度: 3000 MHz
- CPUタイプ: 64ビット

**メモリ情報**
- メモリサイズ: 2048 MB (2 GB)
- 使用可能物理メモリ: 2097152 KB

**その他**
- カーネルタイプ: 64ビット
- LPAR情報: 27 aix72test
- ファームウェアレベル: ML1030_045
- ブートディスク(hdisk0)サイズ: 25600 MB (25 GB)
- NX暗号化アクセラレーション: 有効

ディスクデバイスの確認:

AIXのディスクデバイスを一覧表示してください

IBM Boblist_aix_devicesツールを使用して、ディスクデバイスの情報を表示します。

スクリーンショット 2026-01-06 13.39.18.png

AIXのディスクデバイス一覧:

**hdisk0**
- ステータス: Available (使用可能)
- ロケーション: C2-T0-01
- タイプ: MPIO IBM 2076 FC Disk
- 説明: ファイバーチャネル接続のIBM 2076ディスク (マルチパスI/O対応)

**hdisk1**
- ステータス: Defined (定義済み、未使用)
- ロケーション: C2-T0-01
- タイプ: MPIO IBM 2076 FC Disk
- 説明: ファイバーチャネル接続のIBM 2076ディスク (マルチパスI/O対応)

システムには2つのディスクデバイスがあり、hdisk0が現在使用中、hdisk1は定義されているが未使用の状態です。

エラーログの確認:

過去24時間のAIXエラーログを確認してください

スクリーンショット 2026-01-06 13.39.59.png

IBM Bobcheck_aix_errorsツールを使用して、エラーログを分析します。

過去24時間のAIXエラーログ:

**エラー1: パス回復 (INFO)**
- 日時: 2026年1月5日 22:19:00
- ラベル: SC_DISK_PCM_ERR9
- リソース: hdisk0
- クラス: H (ハードウェア)
- タイプ: INFO
- 説明: パスが回復しました
- 推定原因: アレイコントローラー、ケーブルと接続
- 推奨アクション: **対処不要** (パスは自動回復済み)

**エラー2: 操作実行不可 (PERM)**
- 日時: 2026年1月5日 22:18:51
- ラベル: SC_DISK_ERR10
- リソース: hdisk0
- クラス: S (ソフトウェア)
- タイプ: PERM (永続的)
- 説明: 要求された操作を実行できません
- 推定原因: DASDデバイス、リソース利用不可、不正アクセス試行
- 推奨アクション: 
  - リムーバブルメディアの場合は交換して再試行
  - 問題判別手順を実行

**エラー3: (部分表示)**
- ラベル: SC_DISK_ERR7
- 識別子: DE3B8540

**分析結果:**
hdisk0に関連するエラーが検出されています。パス回復エラー(INFO)は自動回復済みですが、その直前に永続的なディスクエラーが発生しています。ストレージアレイコントローラーまたはケーブル接続に問題がある可能性があります。継続的な監視と問題判別手順の実行を推奨します。

高度な使用例

特定のコマンドの実行:

AIXで "oslevel -s" コマンドを実行してください

スクリーンショット 2026-01-06 13.41.02.png

IBM Bobexecute_aix_commandツールを使用して、指定されたコマンドを実行しました。

`oslevel -s`コマンドの実行結果:

**7200-04-06-2220**

これは以下を示しています:
- **AIX バージョン**: 7.2
- **テクノロジーレベル (TL)**: 04
- **サービスパック (SP)**: 06
- **ビルド日付**: 2022年20週目

このシステムはAIX 7.2 TL4 SP6が稼働しており、2022年5月頃にリリースされたバージョンです。

パフォーマンス分析:

AIXシステムのパフォーマンスを分析して、問題があれば教えてください

スクリーンショット 2026-01-06 13.45.13.png

IBM Bobget_aix_performanceツールを使用してパフォーマンスデータを取得し、自動的に分析して問題点を指摘しました。

AIXシステムのパフォーマンス分析結果:

**CPU使用率 (vmstat)**
- ユーザーCPU: 0%
- システムCPU: 1%
- アイドル: 99%
- 状態: **正常** - CPU負荷は非常に低い

**メモリ使用状況 (vmstat & svmon)**
- 総メモリ: 524,288 ページ (約2GB)
- 使用中: 346,847 ページ (66%)
- 空き: 177,441 ページ (34%)
- ピン留めメモリ: 284,633 ページ (54%)
- 状態: **注意** - メモリ使用率が66%でやや高め

**ページング空間 (svmon)**
- 総容量: 131,072 ページ (約512MB)
- 使用中: 2,702 ページ (2%)
- 状態: **正常** - スワップ使用率は非常に低い

**ディスクI/O (iostat - hdisk0)**
- アクティブ時間: 21.0% → 0.0%
- スループット: 460 Kbps → 8 Kbps
- トランザクション: 82 tps → 2 tps
- 状態: **正常** - I/O負荷は低く、安定している

**総合評価:**
システムは全体的に健全な状態です。CPU使用率とディスクI/Oは低く、スワップもほとんど使用されていません。ただし、メモリ使用率が66%とやや高めで、ピン留めメモリが54%を占めています。現時点では問題ありませんが、メモリを多く消費するアプリケーションを追加する場合は注意が必要です。

ファイルの確認:

AIXの /etc/inittab ファイルの内容を確認してください

スクリーンショット 2026-01-06 13.46.23.png

IBM Bobread_aix_fileツールを使用してファイルを読み取りました。

AIXの`/etc/inittab`ファイルの内容:

**主要なエントリ:**

**システム初期化**
- `init:2:initdefault:` - デフォルトランレベル2で起動
- `brc::sysinit:` - ブートフェーズ3の実行
- `powerfail::powerfail:` - 電源障害検出
- `tunables:23456789:wait:` - チューナブルパラメータの復元
- `securityboot:2:bootwait:` - セキュリティブート処理

**システムサービス**
- `srcmstr:23456789:respawn:` - システムリソースコントローラー (自動再起動)
- `rctcpip:23456789:wait:` - TCP/IPデーモンの起動
- `rcnfs:23456789:wait:` - NFSデーモンの起動
- `cron:23456789:respawn:` - cronデーモン (自動再起動)

**NIM関連**
- `nimsh:2:wait:` - NIMクライアントグループの起動
- `nimclient:2:once:` - NIMクライアント実行通知

**印刷サービス**
- `qdaemon:23456789:wait:` - キューデーモン
- `writesrv:23456789:wait:` - 書き込みサーバー
- `uprintfd:23456789:respawn:` - 印刷デーモン

**監視・診断**
- `diagd:2:once:` - 診断デーモン
- `xmdaily:2:once:` - topasrecによる性能記録 (5分間隔、6回記録)
- `perfstat:2:once:` - パフォーマンス統計辞書更新
- `logsymp:2:once:` - システムダンプのログ記録

**高可用性・クラスタ**
- `shdaemon:2:off:` - 高可用性デーモン (現在オフ)
- `clusterconf:23456789:once:` - クラスタ設定
- `clcomd:23456789:once:` - クラスタ通信デーモン
- `ctrmc:2:once:` - CTRMCデーモン (IBM Systems Director用)

**その他**
- `cons:0123456789:respawn:` - コンソールgetty
- `rcwpars:2:once:` - WPAR自動起動
- `rcvnet:23456789:wait:` - 仮想ネットワークデーモン起動

このシステムは標準的なAIX 7.2の構成で、NIMクライアント、性能監視、診断機能が有効になっています。

IBM Bobを使った実践例

シナリオ1: システムヘルスチェック

ユーザー:

AIXシステムの健全性をチェックして、問題があれば教えてください

スクリーンショット 2026-01-06 13.47.45.png

IBM Bobの動作:

  1. get_aix_system_infoでシステム情報を取得
  2. check_aix_errorsでエラーログを確認
  3. get_aix_performanceでパフォーマンスを確認
  4. list_aix_filesystemsでディスク使用状況を確認
  5. 結果を分析してレポートを作成
AIXシステムの健全性チェック完了 - **注意が必要な問題を検出**

## 🔴 重要な問題

**1. ファイルシステム容量不足 (緊急)**
- [`/usr`](file:///usr): **92%使用** - 残り230MB
  - 推奨: 不要なファイル削除またはファイルシステム拡張が必要
- [`/var`](file:///var): **82%使用** - 残り10MB
  - 推奨: ログローテーション確認、古いログ削除
- [`/opt`](file:///opt): **59%使用** - 残り10MB

**2. ディスクエラー (要監視)**
- hdisk0で永続的エラー発生 (2026/1/5 22:18:51)
  - タイプ: PERM (永続的)
  - 原因: ストレージアレイコントローラーまたはケーブル接続
  - 状態: パスは回復済みだが根本原因は未解決

## 🟡 注意事項

**3. メモリ使用率**
- 使用率: 66% (2GB中1.3GB使用)
- ピン留めメモリ: 54%
- 状態: 現時点では問題なし、今後の増加に注意

**4. 未使用ディスク**
- hdisk1が定義済みだが未使用
- 推奨: 必要に応じてミラーリングやバックアップ用に活用可能

## ✅ 正常な項目

- CPU使用率: 1% (非常に低い)
- スワップ使用率: 2% (正常)
- ディスクI/O: 低負荷
- ネットワーク: 正常稼働 (172.16.110.142)
- 主要サービス: すべて稼働中
  - srcmstr, cron, sshd, snmpd, rsct関連デーモン等

## 📋 推奨アクション

1. **即座に実施**:
   - [`/usr`](file:///usr)と[`/var`](file:///var)の容量確保
   - 古いログファイルの削除またはアーカイブ

2. **短期的に実施**:
   - hdisk0のストレージパス問題の調査
   - アレイコントローラーとケーブル接続の確認

3. **長期的に検討**:
   - ファイルシステムの拡張計画
   - hdisk1の活用 (ミラーリング等)
   - 定期的な容量監視の自動化

IBM Bob をAIXに対して使用する上でのセキュリティ・プラクティス

1. SSH鍵認証の使用

IBM Bob用の設定でSSH鍵認証を使用することを推奨します:

# SSH鍵ペアの生成
ssh-keygen -t rsa -b 4096 -C "ibm-bob@your-company.com"

# 公開鍵をAIXサーバーにコピー
ssh-copy-id username@aix-hostname

2. 最小権限の原則

IBM Bob専用のユーザーアカウントを作成し、必要最小限の権限のみを付与します。


3. 機密情報の管理

  • .mcp_settings.jsonをバージョン管理から除外
  • IBM Bobの設定ファイルへのアクセスを制限
  • 定期的なパスワード変更

4. 監査ログ

IBM Bobの操作をログに記録します:

# AIXサーバー側でSSH接続ログを監視
tail -f /var/log/secure

AIX用MCPサーバーのコード

今回 IBM Bob によって作成されたAIX用のMCPサーバーのコードは、GitHubで公開しています。 基本的なAIXコマンドの実行やログ確認が実装されています。

※本コードは現状有姿(AS-IS)で公開しており、動作保証はありません。検証環境等で十分テストの上、自己責任でご利用ください


将来ステップ

  1. Bob x MCPサーバーをお客様環境に導入
  2. IBM Bobを使った自動化スクリプトの作成
  3. 追加のAIX管理ツールの実装
  4. 開発フェーズでのIBM Bob の使用(構築、スクリプト稼働テスト)
  5. 障害監視、問題解析などの運用フェーズでの使用

参考動画

試しで動画を作成してみました。

参考リンク


IBM SVC を操作対象とする内容を下記で記載しました。

障害対応時の errpt 確認、snap取得を実施する AIX 用 MCP サーバーを下記で確認しています。

13
4
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?