IBM i MCP Server セットアップ手順
このドキュメントは、IBM公式のIBM i MCP Server Documentationを日本語で使用できるようにしたものです。
MCPサーバーとは
MCP (Model Context Protocol) は、AIアシスタントと外部ツール・データソース間の標準化された通信プロトコルです。MCPサーバーは以下の機能を提供します
- ツール提供: AIが実行可能な機能(データベースクエリ、システム情報取得など)を公開
- リソース提供: AIがアクセス可能なデータソース(ファイル、API、システム情報など)を提供
- 標準化された通信: JSON-RPC 2.0ベースの統一されたインターフェース
MCPサーバーには2つのタイプがあります
- ローカル(Stdio)サーバー: ユーザーのマシン上でローカルに実行され、標準入出力で通信
- リモート(SSE)サーバー: リモートマシン上で実行され、HTTP/HTTPS経由でServer-Sent Events(SSE)を使用して通信
Mapepireとは
Mappepire は、IBM i(AS/400)システムのDB2データベースへのモダンなアクセスを提供するオープンソースプロジェクトです。
主な特徴
- RESTful API: HTTP/HTTPSを介してDB2 for iへのアクセスを提供
- SQLクエリ実行: リモートからIBM iのデータベースに対してSQLクエリを実行可能
- セキュアな接続: TLS/SSL暗号化による安全な通信をサポート
- 軽量: Node.js環境で動作し、最小限のリソースで実行可能
- 統合性: 既存のIBM iセキュリティモデル(ユーザープロファイル、権限)と統合
MCPサーバーとの関係
IBM i MCP サーバーは、Mappepireをデータソースとして使用します。これにより:
- AIアシスタントがIBM iシステムの情報にアクセス可能
- データベースクエリ、システムアクティビティ監視などの操作を実行
- IBM iの豊富なシステム情報をAIの文脈として活用
システム構成図
MCPサーバーの構成例として、以下の3種類を示します。本ドキュメントでは、パターン1: IBM i上にMCPサーバーを構築する手順を説明します。
パターン1: IBM i上にMCPサーバーを構築(本ドキュメントで説明)
IBM iシステム内にMCPサーバーとMappepireサーバーの両方を配置する構成です。
パターン2: ローカルPC上にMCPサーバーを構築
開発者のPC(Windows/macOS/Linux)上にMCPサーバーを配置し、リモートのIBM iシステム上のMappepireサーバーに接続する構成です。
パターン3: Linux/Windowsサーバー上にMCPサーバーを構築
専用のLinux/Windowsサーバー上にMCPサーバーを配置し、リモートのIBM iシステム上のMappepireサーバーに接続する構成です。
通信フロー(共通)
- Bob → MCP Server: BobはMCP Protocol(JSON-RPC 2.0)を使用してMCPサーバーと通信
- MCP Server → Mappepire: MCPサーバーはMappepireのREST APIを使用してデータベースアクセスをリクエスト
- Mappepire → DB2/QSYS2: MappepireはSQLクエリを実行してIBM iのデータベースやシステム情報にアクセス
- 応答の逆流: データはMappepire → MCP Server → Bobの順に返される
IBM i MCP Server セットアップ手順
前提条件
IBM i MCP Serverは、以下の環境で動作します
- Linux/Unix系OS: Ubuntu、macOS、その他のLinux/Unix環境
- Windows: Windows 10/11(WSL2推奨)
- IBM i: IBM i 7.2以降(Open Source環境が必要)
本ドキュメントでは、IBM i 7.6上にMCPサーバーを導入する手順を説明します。
IBM i上でMCPサーバーを実行することで、同一システム内でMappepireとMCPサーバーが連携し、効率的なデータアクセスが可能になります。
1. 作業ディレクトリの作成
MCPサーバー用の専用ディレクトリを作成します。MCPサーバーのファイルを一箇所にまとめることで管理が容易になり、他のシステムファイルとの混在を避けることができます。
# MCPUSRディレクトリを作成(MCPサーバー専用の作業領域)
mkdir MCPUSR
# 作成したディレクトリに移動(以降の作業はこのディレクトリ内で実行)
cd /home/MCPUSR
2. 環境変数の設定
IBM i Open Sourceパッケージのコマンド(git、npm、nodeなど)を使用できるようにパスを設定します。IBM iのOpen Sourceツールは/QOpenSys/pkgs/binにインストールされているため、このパスを環境変数に追加することでコマンドを直接実行できるようになります。
# Open Sourceパッケージのパスを環境変数PATHに追加
export PATH=/QOpenSys/pkgs/bin:$PATH
3. 前提条件の確認
MCPサーバーの実行に必要なNode.js(MCPサーバーの実行環境)とMappepire(データベース接続サーバー)が正しくインストールされているか確認します。これらが動作していないとMCPサーバーは正常に機能しないため、事前確認により後続の手順でのエラーを防ぎます。
# Node.jsのバージョンを確認(v18以降が必要)
node --version
# Mappepireサーバーの起動状態を確認(activeであることを確認)
sc check mapepire
4. リポジトリのクローン
IBM公式のMCPサーバーのソースコードをGitHubからダウンロードします。MCPサーバーのソースコードはGitHub上で公開されているため、git cloneコマンドで最新版を取得し、serverディレクトリに移動することでビルドに必要なファイルがある場所で作業を開始します。
# GitHubからMCPサーバーのリポジトリをクローン
git clone https://github.com/IBM/ibmi-mcp-server.git
# サーバーディレクトリに移動(ビルドに必要なpackage.jsonなどが存在)
cd ibmi-mcp-server/server
5. 依存関係のインストール
MCPサーバーに必要なNode.jsパッケージ(ライブラリ)をインストールします。package.jsonに定義された依存パッケージをインストールしますが、--ignore-scriptsオプションを使用してIBM i環境では実行できないスクリプト(Linux/macOS専用)をスキップします。
# npm installで依存パッケージをインストール(postinstallスクリプトはスキップ)
npm install --ignore-scripts
6. package.jsonの編集
注意: この手順は暫定的な対応方法であり、IBM公式ドキュメントには記載されていません。
元の構成では、postbuild で tsx ツールが内部的に esbuild を使用してファイルをダブルクリック実行可能にしております。IBM i 環境ではダブルクリック機能は不要であり、かつ esbuild が IBM i プラットフォームに対応していないため、npm install --ignore-scripts でインストールエラーを回避し、postbuild スクリプトを削除すること今回は編集作業を行います。
# viエディタでpackage.jsonを開く
vi package.json
"scripts"セクションから以下の行を削除します。
"postbuild": "tsx scripts/make-executable.ts dist/index.js",
補足: 将来的にIBM公式がIBM i対応版をリリースする可能性があるため、この手順が不要になる場合があります。
7. ビルド
TypeScriptで書かれたソースコードをJavaScriptにコンパイルします。Node.jsはJavaScriptを実行するため、TypeScriptソースコードを実行可能なJavaScriptに変換する必要があり、ビルド結果はdist/ディレクトリに出力されます。
# TypeScriptをJavaScriptにコンパイル(dist/ディレクトリに出力)
npm run build
8. 環境設定ファイルの作成
データベース接続情報とツール設定パスを定義します。MCPサーバーがMappepire経由でIBM iのデータベースに接続するための認証情報と、使用するツール定義ファイルのパスを設定し、.envファイルは環境変数として読み込まれます。
# 親ディレクトリ(ibmi-mcp-server)に移動
cd ..
# サンプル環境設定ファイルをコピーして.envファイルを作成
cp .env.example .env
# viエディタで.envファイルを編集
vi .env
以下の項目を編集します(ユーザー名とパスワードは任意のIBM iユーザープロファイルを使用)
DB2i_HOST=localhost # Mappepireサーバーのホスト(同一システムの場合はlocalhost)
DB2i_USER=MCPUSR # IBM iのユーザープロファイル名
DB2i_PASS=MCPUSR # 対応するパスワード
注意: DB2i_USERとDB2i_PASSには、IBM iシステムで有効なユーザープロファイルとパスワードを指定してください。このユーザーはデータベースへのアクセス権限が必要です。
9. ツール設定ファイルの作成
MCPサーバーが提供するツール(AIアシスタントが実行できるSQLクエリ)を定義します。YAMLファイルでツールを定義することで、AIアシスタントがどのようなデータベースクエリを実行できるかを制御でき、この例ではシステムアクティビティ情報を取得するツールを定義しています。
# toolsディレクトリを作成(存在しない場合)
mkdir -p tools
# viエディタでquickstart.yamlファイルを作成
vi tools/quickstart.yaml
tools/quickstart.yamlの内容
注意:現時点(2026/1/26)、IBM公式Documentにあるyamlファイルをデプロイした場合、SQLパーサーによるエラーが出力されます。そのため公式のyamlファイルに記載されていませんが下記の情報を追記しております。
security:
readOnly: false
sources:
ibmi-system:
host: ${DB2i_HOST}
user: ${DB2i_USER}
password: ${DB2i_PASS}
port: 8076
ignore-unauthorized: true
tools:
system_activity:
source: ibmi-system
description: "Current system activity information including active jobs and resource utilization"
parameters: []
security:
readOnly: false
statement: |
SELECT * FROM TABLE(QSYS2.SYSTEM_ACTIVITY_INFO())
toolsets:
performance:
tools:
- system_activity
10. MCPサーバーの起動
HTTP/SSE経由でリモートアクセス可能なMCPサーバーを起動します。start:httpスクリプトを使用することでBobなどのAIアシスタントがHTTP経由でMCPサーバーに接続できるようになり、--toolsオプションで使用するツール定義ファイルを指定します。
# serverディレクトリに移動
cd server/
# MCPサーバーをHTTPモードで起動(ポート3010でリッスン)
npm run start:http -- --tools ../tools/quickstart.yaml
起動確認
以下のメッセージが表示されれば成功
🚀 MCP Server running at: http://0.0.0.0:3010/mcp
11. BobでのMCPサーバー接続設定
BobがIBM i上で動作しているMCPサーバーに接続できるように設定します。BobはMCP設定ファイルを読み込んで利用可能なMCPサーバーを認識し、この設定によりBobがHTTP/SSE経由でMCPサーバーと通信してIBM iのデータにアクセスできるようになります。
設定ファイルの編集
-
Bobの設定ファイルを開く
Bobの設定ファイルは接続するMCPサーバーの情報を保存する場所で、OSごとに保存場所が異なります。
-
macOS:
~/Library/Application Support/IBM Bob/User/globalStorage/ibm.bob-code/settings/mcp_settings.json -
Windows:
%APPDATA%\IBM Bob\User\globalStorage\ibm.bob-code\settings\mcp_settings.json
-
macOS:
-
以下の設定を追加
この設定により、BobがMCPサーバーの場所(URL)、通信方式(streamable-http)、および接続パラメータを認識します。
{ "mcpServers": { "IBM i mcp server": { "type": "streamable-http", // HTTP/SSE通信を使用 "url": "http://<IP address>:3010/mcp", // MCPサーバーのエンドポイント "headers": { }, "alwaysAllow": [""], // すべてのツールを自動許可 "disabled": false // サーバーを有効化 } } }注意:
<IP address>をIBM iシステムのIPアドレスに置き換えてください。設定項目の説明:
-
type: 通信プロトコルの種類(streamable-httpはHTTP/SSE方式) -
url: MCPサーバーのエンドポイントURL(ポート3010はMCPサーバーのデフォルトポート) -
alwaysAllow: ツールの自動許可設定(空配列はすべてのツールを許可) -
disabled: サーバーの有効/無効を切り替え(falseで有効)
-
接続確認
BobとMCPサーバーが正しく接続できているか確認します。
手順:
-
Bobを再起動
設定ファイルの変更を反映させるため、Bobを再起動する必要があります。
-
Bobのチャット画面で「IBM iのシステムアクティビティを表示して」などと入力
この質問により、BobがMCPサーバー経由でIBM iのデータベースにアクセスし、QSYS2.SYSTEM_ACTIVITY_INFO()の情報を取得しようとします。
-
MCPサーバー経由でIBM iの情報が取得できれば成功
Bobがシステムアクティビティ情報(CPU使用率、メモリ使用率、アクティブジョブ数など)を表示すれば、接続が正常に機能しています。
別のツールを使用する場合
IBM i MCP Serverでは、デフォルトのquickstart.yaml以外のツールを使用する場合、以下の2つの方法があります。
方法1: 公式MCPツールをダウンロードして使用
IBM公式が提供する豊富なMCPツールセットを利用できます。
利用可能なツール一覧:
上記のサイトから、使用したいMCPツールのYAMLファイルをディレクトリにダウンロードし、.envファイルのPATHを書き換えて利用してください。
セットアップ手順:
-
MCPサーバーのディレクトリに移動:
YAMLファイルを適切な場所(
tools/ディレクトリ)に保存するため、MCPサーバーのルートディレクトリに移動します。cd /home/MCPUSR/ibmi-mcp-server -
使用したいツールのYAMLファイルをダウンロード:
curlコマンドを使用してIBM公式リポジトリから必要なツールのYAMLファイルをダウンロードします。-oオプションで保存先のファイル名を指定することで、IBM公式が提供する事前定義されたツールセット(CPU使用率、メモリ使用率、ジョブ管理、セキュリティ情報など)を簡単に利用できます。# 例: パフォーマンス監視ツールを使用する場合 # CPU使用率、メモリ使用率、ディスクI/Oなどのパフォーマンス情報を取得するツール群 curl -o tools/performance.yaml https://raw.githubusercontent.com/IBM/ibmi-mcp-server/main/tools/performance/performance.yaml # 例: システム管理ツールを使用する場合 # ジョブ管理、サブシステム情報、システム値などの管理機能を提供するツール群 curl -o tools/sys-admin.yaml https://raw.githubusercontent.com/IBM/ibmi-mcp-server/main/tools/sys-admin/sys-admin.yaml # 例: セキュリティツールを使用する場合 # ユーザー権限、オブジェクト権限、監査ログなどのセキュリティ情報を取得するツール群 curl -o tools/security-ops.yaml https://raw.githubusercontent.com/IBM/ibmi-mcp-server/main/tools/security/security-ops.yaml -
.envファイルのPATHを書き換え:ダウンロードした新しいYAMLファイルを使用するようMCPサーバーに指示するため、MCPサーバーが読み込むツール定義ファイルのパスを変更します。
vi .env以下のように変更します(使用するYAMLファイルに応じて):
# パフォーマンス監視ツールを使用する場合 TOOLS_YAML_PATH=./tools/performance.yaml # または、システム管理ツールを使用する場合 TOOLS_YAML_PATH=./tools/sys-admin.yaml # または、セキュリティツールを使用する場合 TOOLS_YAML_PATH=./tools/security-ops.yaml -
MCPサーバーを再起動:
新しいツール定義を読み込むためMCPサーバーを再起動し、
--toolsオプションで使用するYAMLファイルを明示的に指定します。cd server/ npm run start:http -- --tools ../tools/performance.yaml
主要なツールカテゴリのダウンロードURL:
-
Performance (パフォーマンス監視):
https://raw.githubusercontent.com/IBM/ibmi-mcp-server/main/tools/performance/performance.yaml -
Sys-Admin (システム管理):
https://raw.githubusercontent.com/IBM/ibmi-mcp-server/main/tools/sys-admin/sys-admin.yaml -
Security (セキュリティ):
https://raw.githubusercontent.com/IBM/ibmi-mcp-server/main/tools/security/security-ops.yaml -
Developer (開発者向け):
https://raw.githubusercontent.com/IBM/ibmi-mcp-server/main/tools/developer/object-statistics-dev.yaml -
Sample (サンプル):
https://raw.githubusercontent.com/IBM/ibmi-mcp-server/main/tools/sample/employee-info.yaml
詳細は公式ドキュメントを参照してください: https://ibm-d95bab6e.mintlify.app/sql-tools/overview
方法2: カスタムYAMLファイルを自身で作成
独自のツールを定義したYAMLファイルを作成することもできます。この方法は業務固有のデータベーステーブルやカスタムクエリをAIアシスタントから利用可能にしたい場合に有効で、自社の業務に特化したツールセットを構築できます。
セットアップ手順
-
カスタムYAMLファイルを作成
viエディタを使用して独自のツール定義ファイルを作成し、このファイルにAIアシスタントが実行できるSQLクエリやツールを定義します。vi tools/custom-tools.yaml以下の内容を記述します。ライブラリー名やデータベース名は任意のものに変更してください。
sources: ibmi-system: host: ${DB2i_HOST} user: ${DB2i_USER} password: ${DB2i_PASS} port: 8076 ignore-unauthorized: true tools: # カスタムツール1: 特定テーブルの情報取得 get_customer_info: source: ibmi-system description: "顧客情報を取得" parameters: - name: customer_id type: string description: "顧客ID" required: true security: readOnly: false statement: | SELECT * FROM DEMOAPP.CUSTOMERP WHERE CUSTID = :curly_loop: stomer_id # カスタムツール2: システムアクティビティ system_activity: source: ibmi-system description: "システムアクティビティ情報" parameters: [] security: readOnly: false statement: | SELECT * FROM TABLE(QSYS2.SYSTEM_ACTIVITY_INFO()) # カスタムツール3: ジョブ一覧 active_jobs: source: ibmi-system description: "アクティブなジョブ一覧" parameters: [] security: readOnly: false statement: | SELECT JOB_NAME, SUBSYSTEM, JOB_STATUS, CPU_TIME FROM TABLE(QSYS2.ACTIVE_JOB_INFO()) WHERE JOB_STATUS = 'ACTIVE' toolsets: custom_toolset: tools: - get_customer_info - system_activity - active_jobs -
.envファイルを編集独自に定義したツールセットを使用するため、MCPサーバーが作成したカスタムYAMLファイルを読み込むように設定を変更します。
vi .env以下のように変更します
TOOLS_YAML_PATH=./tools/custom-tools.yaml -
MCPサーバーを再起動
新しいカスタムツール定義を読み込むためMCPサーバーを再起動し、
--toolsオプションで作成したカスタムYAMLファイルを指定します。cd server/ npm run start:http -- --tools ../tools/custom-tools.yaml
YAMLファイルの構造
-
sources: データベース接続情報を定義 -
tools: 個別のツールを定義-
source: 使用するデータソース名 -
description: ツールの説明(AIが理解するための情報) -
parameters: ツールのパラメータ(オプション) -
statement: 実行するSQLステートメント
-
-
toolsets: ツールをグループ化
参考: IBM公式のYAMLファイル例を参考にすると、より高度なツールを作成できます。
参考: Mappepireサーバーのセットアップ手順
前提条件
- IBM i 7.3以降
- Node.js 18以降
インストール
# Node.jsのインストール(未インストールの場合)
yum install nodejs18
# Mappepireサーバーのインストール
npm install yum install mapepire-server
起動
# Service Commanderで起動(推奨)
sc start mapepire