はじめに
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(保存)→ Enter → Ctrl + 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モードで使用しています。
自動承認アクションの設定
MCP操作をスムーズに行うため、自動承認アクションを設定することを推奨します。
設定手順:
- IBM Bobの設定画面を開く
- 「自動承認アクション」セクションに移動
- 以下の項目を追加:
-
mcp_call_tool- MCPツールの実行を自動承認 -
execute_command- コマンド実行を自動承認(オプション)
-
セキュリティ上の注意
自動承認アクションを有効にすると、Bobが確認なしでMQの設定変更を実行できるようになります。
本番環境では慎重に使用し、テスト環境での使用を推奨します。
実際の操作例
1. キューマネージャーの状態確認
私: 「現在ローカルで稼働しているMQのキューマネージャーとそのステータスを教えてください。」
従来であれば、コンテナ内で dspmq コマンドを実行する必要がありました:
# 従来の方法
docker exec <container_id> dspmq
# または
podman exec <container_id> dspmq
しかし、自然言語で質問するだけで情報を取得できました。
2. メッセージ滞留の確認
目的: 運用監視において、メッセージが滞留しているキューを特定することで、以下を確認できます:
- 処理が滞っているキューの発見
- コンシューマーアプリケーションの停止検知
- システムの健全性チェック
Depth(キュー深度)とは
Depthは、キューに現在格納されているメッセージの数を表します。
- Depth = 0: キューは空(正常に処理されている)
- Depth > 0: メッセージが滞留している(要確認)
通常、メッセージはプロデューサー(送信側)からキューに投入され、コンシューマー(受信側)が取り出して処理します。Depthが増え続ける場合、コンシューマーの処理が追いついていない、または停止している可能性があります。
私: 「QM1に登録されているすべてのローカルキューのうち、現在メッセージの滞留数(Depth)が0より大きいものをリストアップして、詳細を教えてください。」
複雑な DISPLAY QLOCAL(*) CURDEPTH コマンドを実行し、結果を解析して表示してくれました。
3. 新規キューの作成
私: 「SMARTMETER.POWER.DATA というローカルキューを新規作成してください。」
DEFINE QLOCAL コマンドを自動生成・実行してくれました。
4. キュー設定の変更
私: 「MAXDEPTH を 500 に設定。」
文脈を理解して、対象キューに対する ALTER QLOCAL コマンドを実行してくれました。
5. テストメッセージの投入
私: 「テストメッセージを 150件 投入。」
amqsput コマンドを使って、150件のメッセージを自動投入してくれました。
6. 異常検知と対応
私: 「異常はありますか」
私: 「このままではキューが溢れる可能性があるため、一時的に MAXDEPTH を 1,000 に引き上げてください。」
7. クリーンアップ
私: 「今回はテストなので、溜まっている150件のメッセージをすべて消去(Clear)して、正常な状態(Depth=0)に戻してください。」
従来の方法との比較
| 操作 | 従来の方法(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コンソールからも直接確認できます。
アクセス方法:
- ブラウザで以下のURLにアクセス:
https://localhost:9443/ibmmq/console/
-
ログイン情報を入力:















