4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

コマンド知識ゼロでOK!IBM BobでIBM MQを操作してみた

4
Last updated at Posted at 2026-03-10

はじめに

IBM MQの運用管理では、通常MQSCコマンドという専門的なコマンドを使用する必要があります。しかし、IBM BobとMCP(Model Context Protocol)を組み合わせることで、自然言語でIBM MQの操作が可能になります。

本記事では、実際にIBM Bobを使ってIBM MQを操作した体験をまとめています。

前提条件

本記事の手順を実行するには、以下の環境が必要です:

  • OS: macOS / Windows / Linux
  • コンテナランタイム: Podman または Docker(インストール済み)
  • IBM Bob: インストール済み
  • Git: インストール済み
  • ターミナル:
    • macOS/Linux: bash または zsh
    • Windows: PowerShell または WSL2

検証環境について
本記事の手順は、macOS(Apple Silicon M1)+ Podman 環境で検証しています。
その他の環境(Intel Mac、Windows、Linux、Docker)のコマンド例は、IBM Bobが生成したものを参考として掲載しています。
環境によっては一部調整が必要な場合がありますので、ご了承ください。

本記事ではコマンド例を podman で記載していますが、docker に置き換えても同様に動作します。

環境構築

1. IBM MQコンテナの起動

まず、Podman/Dockerが起動していることを確認します。

Podmanの場合

# Podmanマシンの起動状態を確認
podman machine list

# 起動していない場合は起動
podman machine start

Podmanを使用する場合

Mac M1/M2(Apple Silicon):

podman run \
  --platform linux/amd64 \
  --env LICENSE=accept \
  --env MQ_QMGR_NAME=QM1 \
  --env MQ_ADMIN_PASSWORD=MySecretPassword1! \
  --publish 1414:1414 \
  --publish 9443:9443 \
  --detach \
  icr.io/ibm-messaging/mq:latest

Intel Mac / Linux / Windows(WSL2):

podman run \
  --env LICENSE=accept \
  --env MQ_QMGR_NAME=QM1 \
  --env MQ_ADMIN_PASSWORD=MySecretPassword1! \
  --publish 1414:1414 \
  --publish 9443:9443 \
  --detach \
  icr.io/ibm-messaging/mq:latest

Windows(Podman Desktop / PowerShell):

podman run `
  --env LICENSE=accept `
  --env MQ_QMGR_NAME=QM1 `
  --env MQ_ADMIN_PASSWORD=MySecretPassword1! `
  --publish 1414:1414 `
  --publish 9443:9443 `
  --detach `
  icr.io/ibm-messaging/mq:latest

Dockerを使用する場合

Windows(Docker Desktop)/ macOS / Linux:

docker run \
  --env LICENSE=accept \
  --env MQ_QMGR_NAME=QM1 \
  --env MQ_ADMIN_PASSWORD=MySecretPassword1! \
  --publish 1414:1414 \
  --publish 9443:9443 \
  --detach \
  icr.io/ibm-messaging/mq:latest

Windows(PowerShell)の場合:

docker run `
  --env LICENSE=accept `
  --env MQ_QMGR_NAME=QM1 `
  --env MQ_ADMIN_PASSWORD=MySecretPassword1! `
  --publish 1414:1414 `
  --publish 9443:9443 `
  --detach `
  icr.io/ibm-messaging/mq:latest

起動完了まで数分かかる場合があります。以下のコマンドでステータスを確認してください:

  • Podman: podman ps
  • Docker: docker ps

2. MQ MCPサーバーのセットアップ

uvのインストール

macOS / Linux / WSL2:

curl -LsSf https://astral.sh/uv/install.sh | sh

Windows(PowerShell):

irm https://astral.sh/uv/install.ps1 | iex

uvって何?なんで必要?

uvはPythonのパッケージマネージャーです。

今回uvが必要な理由:
このあと出てくるmqmcpserver.pyを動かすには、MCPライブラリ(mcp[cli])とHTTPクライアント(httpx)という2つのPythonパッケージが必要です。

従来の方法だと、仮想環境を作って、pipでライブラリをインストールして...と複数のステップが必要でした。uvを使うと、これらの手順が簡単になるため、今回使用しています。
例:

# 従来の方法(4ステップ)
python -m venv venv
source venv/bin/activate
pip install "mcp[cli]" httpx
python mqmcpserver.py

# uvを使う方法(2ステップ)
uv add "mcp[cli]" httpx  # 必要なパッケージをインストール
uv run mqmcpserver.py    # 環境を準備して実行

uv runは、必要なパッケージがインストールされた状態でプログラムを実行してくれるので、仮想環境の作成やactivateが不要になります。

MCPサーバーのセットアップ

IBM MQ MCP Serverは、IBM MQの操作をMCPツールとして提供するPythonサーバーです。このリポジトリに含まれるmqmcpserver.pyが、BobとIBM MQの間を仲介し、自然言語での操作を可能にします。GitHubからクローンして使用します。

# リポジトリのクローン
git clone https://github.com/ibm-messaging/mq-mcp-server.git
cd mq-mcp-server

# パッケージのインストール
uv add "mcp[cli]" httpx

IBM MQ MCP Serverと mqmcpserver.py に関する補足

IBM MQ MCP Serverは、IBM MQのAdministrative REST APIをMCPツールとして公開するリポジトリです。

提供される2つのツール:

  • dspmq: mqwebサーバーにローカルなキューマネージャーの一覧と実行状態を取得
  • runmqsc: 指定したキューマネージャーに対してMQSCコマンドを実行(plain text MQSC APIを使用)

IBM Bobなど、MCPクライアントを持つLLMと連携することで、自然言語でキューマネージャーの操作や設定変更が可能になります。

接続情報の設定

mqmcpserver.py を編集して、接続情報を設定します。

ターミナルで編集する場合:

nano mqmcpserver.py

編集内容:

URL_BASE = "https://localhost:9443/ibmmq/rest/v3/"
USER_NAME = "admin"
PASSWORD = "MySecretPassword1!"  # 上記で指定したパスワード

編集後、Ctrl + O(保存)→ EnterCtrl + X(終了)で保存します。

お好みのテキストエディタ(VS Code、vim、emacsなど)を使用しても構いません。

3. IBM BobへのMCPサーバー登録

Bob設定ファイル(.bob/mcp.json)に以下を追加:

{
  "mcpServers": {
    "mq-mcp-server": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/mq-mcp-server",
        "run",
        "mqmcpserver.py"
      ]
    }
  }
}

重要: /path/to/mq-mcp-server は、実際にクローンした mq-mcp-server ディレクトリの絶対パスに置き換えてください。

例:

  • macOS/Linux: /Users/yourname/mq-mcp-server
  • Windows: C:/Users/yourname/mq-mcp-server

--directory オプションは、uv が正しいプロジェクトコンテキストで実行するために必要です。

4. IBM Bobの設定

Advanceモードへの切り替え

今回はAdvanceモードで使用しています。

  1. IBM Bobを開く
  2. 左下のモード選択から「Advance」を選択
    スクリーンショット 2026-03-10 19.24.35.png

自動承認アクションの設定

MCP操作をスムーズに行うため、自動承認アクションを設定することを推奨します。

設定手順:

  1. IBM Bobの設定画面を開く
  2. 「自動承認アクション」セクションに移動
  3. 以下の項目を追加:
    • mcp_call_tool - MCPツールの実行を自動承認
    • execute_command - コマンド実行を自動承認(オプション)

セキュリティ上の注意
自動承認アクションを有効にすると、Bobが確認なしでMQの設定変更を実行できるようになります。
本番環境では慎重に使用し、テスト環境での使用を推奨します。

実際の操作例

1. キューマネージャーの状態確認

私: 「現在ローカルで稼働しているMQのキューマネージャーとそのステータスを教えてください。」

Bob:
名称未設定.png

従来であれば、コンテナ内で dspmq コマンドを実行する必要がありました:

# 従来の方法
docker exec <container_id> dspmq
# または
podman exec <container_id> dspmq

しかし、自然言語で質問するだけで情報を取得できました。

2. メッセージ滞留の確認

目的: 運用監視において、メッセージが滞留しているキューを特定することで、以下を確認できます:

  • 処理が滞っているキューの発見
  • コンシューマーアプリケーションの停止検知
  • システムの健全性チェック

Depth(キュー深度)とは
Depthは、キューに現在格納されているメッセージの数を表します。

  • Depth = 0: キューは空(正常に処理されている)
  • Depth > 0: メッセージが滞留している(要確認)

通常、メッセージはプロデューサー(送信側)からキューに投入され、コンシューマー(受信側)が取り出して処理します。Depthが増え続ける場合、コンシューマーの処理が追いついていない、または停止している可能性があります。

