1
0

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 の OS操作: RHEL on Power でリモート MCP サーバーを構成

1
Posted at

はじめに

Power Virtual Server の RHEL VM 区画に MCP サーバーを立てて、ローカルPC上の IBM Bob からリモート接続し、日本語で RHEL サーバーを操作(今回はヘルスチェック)できることを確認しました。

全体の構成は「RHEL VM 上で MCP サーバーを稼働 → IBM Bob が SSH 経由で MCP サーバーに接続 → 日本語プロンプトでサーバーを操作」という構成です。


動画

当記事の動画を作成しています。理解の一助にご参照ください。


環境

  • IBM Power Virtual Server RHEL 9.6 (ppc64le)
    • MCPサーバー稼働環境 兼 IBM Bob 操作対象サーバー

MCP サーバーと Bob定義の Git リポジトリ

このリポジトリには、筆者が個人開発した AIX 操作用および RHEL 操作用の MCP サーバーが含まれています。
それぞれの MCP サーバーには25種類以上のツールが実装されています。
さらに、IBM Bob 用のスキル定義ファイルも同梱しており、これらを読み込ませることで AI の振る舞いを定義・拡張することができます。


MCP サーバー設定

ここからは、RHEL 9.6 仮想マシン 上での実行です。

MCP サーバーの Git リポジトリをクローンします。

# git clone https://github.com/cu0001/aix-mcp-server.git
Cloning into 'aix-mcp-server'...
remote: Enumerating objects: 173, done.
remote: Counting objects: 100% (173/173), done.
remote: Compressing objects: 100% (106/106), done.
remote: Total 173 (delta 70), reused 158 (delta 55), pack-reused 0 (from 0)
Receiving objects: 100% (173/173), 141.27 KiB | 1.96 MiB/s, done.
Resolving deltas: 100% (70/70), done.
# ls -l
total 4
drwxr-xr-x. 7 root root 4096 May 12 20:08 aix-mcp-server

対象リポジトリに移動します。

# cd aix-mcp-server/

# ls -ltr
total 56
drwxr-xr-x. 2 root root   147 May 12 20:08 showroom
drwxr-xr-x. 3 root root   124 May 12 20:08 rhel-server
-rw-r--r--. 1 root root  2853 May 12 20:08 mcp_setting.json.example
-rw-r--r--. 1 root root  5595 May 12 20:08 architecture_diagram_mermaid.md
drwxr-xr-x. 3 root root  4096 May 12 20:08 aix-server
-rw-r--r--. 1 root root  9891 May 12 20:08 REMOTE_SSH_MCP_SETUP.md
-rw-r--r--. 1 root root  9666 May 12 20:08 README_en.md
-rw-r--r--. 1 root root 15211 May 12 20:08 README.md

リポジトリをサーバーにクローンできていることが確認できました。


npm の導入

MCP サーバーは Node.js で実装されているため、環境設定は npm で実施します。
まずは npm.ppc64le をインストールします。

# dnf install npm.ppc64le

npm.ppc64le 導入 実行ログ (▶︎を押すと展開します。)
# dnf install npm.ppc64le
Updating Subscription Management repositories.
Last metadata expiration check: 0:35:17 ago on Tue May 12 19:39:03 2026.
Dependencies resolved.
====================================================================================================
 Package                Architecture  Version                            Repository            Size
====================================================================================================
Installing:
 npm                    ppc64le       1:8.19.4-1.16.20.2.8.el9_4         RHEL-AppStream       2.2 M
Installing dependencies:
 nodejs                 ppc64le       1:16.20.2-8.el9_4                  RHEL-AppStream       117 k
 nodejs-libs            ppc64le       1:16.20.2-8.el9_4                  RHEL-AppStream        15 M
Installing weak dependencies:
 nodejs-docs            noarch        1:16.20.2-8.el9_4                  RHEL-AppStream       7.2 M
 nodejs-full-i18n       ppc64le       1:16.20.2-8.el9_4                  RHEL-AppStream       8.2 M

Transaction Summary
====================================================================================================
Install  5 Packages

Total size: 33 M
Installed size: 176 M
Is this ok [y/N]: y
Downloading Packages:
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
  Running scriptlet: npm-1:8.19.4-1.16.20.2.8.el9_4.ppc64le                                     1/1
  Preparing        :                                                                            1/1
  Installing       : nodejs-libs-1:16.20.2-8.el9_4.ppc64le                                      1/5
  Installing       : nodejs-docs-1:16.20.2-8.el9_4.noarch                                       2/5
  Installing       : nodejs-full-i18n-1:16.20.2-8.el9_4.ppc64le                                 3/5
  Installing       : npm-1:8.19.4-1.16.20.2.8.el9_4.ppc64le                                     4/5
  Installing       : nodejs-1:16.20.2-8.el9_4.ppc64le                                           5/5
  Running scriptlet: nodejs-1:16.20.2-8.el9_4.ppc64le                                           5/5
  Verifying        : nodejs-1:16.20.2-8.el9_4.ppc64le                                           1/5
  Verifying        : nodejs-docs-1:16.20.2-8.el9_4.noarch                                       2/5
  Verifying        : nodejs-full-i18n-1:16.20.2-8.el9_4.ppc64le                                 3/5
  Verifying        : nodejs-libs-1:16.20.2-8.el9_4.ppc64le                                      4/5
  Verifying        : npm-1:8.19.4-1.16.20.2.8.el9_4.ppc64le                                     5/5
Installed products updated.

Installed:
  nodejs-1:16.20.2-8.el9_4.ppc64le                    nodejs-docs-1:16.20.2-8.el9_4.noarch
  nodejs-full-i18n-1:16.20.2-8.el9_4.ppc64le          nodejs-libs-1:16.20.2-8.el9_4.ppc64le
  npm-1:8.19.4-1.16.20.2.8.el9_4.ppc64le

Complete!


rhel-server MCP サーバーの設定

RHEL サーバーの MCP サーバーを設定(パッケージのインストール)します。
rhel-server ディレクトリに移動し、npm install を実行します。

# cd ../rhel-server
# npm install

⚠️ WARN EBADENGINE は一部パッケージが Node.js 18以上を要求していることへの警告です。
RHEL AppStream で提供されている Node.js 16 を使用しているため表示されますが、今回の MCP サーバーの動作には影響ありません。


npm install 実行ログ (▶︎を押すと展開します。)
# npm install
npm WARN EBADENGINE Unsupported engine {
npm WARN EBADENGINE   package: '@bcoe/v8-coverage@1.0.2',
npm WARN EBADENGINE   required: { node: '>=18' },
npm WARN EBADENGINE   current: { node: 'v16.20.2', npm: '8.19.4' }
npm WARN EBADENGINE }
...(中略)...

added 161 packages, and audited 162 packages in 24s

45 packages are looking for funding
  run `npm fund` for details

7 vulnerabilities (1 low, 1 moderate, 5 high)

To address all issues, run:
  npm audit fix

Run `npm audit` for details.


リモート MCP サーバー稼働スクリプト作成

run-rhel-mcp.sh というスクリプトを作成し、操作対象サーバーの定義と MCP サーバーの起動を行います。

# cat run-rhel-mcp.sh
#!/bin/sh
set -eu

export RHEL_HOST="xxx.xx.xxx.xx"            # <= 対象サーバーのIPアドレス
export RHEL_PORT="22"
export RHEL_USERNAME="root"                 # <= 対象サーバーの操作ユーザー
export RHEL_PRIVATE_KEY="/work/rhel_vm_key" # <= 対象サーバーの秘密鍵

# Optional proxy / bastion settings
# export PROXY_HOST="proxy-host"
# export PROXY_PORT="22"
# export PROXY_USERNAME="proxy-user"
# export PROXY_PRIVATE_KEY="/home/mcpuser/.ssh/proxy_key"

cd /work/aix-mcp-server/rhel-server
exec node build/index.js                    # <= MCP サーバー起動コマンド
# chmod 755 run-rhel-mcp.sh
# ls -l run-rhel-mcp.sh
-rwxr-xr-x. 1 root root 493 May 12 20:39 run-rhel-mcp.sh