私: 「QM1に登録されているすべてのローカルキューのうち、現在メッセージの滞留数(Depth)が0より大きいものをリストアップして、詳細を教えてください。」

Bob:
名称未設定1.jpg
名称未設定2.jpg
名称未設定3.jpg
名称未設定4.jpg

複雑な DISPLAY QLOCAL(*) CURDEPTH コマンドを実行し、結果を解析して表示してくれました。

3. 新規キューの作成

私: 「SMARTMETER.POWER.DATA というローカルキューを新規作成してください。」

Bob:
名称未設定5.jpg

DEFINE QLOCAL コマンドを自動生成・実行してくれました。

4. キュー設定の変更

私: 「MAXDEPTH を 500 に設定。」

Bob:
スクリーンショット 2026-03-10 19.20.57.png

文脈を理解して、対象キューに対する ALTER QLOCAL コマンドを実行してくれました。

5. テストメッセージの投入

私: 「テストメッセージを 150件 投入。」

Bob:
スクリーンショット 2026-03-10 19.21.18.png

amqsput コマンドを使って、150件のメッセージを自動投入してくれました。

6. 異常検知と対応

私: 「異常はありますか」

Bob:
スクリーンショット 2026-03-10 19.22.07.png

私: 「このままではキューが溢れる可能性があるため、一時的に MAXDEPTH を 1,000 に引き上げてください。」

Bob:
スクリーンショット 2026-03-10 19.22.40.png

7. クリーンアップ

私: 「今回はテストなので、溜まっている150件のメッセージをすべて消去(Clear)して、正常な状態(Depth=0)に戻してください。」

Bob:
スクリーンショット 2026-03-10 19.22.57.png

従来の方法との比較

操作 従来の方法(Podman/Docker) IBM Bob使用時
キューマネージャー確認 podman exec <container> dspmq 「稼働中のキューマネージャーを教えて」
キュー一覧取得 podman exec <container> bash -c 'echo "DISPLAY QLOCAL(*)" | runmqsc QM1' 「メッセージが滞留しているキューは?」
キュー作成 podman exec <container> bash -c 'echo "DEFINE QLOCAL(...)" | runmqsc QM1' 「XXXというキューを作成して」
設定変更 podman exec <container> bash -c 'echo "ALTER QLOCAL(...)" | runmqsc QM1' 「MAXDEPTHを1000に変更」
メッセージ投入 podman exec <container> /opt/mqm/samp/bin/amqsput ... 「テストメッセージを150件投入」

podman コマンドは docker コマンドに置き換え可能です。

メリット

1. 学習コストの削減

MQSCコマンドの詳細な構文を覚える必要がありません。自然言語で指示するだけで、Bobが適切なコマンドを生成・実行してくれます。

2. 作業の高速化

複数のコマンドを組み合わせた複雑な調査も、一度の質問で完了します。

3. ミスの削減

コマンドの構文エラーや、対象キューの指定ミスなどのヒューマンエラーを防げます。

4. 文脈理解

「MAXDEPTH を 500 に設定」と言うだけで、直前に作成したキューに対する操作だと理解してくれます。

まとめ

IBM BobとMCPを組み合わせることで、IBM MQの運用管理が劇的に簡単になりました。

  • 専門知識不要: MQSCコマンドを知らなくても操作可能
  • 自然な対話: 日本語で普通に会話するだけ
  • 高速な対応: 複雑な調査も数秒で完了

特に、障害発生時の初動調査や、緊急時の設定変更など、スピードが求められる場面で威力を発揮します。

補足:IBM MQ Webコンソールでの確認

Bobでの操作結果は、IBM MQ Webコンソールからも直接確認できます。

アクセス方法:

  1. ブラウザで以下のURLにアクセス:
    https://localhost:9443/ibmmq/console/
    

スクリーンショット 2026-03-10 19.51.34.png

  1. ログイン情報を入力:

    • ユーザー名: admin
    • パスワード: MySecretPassword1!(コンテナ起動時に指定したもの)
      スクリーンショット 2026-03-10 19.53.28.png
  2. メニューから「QM1の管理」を選択
    スクリーンショット 2026-03-10 19.54.46.png

  3. 「キュー」タブでキューの一覧と詳細を確認
    スクリーンショット 2026-03-10 19.55.35.png

参考リンク

4
1
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?