RHEL サーバー側の設定はここまでです。


IBM Bob 側の設定

MCP サーバーがリモートに配置されるため、ローカルPC上の IBM Bob プロジェクトの構造は MCP 接続設定とスキル定義のみのシンプルな構成になります。

$ tree -a
.
├── .bob
│   ├── mcp.json
│   ├── rhel_vm_key
│   └── skills
│       ├── rhel_incident_analysis
│       │   └── SKILL.md
│       ├── rhel_normal_operations
│       │   └── SKILL.md
│       └── rhel_version_comparison
│           └── SKILL.md
└──.bobignore

2 directories, 11 files

skills 配下の各ディレクトリには SKILL.md が格納されており、IBM Bob の振る舞い(インシデント分析・通常運用・バージョン比較)を定義しています。これにより、決まった手順をスキルとして登録し、Bob に呼び出させることができます。


Local PC 上で稼働する IBM Bob の定義ファイル(mcp.json)の設定例です。

{
  "mcpServers": {
    "rhel-ppc64le": {
      "command": "ssh",
      "args": [
        "-i",
        ".bob/rhel_vm_key",
        "-T",
        "-o",
        "BatchMode=yes",
        "root@xxx.xx.xxx.xx",
        "/work/aix-mcp-server/rhel-server/run-rhel-mcp.sh"
      ],
      "disabled": false,
      "alwaysAllow": [],
      "disabledTools": []
    }
  }
}

args 内で、対象サーバー接続の SSH 鍵、IP アドレス、および MCP サーバー起動スクリプトのパスを指定しています。


IBM Bob での稼働確認

  • リモート MCP サーバー接続確認

2.png

  • MCP サーバーのツールも認識されています
  • プロンプト実行

スキルを使用して、対象RHEL サーバーのヘルスチェックを実行してください。

  • healthcheck skill 使用承認
  • IBM Bob がツールを呼び出しながら情報を収集している様子

8.png

9.png

10.png

11.png

  • タスク完了

12.png


生成レポート

Markdown 形式で以下の内容のレポートが自動生成されました。(IPアドレスはマスキングしています)

IBM Bob が生成したヘルスチェックレポート(▶︎を押すと展開します。)

RHEL ppc64le システムヘルスチェックレポート

エグゼクティブサマリー

  • 実施日時: 2026年5月15日 20:21 (JST)
  • 対象システム: test01xxxx
  • 実施者: IBM Bob (AI Assistant)
  • 総合判定: ✅ 正常 (一部注意事項あり)

検出された異常の概要

優先度 件数 概要
🟡 中 2 SSH接続試行エラー、kernel警告
🟢 低 1 メモリ使用率やや高め

1. システム基本情報

ハードウェア構成

項目
アーキテクチャ ppc64le (Little Endian)
プロセッサ IBM POWER10 (pvr 0080 0200)
CPU数 8 (1 socket × 1 core × 8 threads)
物理ソケット 2
物理チップ 2 (各10コア)
メモリ 1.4 GiB
スワップ 2.0 GiB
仮想化 PowerVM (pHyp)

RHEL情報

項目
OS Red Hat Enterprise Linux 9.6 (Plow)
カーネル 5.14.0-570.24.1.el9_6.ppc64le
稼働時間 36日23時間52分
ロードアベレージ 0.04, 0.05, 0.00 (1分, 5分, 15分)

セキュリティ脆弱性対策状況

すべての主要な脆弱性に対して保護されています

  • Meltdown, Spectre v1/v2: 対策済み
  • L1tf, MDS, Retbleed: 影響なし
  • その他の既知の脆弱性: 影響なし

2. 検出された異常(優先度別)

🟡 重要度:中

2.1 SSH接続試行エラー(外部からの不正アクセス試行)

概要: 過去24時間で多数のSSH接続エラーが記録されています

詳細:

  • 不正なプロトコル識別子
  • 認証試行回数超過(ブルートフォース攻撃の可能性)
  • 接続リセット

主な発生源:

  • 8x.xxx.xx5.53 からの連続的な認証試行(admin, oracle, usuario, test, user, ftpuser, ubuntu等)
  • 1x9.xx.5x.4x からの認証試行

影響: システムの正常動作には影響なし / セキュリティログの増加

現状: firewalldが稼働中 / 不正アクセスは自動的にブロックされている

推奨アクション:

  1. fail2banの導入を検討(繰り返し失敗するIPを自動的にブロック)
  2. SSH接続を特定のIPアドレスに制限することを検討
  3. 公開鍵認証のみを許可し、パスワード認証を無効化
  4. 非標準ポートへのSSH変更を検討

2.2 Kernel警告メッセージ

概要: nft_compatドライバーに関する警告

May 14 20:59:15 test01xxxx kernel: Warning: Unmaintained driver is detected: nft_compat

影響: 現時点でシステム動作に影響なし / 将来的なサポート終了の可能性

推奨アクション:

  1. nftablesの使用状況を確認
  2. 可能であれば、メンテナンスされているドライバーへの移行を検討
  3. 次回のRHELアップデート時に対応状況を確認

🟢 重要度:低

2.3 メモリ使用率

概要: メモリ使用率がやや高め

項目
総メモリ 1.4 GiB
使用中 1.1 GiB (約79%)
空きメモリ 34-68 MiB
利用可能 298-330 MiB
スワップ使用 345 MiB / 2.0 GiB (17%)

推奨アクション:

  1. 監視継続
  2. メモリ使用量の多いプロセスを定期的に確認
  3. 必要に応じてメモリ増設を検討

3. 正常項目

3.1 systemdサービス状態

すべてのサービスが正常に稼働中(failed: 0件)

主要サービス: sshd / nginx / firewalld / chronyd / rpcbind

3.2 ファイルシステム使用状況

マウントポイント タイプ サイズ 使用量 使用率 状態
/ xfs 99G 25G 26% ✅ 正常
/boot xfs 960M 322M 34% ✅ 正常
/dev/shm tmpfs 736M 128K 1% ✅ 正常
/run tmpfs 295M 50M 17% ✅ 正常
/media/rhel96dvd iso9660 9.6G 9.6G 100% ⚠️ DVD (正常)

3.3 CPU・負荷状況

CPU使用率は非常に低く、システムは余裕があります

  • ロードアベレージ: 0.02, 0.04, 0.00
  • CPU使用率: ほぼ0% (アイドル98-100%)

3.4 ネットワーク・ファイアウォール

  • ファイアウォール: 稼働中 (アクティブゾーン: public)
  • 許可サービス: cockpit, dhcpv6-client, http, https, ssh
  • リスニングポート: TCP 22 (SSH) / TCP 443 (HTTPS/nginx) / TCP 111 (rpcbind)

5. 推奨アクションサマリー

優先度:中(1週間以内)

  1. SSH セキュリティ強化 - fail2ban導入 / 公開鍵認証のみ / 接続元IP制限
  2. nft_compat警告への対応 - nftables使用状況確認 / 次回アップデート時に確認

優先度:低(監視継続)

  1. メモリ使用状況の監視 - 定期確認 / 必要に応じてメモリ増設

6. 総合評価

システムは非常に良好な状態で稼働しています

強み: 36日以上の安定稼働 / すべてのsystemdサービスが正常 / CPU負荷が非常に低い / マルチパス構成による高可用性 / セキュリティ脆弱性対策が適切

注意点: 外部からの不正アクセス試行が継続的に発生 / メモリ使用率がやや高め / 一部カーネルドライバーがメンテナンス終了予定

次回チェック推奨日: 2026年5月22日(1週間後)


レポート作成日時: 2026年5月15日 20:21 JST
作成者: IBM Bob (AI Assistant)
バージョン: 1.0


おわりに

RHEL ppc64le サーバー上で MCP サーバーをリモート稼働させて、ローカルの IBM Bob と連動して操作できることが確認できました。

AI がシステム情報を自律的に収集・整理し、人間が読みやすいヘルスチェックレポートを日本語の指示で出力してくれるのは、運用効率化の観点でも大きな可能性を感じます。

続いては、MCPサーバーの AIX での稼働や、コンテナ版など確認できればと思います。

以上です。

1
0
2

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?