概要
インストール
コンテンツ詳細
代替品
什么是IBM i MCP Server?
IBM i MCP Serverは、AIアシスタントとIBM iシステムをつなぐ橋渡しの役割を果たします。Model Context Protocol標準に基づいており、AIアシスタントがシステム監視、データベースクエリ、パフォーマンス分析などの操作を安全に実行できるようにし、システムの低レベルに直接アクセスする必要はありません。如何使用IBM i MCP Server?
簡単な設定で、Claude Desktop、VSCode、CursorなどのさまざまなAIクライアントにサーバーを統合できます。サーバーはローカル接続とリモートHTTP接続をサポートし、安全な認証メカニズムを提供します。适用场景
システム管理者、開発者、運用チームに適しており、日常のシステム監視、パフォーマンス分析、障害排除、データベースクエリなどのタスクに使用できます。特に、IBM iシステムと頻繁にやり取りする必要があるシチュエーションに最適です。主要功能
如何使用
使用案例
常见问题
相关资源
インストール
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio",
"NODE_OPTIONS": "--no-deprecation"
}
}
}
}
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "${IBMI_TOOLS_PATH}"],
"env": {
"DB2i_HOST": "${DB2i_HOST}",
"DB2i_USER": "${DB2i_USER}",
"DB2i_PASS": "${DB2i_PASS}",
"DB2i_PORT": "${DB2i_PORT:-8076}",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "streamableHttp",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
{
"mcpServers": {
"default-server": {
"command": "node",
"args": ["dist/index.js"],
"env": {
"TOOLS_YAML_PATH": "prebuiltconfigs",
"NODE_OPTIONS": "--no-deprecation",
"DB2i_HOST": "<DB2i_HOST>",
"DB2i_USER": "<DB2i_USER>",
"DB2i_PASS": "<DB2i_PASS>",
"DB2i_PORT": "<DB2i_PORT>",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}## 🚀 ibmi-mcp-server
**IBM i用のMCPサーバー**
このサーバーは、IBM iシステムとの連携を可能にし、SQLツールの実行やシステムのモニタリング、管理、自動化などの機能を提供します。
<div align="center">
[](https://www.typescriptlang.org/)
[](https://github.com/modelcontextprotocol/typescript-sdk)
[](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/main/docs/specification/2025-06-18/changelog.mdx)
[](./CHANGELOG.md)
[](./vitest.config.ts)
[](https://opensource.org/licenses/Apache-2.0)
[](https://github.com/IBM/ibmi-mcp-server.git)
[](https://deepwiki.com/IBM/ibmi-mcp-server)
**📚 [ドキュメント](https://ibm-d95bab6e.mintlify.app/) | ⚠️ ドキュメントは現在積極的に開発中です**

</div>
<details>
<summary><strong>📋 目次</strong></summary>
- [ibmi-mcp-server](#ibmi-mcp-server)
- [🚀 クイックスタート](#-クイックスタート)
- [1. インストール](#1-インストール)
- [2. プロジェクトのビルド](#2-プロジェクトのビルド)
- [3. サーバー.envファイルの作成](#3-サーバーenvファイルの作成)
- [4. サーバーの起動](#4-サーバーの起動)
- [5. サンプルエージェントの実行](#5-サンプルエージェントの実行)
- [サンプルエージェントの実行:](#サンプルエージェントの実行)
- [サンプルスクリプトの実行:](#サンプルスクリプトの実行)
- [6. テストの実行](#6-テストの実行)
- [🔌 MCPクライアントへのインストール](#-mcpクライアントへのインストール)
- [前提条件: ローカルインストール](#前提条件-ローカルインストール)
- [リモートサーバーの設定](#リモートサーバーの設定)
- [クライアントの設定](#クライアントの設定)
- [トラブルシューティング](#トラブルシューティング)
- [🤖 IBM iエージェント](#-ibm-iエージェント)
- [主要機能](#主要機能)
- [始めるには](#始めるには)
- [⚙️ 設定](#️-設定)
- [🔐 IBM i HTTP認証 (ベータ版)](#-ibm-i-http認証-ベータ版)
- [認証フロー](#認証フロー)
- [設定](#設定)
- [アクセストークンの取得](#アクセストークンの取得)
- [オプション1: トークンスクリプトの使用 (推奨)](#オプション1-トークンスクリプトの使用-推奨)
- [シーケンスの概要](#シーケンスの概要)
- [クライアントの統合](#クライアントの統合)
- [セキュリティに関する考慮事項](#セキュリティに関する考慮事項)
- [認証エンドポイント](#認証エンドポイント)
- [🧩 SQLツールの設定](#-sqlツールの設定)
- [ソース](#ソース)
- [ツール](#ツール)
- [ツールセット](#ツールセット)
- [🚀 サーバーの実行 (開発環境)](#-サーバーの実行-開発環境)
- [トランスポートモード](#トランスポートモード)
- [HTTPトランスポート (開発に推奨)](#httpトランスポート-開発に推奨)
- [Stdioトランスポート (CLIツールとMCPインスペクター用)](#stdioトランスポート-cliツールとmcpインスペクター用)
- [セッションモード (HTTPのみ)](#セッションモード-httpのみ)
- [CLIオプション](#cliオプション)
- [一般的な開発シナリオ](#一般的な開発シナリオ)
- [開発のヒント](#開発のヒント)
- [トラブルシューティング](#トラブルシューティング-1)
- [🕵️♂️ MCPインスペクター](#️️-mcpインスペクター)
- [Docker & Podmanデプロイメント](#docker--podmanデプロイメント)
- [前提条件](#前提条件)
- [Docker](#docker)
- [Podman (Dockerの代替手段)](#podman-dockerの代替手段)
- [MCPゲートウェイイメージのビルド](#mcpゲートウェイイメージのビルド)
- [MCP環境の設定](#mcp環境の設定)
- [Dockerでのクイックスタート](#dockerでのクイックスタート)
- [Podmanでのクイックスタート](#podmanでのクイックスタート)
- [コンテナアーキテクチャ](#コンテナアーキテクチャ)
- [🔧 サービス管理](#-サービス管理)
- [サービスの起動](#サービスの起動)
- [サービスの停止](#サービスの停止)
- [ログの表示](#ログの表示)
- [サービスの再構築](#サービスの再構築)
- [MCPゲートウェイUI:](#mcpゲートウェイui)
- [仮想サーバーカタログデモ (近日公開!!)](#仮想サーバーカタログデモ-近日公開)
- [アーキテクチャの概要](#アーキテクチャの概要)
- [主要機能](#主要機能-1)
- [プロジェクト構造](#プロジェクト構造)
- [システムの拡張](#システムの拡張)
- [「ロジックが例外を投げ、ハンドラーがキャッチする」パターン](#「ロジックが例外を投げハンドラーがキャッチする」パターン)
- [📜 ライセンス](#-ライセンス)
</details>
## 🚀 クイックスタート
### 1. インストール
リポジトリをクローンし、依存関係をインストールします。
```bash
git clone https://github.com/IBM/ibmi-mcp-server.git
cd ibmi-mcp-server/
npm install
2. プロジェクトのビルド
npm run build
# または、クリーンインストールの場合は 'npm run rebuild' を使用
3. サーバー.envファイルの作成
cp .env.example .env
.env ファイルにDb2 for iの接続詳細を記入します。
# IBM i DB2 for i接続設定
# YAML SQLツールがIBM iシステムに接続するために必要
DB2i_HOST=
DB2i_USER=
DB2i_PASS=
DB2i_PORT=8076
DB2i_IGNORE_UNAUTHORIZED=true
設定オプションの詳細については、設定 セクションを参照してください。
4. サーバーの起動
-
Stdio経由 (デフォルト):
npm run start:stdio -
Streamable HTTP経由:
npm run start:httpデフォルトでは、サーバーは
prebuiltconfigsディレクトリに保存されているSQLツールを登録します。このパスは.envファイル (TOOLS_YAML_PATH) で設定されています。CLIを使用してSQLツールのパスをオーバーライドすることができます。- CLIオプション:
--tools <path>npm run start:http -- --tools <path> - トランスポートオプション:
--transport <type>npm run start:http -- --transport http # または stdio
- CLIオプション:
5. サンプルエージェントの実行
サーバーが http モードで実行されていることを確認します。
npm run start:http
別のターミナルで、tests/agents ディレクトリに移動し、README のセットアップ手順に従います。
サンプルエージェントの実行:
cd tests/agents
export OPENAI_API_KEY=your_open_ai_key
uv run agent.py -p "What is my system status?"
サンプルスクリプトの実行:
cd tests/agents
# 構成されたツールのリストを表示:
uv run test_tool_annotations.py
# サーバーリソースのリストを表示:
uv run test_toolset_resources.py
注意:
test_tool_annotations.pyとrun test_toolset_resources.pyはOpenAI APIキーを必要としません。
6. テストの実行
このテンプレートは、テストに Vitest を使用しており、すべてのコンポーネントが正しく連携することを確保するために、統合テストに重点を置いています。
- すべてのテストを一度に実行:
npm test - ウォッチモードでテストを実行:
npm run test:watch - テストを実行し、カバレッジレポートを生成:
npm run test:coverage
🔌 MCPクライアントへのインストール
このサーバーは、ローカル (stdio) または リモート (HTTP) 接続を使用して、任意のMCP互換クライアントに統合できます。
前提条件: ローカルインストール
ローカル開発の場合は、npm link を使用してサーバーをグローバルにインストールします。
# ibmi-mcp-serverディレクトリから
npm install
npm run build
npm link
これにより、ibmi-mcp-server コマンドがマシン上でグローバルに使用可能になります。リンクした後は、任意のクライアント設定で npx ibmi-mcp-server を使用できます。
注意:
TOOLS_YAML_PATHは、ツール構成ディレクトリへの絶対パスである必要があります (例:/full/path/to/prebuiltconfigs)。
リモートサーバーの設定
HTTPリモート接続の場合は、以下の手順が必要です。
-
IBM i認証を有効にしてサーバーを起動:
# .envに以下の設定があることを確認: MCP_AUTH_MODE=ibmi IBMI_HTTP_AUTH_ENABLED=true IBMI_AUTH_ALLOW_HTTP=true # 開発用のみ! npm run start:http -
アクセストークンを取得:
# トークンスクリプトを使用して認証 node get-access-token.js --verbose # または、環境変数に直接設定 export IBMI_MCP_ACCESS_TOKEN="your-token-here"詳細な認証設定については、IBM i HTTP認証 を参照してください。
-
サーバーURLとベアラートークンでクライアントを設定 (以下の例を参照)。
⚠️ 本番環境の注意:
http://localhost:3010を本番環境のエンドポイントURLに置き換え、HTTPSを有効にすることを確認してください (IBMI_AUTH_ALLOW_HTTP=false)。
クライアントの設定
Claude Code
Claude Codeは、ローカル (stdio) およびリモート (HTTP) のMCPサーバー接続をサポートしています。CLIを使用するか、.mcp.json を直接編集してサーバーを構成できます。
オプション1: ローカルStdioサーバー (推奨)
CLIを使用する場合:
# ローカルstdioサーバーを追加
claude mcp add ibmi-mcp \
--env DB2i_HOST=your-ibmi-host.com \
--env DB2i_USER=your-username \
--env DB2i_PASS=your-password \
--env DB2i_PORT=8076 \
--env MCP_TRANSPORT_TYPE=stdio \
-- npx ibmi-mcp-server --tools /absolute/path/to/prebuiltconfigs
.mcp.json を使用する場合:
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio",
"NODE_OPTIONS": "--no-deprecation"
}
}
}
}
オプション2: リモートHTTPサーバー
CLIを使用する場合:
# 認証付きのリモートHTTPサーバーを追加
claude mcp add --transport http ibmi-mcp http://localhost:3010/mcp \
--header "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE"
.mcp.json を使用する場合:
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
環境変数の展開
Claude Codeは、.mcp.json ファイルでの環境変数の展開をサポートしており、資格情報を安全に管理できます。
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "${IBMI_TOOLS_PATH}"],
"env": {
"DB2i_HOST": "${DB2i_HOST}",
"DB2i_USER": "${DB2i_USER}",
"DB2i_PASS": "${DB2i_PASS}",
"DB2i_PORT": "${DB2i_PORT:-8076}",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
サポートされる構文:
${VAR}- 環境変数VARの値に展開${VAR:-default}-VARが設定されている場合はその値に、そうでない場合はdefaultに展開
サーバーの管理
# 構成されたサーバーのリストを表示
claude mcp list
# サーバーの詳細を取得
claude mcp get ibmi-mcp
# サーバーを削除
claude mcp remove ibmi-mcp
# Claude Codeでサーバーの状態を確認
/mcp
Claude Desktop
ローカル (Stdio)
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) または %APPDATA%\Claude\claude_desktop_config.json (Windows) を編集します。
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
リモート (HTTP)
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
VSCode
VSCodeは、Copilot Chatを通じてMCPサーバーをサポートしています。設定ファイルまたはCLIを使用して、ユーザーまたはワークスペースレベルでサーバーを構成できます。
前提条件: GitHub Copilot がインストールされ、有効になっていることを確認してください。
設定ファイルの場所
- ワークスペース:
.vscode/mcp.json(バージョン管理を通じてチームと共有) - ユーザー: ユーザープロファイルディレクトリ内の
mcp.json- macOS/Linux:
~/.config/Code/User/globalStorage/modelcontextprotocol.mcp/mcp.json - Windows:
%APPDATA%\Code\User\globalStorage\modelcontextprotocol.mcp\mcp.json
- macOS/Linux:
オプション1: ローカルStdioサーバー
CLIを使用する場合:
# ローカルstdioサーバーを追加
code --add-mcp '{
"name": "ibmiMcp",
"type": "stdio",
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}'
mcp.json を使用する場合:
{
"servers": {
"ibmiMcp": {
"type": "stdio",
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
オプション2: リモートHTTPサーバー
CLIを使用する場合:
# リモートHTTPサーバーを追加
code --add-mcp '{
"name": "ibmiMcp",
"type": "http",
"url": "http://localhost:3010/mcp",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}'
mcp.json を使用する場合:
{
"servers": {
"ibmiMcp": {
"type": "http",
"url": "http://localhost:3010/mcp",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
入力変数を使用した安全な資格情報管理
VSCodeは、入力変数をサポートしており、機密性の高い資格情報をハードコーディングせずに管理できます。
{
"inputs": [
{
"id": "db2iHost",
"type": "promptString",
"description": "IBM i DB2ホストアドレス"
},
{
"id": "db2iUser",
"type": "promptString",
"description": "IBM iユーザー名"
},
{
"id": "db2iPass",
"type": "promptString",
"description": "IBM iパスワード",
"password": true
}
],
"servers": {
"ibmiMcp": {
"type": "stdio",
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "${input:db2iHost}",
"DB2i_USER": "${input:db2iUser}",
"DB2i_PASS": "${input:db2iPass}",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
VSCodeは、サーバー起動時にこれらの値を入力するように促し、資格情報を安全に管理します。
サーバーの管理
- サーバーを表示: アクティビティバーのCopilot Chatビューを確認
- サーバーを再起動: コマンドパレット (
Cmd/Ctrl+Shift+P) → "MCP: Restart Server" を使用 - サーバーを無効にする:
mcp.jsonから削除するか、設定で無効にする
Cursor
ローカル (Stdio)
Cursor設定または .cursor/mcp.json に追加します。
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
リモート (HTTP)
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
Windsurf
ローカル (Stdio)
Windsurf構成に追加します。
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
リモート (HTTP)
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
Roo Code
ローカル (Stdio)
Roo Code設定で構成します。
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
リモート (HTTP)
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
LM Studio
ローカル (Stdio)
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio",
"NODE_OPTIONS": "--no-deprecation"
}
}
}
}
リモート (HTTP)
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
OpenCode
ローカル (Stdio)
MCPオブジェクト内で "type": "local" を使用してローカルMCPサーバーを追加します。複数のMCPサーバーを追加できます。各サーバーのキー文字列は任意の名前にできます。
opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ibmi-mcp": {
"type": "local",
"enabled": true,
"command": ["npx", "ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"environment": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
},
"enabled": true
}
}
}
サーバーを一時的に無効にする場合は、enabledをfalseに設定できます。これは、サーバーを設定から削除せずに一時的に無効にしたい場合に便利です。
リモート (HTTP)
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"ibmi-mcp": {
"type": "remote",
"enabled": true,
"url": "http://localhost:3010/mcp",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
Gemini CLI
詳細については、Gemini CLI構成 を参照してください。
- Gemini CLI設定ファイルを開きます。場所は
~/.gemini/settings.json(ここで~はホームディレクトリ) です。 settings.jsonファイルのmcpServersオブジェクトに以下を追加します。
ローカル (Stdio)
Gemini CLI設定で構成します。
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
リモート (HTTP)
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
Cline
Clineは、マーケットプレイスと手動構成の両方を通じてMCPサーバーをサポートしています。
前提条件: Cline がVSCodeにインストールされていることを確認してください。
オプション1: 手動構成
ローカル (Stdio) サーバーの場合:
- Cline を開きます。
- ハンバーガーメニューアイコン (☰) をクリック → MCP Servers を選択。
- Local Servers タブを選択。
- Edit Configuration をクリック。
- 以下の構成を追加します。
{
"mcpServers": {
"ibmi-mcp": {
"command": "npx",
"args": ["ibmi-mcp-server", "--tools", "/absolute/path/to/prebuiltconfigs"],
"env": {
"DB2i_HOST": "your-ibmi-host.com",
"DB2i_USER": "your-username",
"DB2i_PASS": "your-password",
"DB2i_PORT": "8076",
"MCP_TRANSPORT_TYPE": "stdio"
}
}
}
}
リモート (HTTP) サーバーの場合:
- Cline を開きます。
- ハンバーガーメニューアイコン (☰) をクリック → MCP Servers を選択。
- Remote Servers タブを選択。
- Edit Configuration をクリック。
- 以下の構成を追加します。
{
"mcpServers": {
"ibmi-mcp": {
"url": "http://localhost:3010/mcp",
"type": "streamableHttp",
"headers": {
"Authorization": "Bearer YOUR_ACCESS_TOKEN_HERE"
}
}
}
}
Pythonクライアント (Agno, 公式MCP SDK)
Agnoを使用したリモート (HTTP)
import asyncio
import os
from agno.agent import Agent
from agno.tools.mcp import MCPTools, StreamableHTTPClientParams
# 環境からアクセストークンを取得
token = os.environ.get('IBMI_MCP_ACCESS_TOKEN')
if not token:
raise ValueError("IBMI_MCP_ACCESS_TOKEN not set")
url = "http://localhost:3010/mcp"
server_params = StreamableHTTPClientParams(
url=url,
headers={"Authorization": f"Bearer {token}"}
)
async def main():
async with MCPTools(
url=url,
server_params=server_params,
transport="streamable-http"
) as tools:
# 利用可能なツールをリストする
result = await tools.session.list_tools()
print(f"利用可能なツール: {[t.name for t in result.tools]}")
# エージェントを作成
agent = Agent(
model="openai:gpt-4o", # またはお好みのモデル
tools=[tools],
name="ibmi-agent",
show_tool_calls=True
)
# クエリを実行
await agent.aprint_response("What is the system status?")
if __name__ == "__main__":
asyncio.run(main())
公式MCP SDKを使用したリモート (HTTP)
import asyncio
import os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main():
token = os.environ.get('IBMI_MCP_ACCESS_TOKEN')
if not token:
raise ValueError("IBMI_MCP_ACCESS_TOKEN not set")
headers = {"Authorization": f"Bearer {token}"}
async with streamablehttp_client(
"http://localhost:3010/mcp",
headers=headers
) as (read_stream, write_stream, _):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
# ツールをリストする
tools = await session.list_tools()
print(f"ツール: {[t.name for t in tools.tools]}")
# ツールを実行
result = await session.call_tool("system_status", {})
print(result)
if __name__ == "__main__":
asyncio.run(main())
トラブルシューティング
接続問題:
npm linkが正常に完了したことを確認:which ibmi-mcp-serverTOOLS_YAML_PATHが絶対パスであることを確認- IBM iの資格情報が正しいことを確認
認証エラー (リモート):
- サーバーが
IBMI_HTTP_AUTH_ENABLED=trueで実行されていることを確認 - トークンが有効であることを確認:
echo $IBMI_MCP_ACCESS_TOKEN - サーバーログで認証エラーを確認
ツール読み込みエラー:
- YAML構成を検証:
npm run validate -- --config prebuiltconfigs - ツールディレクトリのファイルパーミッションを確認
- サーバー起動ログで構文エラーを確認
🤖 IBM iエージェント
IBM iエージェントは、IBM iシステムとやり取りするために設計された特殊なコンポーネントで、モニタリング、管理、自動化などの機能を提供します。
主要機能
- IBM iとの統合: IBM iシステムのAPIとツールとのシームレスな統合。
- モジュール式アーキテクチャ: 特定のユースケースに合わせて簡単に拡張およびカスタマイズできます。
- リアルタイムモニタリング: システムのパフォーマンスと健全性を継続的にモニタリングします。
始めるには
agents ディレクトリに移動し、README のセットアップ手順に従います。これには、構成、エージェントの実行、およびサンプルに関する詳細が含まれています。ほとんどのエージェントサンプルでは、MCPサーバーがHTTPモードで実行されている必要があります。各エージェントサンプルのドキュメントを読んで詳細を確認してください。
⚙️ 設定
以下の環境変数 (または .env ファイル) を使用してサーバーを構成します。
| 変数 | 説明 | デフォルト |
|---|---|---|
MCP_TRANSPORT_TYPE |
サーバーのトランスポート: stdio または http。 |
stdio |
MCP_SESSION_MODE |
HTTPのセッションモード: stateless, stateful, または auto。 |
auto |
MCP_HTTP_PORT |
HTTPサーバーのポート。 | 3010 |
MCP_HTTP_HOST |
HTTPサーバーのホストアドレス。 | 127.0.0.1 |
MCP_ALLOWED_ORIGINS |
CORSの許可されたオリジンをカンマ区切りで指定。 | (none) |
MCP_AUTH_MODE |
HTTPの認証モード: jwt, oauth, ibmi, または none。 |
none |
MCP_AUTH_SECRET_KEY |
jwt モードで必要。 認証トークンの署名/検証に使用する秘密鍵 (最小32文字)。 |
(none - 本番環境では必ず設定する必要があります) |
OAUTH_ISSUER_URL |
oauth モードで必要。 認可サーバーの発行者URL。 |
(none) |
OAUTH_AUDIENCE |
oauth モードで必要。 このMCPサーバーのオーディエンス識別子。 |
(none) |
OPENROUTER_API_KEY |
OpenRouter.aiサービスのAPIキー。 | (none) |
OTEL_ENABLED |
OpenTelemetryインストルメンテーションを有効にするには true に設定。 |
false |
OTEL_EXPORTER_OTLP_TRACES_ENDPOINT |
トレースをエクスポートするためのOTLPエンドポイント (例: http://localhost:4318/v1/traces)。 |
(none; ファイルにログ出力) |
OTEL_EXPORTER_OTLP_METRICS_ENDPOINT |
メトリックをエクスポートするためのOTLPエンドポイント (例: http://localhost:4318/v1/metrics)。 |
(none) |
TOOLS_YAML_PATH |
YAMLツール定義のパス (ファイルまたはディレクトリ)。ディレクトリまたはグロブをサポート。 | (none) |
YAML_MERGE_ARRAYS |
複数のYAMLファイルをマージする際に、配列をマージ (true) するか置き換えるか。 |
false |
YAML_ALLOW_DUPLICATE_TOOLS |
マージされたYAMLファイル間で重複するツール名を許可する。 | false |
YAML_ALLOW_DUPLICATE_SOURCES |
マージされたYAMLファイル間で重複するソース名を許可する。 | false |
YAML_VALIDATE_MERGED |
使用する前にマージされたYAML構成を検証する。 | true |
YAML_AUTO_RELOAD |
構成ファイルが変更されたときにYAMLツールを自動的に再読み込みする。 | true |
SELECTED_TOOLSETS |
ロード/フィルタリングするツールセット名をカンマ区切りで指定 (全ロードを上書き)。 | (none) |
DB2i_HOST |
IBM i Db2 for iのホスト (Mapepireデーモンまたはゲートウェイホスト)。 | (none) |
DB2i_USER |
Db2 for i接続用のIBM iユーザープロファイル。 | (none) |
DB2i_PASS |
IBM iユーザープロファイルのパスワード。 | (none) |
DB2i_PORT |
Db2 for iに使用するMapepireデーモン/ゲートウェイのポート。 | 8076 |
DB2i_IGNORE_UNAUTHORIZED |
true の場合、MapepireのTLS証明書検証をスキップ (自己署名証明書など)。 |
true |
IBMI_HTTP_AUTH_ENABLED |
ibmi 認証モードで必要。 IBM i HTTP認証エンドポイントを有効にする。 |
false |
IBMI_AUTH_ALLOW_HTTP |
認証のためのHTTPリクエストを許可 (開発用のみ、本番環境ではHTTPSを使用)。 | false |
IBMI_AUTH_TOKEN_EXPIRY_SECONDS |
IBM i認証トークンのデフォルトのトークン有効期限 (秒)。 | 3600 (1時間) |
IBMI_AUTH_CLEANUP_INTERVAL_SECONDS |
期限切れのトークンをクリーンアップする頻度 (秒)。 | 300 (5分) |
IBMI_AUTH_MAX_CONCURRENT_SESSIONS |
許可される同時認証セッションの最大数。 | 100 |
サーバーの環境変数を設定するには、このプロジェクトのルートに .env ファイルを作成します。
cp .env.example .env
code .env
次に、.env ファイルを編集して、IBM iの接続詳細を入力します。
🔐 IBM i HTTP認証 (ベータ版)
サーバーは、IBM i HTTP認証をサポートしており、クライアントが認証済みのSQLツール実行用のアクセストークンを取得できるようになっています。これにより、ユーザーごとのコネクションプーリングと、IBM iリソースへの安全なアクセスが可能になります。
認証フロー
- クライアント認証: クライアントはHTTP Basic Authを介してIBM iの資格情報で認証します。
- トークン生成: サーバーは安全なベアラートークンを作成し、専用のコネクションプールを確立します。
- ツール実行: その後のツール呼び出しでは、ベアラートークンを使用して認証済みの実行を行います。
- プール管理: 各トークンは独自のコネクションプールを維持し、分離とセキュリティを確保します。
設定
IBM i HTTP認証を有効にするには、暗号化キーを設定し、サーバー環境を構成する必要があります。IBM iの資格情報を送信中に保護するために、認証フローではRSAとAESの暗号化を使用します。サーバー用のRSAキーペアを生成する必要があります。
mkdir -p secrets
openssl genpkey -algorithm RSA -out secrets/private.pem -pkeyopt rsa_keygen_bits:2048
openssl rsa -pubout -in secrets/private.pem -out secrets/public.pem
以下の設定で .env ファイルを作成または更新します。
# IBM i認証システムを有効にする
IBMI_HTTP_AUTH_ENABLED=true
MCP_AUTH_MODE=ibmi
# IBM i認証設定
IBMI_AUTH_KEY_ID=development
IBMI_AUTH_PRIVATE_KEY_PATH=secrets/private.pem
IBMI_AUTH_PUBLIC_KEY_PATH=secrets/public.pem
# セキュリティ設定
IBMI_AUTH_ALLOW_HTTP=true # 開発用のみ - 本番環境ではHTTPSを使用
IBMI_AUTH_TOKEN_EXPIRY_SECONDS=3600 # トークンの有効期限 (1時間)
# リソース管理
IBMI_AUTH_MAX_CONCURRENT_SESSIONS=100
IBMI_AUTH_CLEANUP_INTERVAL_SECONDS=300
# IBM i接続詳細
DB2i_HOST=your-ibmi-host
DB2i_USER=your-username
DB2i_PASS=your-password
アクセストークンの取得
オプション1: トークンスクリプトの使用 (推奨)
含まれている get-access-token.js スクリプトを使用して、認証トークンを取得します。
# .envファイルから資格情報を使用
node get-access-token.js --verbose
# CLI引数を使用 (`.env` を上書き)
node get-access-token.js --user myuser --password mypass --host my-ibmi-host
# シェル評価用のクワイエットモード
eval $(node get-access-token.js --quiet)
echo $IBMI_MCP_ACCESS_TOKEN
スクリプトは自動的に以下のことを行います。
.envからIBM iの資格情報を読み込み、CLIでのフォールバックをサポート- サーバーの公開鍵を取得
- クライアント側で資格情報を暗号化
- アクセストークンを要求
IBMI_MCP_ACCESS_TOKEN環境変数を設定- コピー&ペースト用のエクスポートコマンドを提供
シーケンスの概要
sequenceDiagram
participant CLI as クライアントCLI
participant Auth as MCPサーバー (/api/v1/auth)
participant IBM as IBM i
CLI->>Auth: GET /api/v1/auth/public-key
Auth-->>CLI: { keyId, publicKey }
CLI->>CLI: AES-256-GCMセッションキー + IVを生成
CLI->>CLI: セッションキーで資格情報とリクエストボディを暗号化
CLI->>CLI: サーバーの公開鍵 (RSA-OAEP) でセッションキーを暗号化
CLI->>Auth: POST /api/v1/auth { keyId, encryptedSessionKey, iv, authTag, ciphertext }
Auth->>Auth: keyIdを検索し、秘密鍵でセッションキーを復号化
Auth->>Auth: 暗号文を復号化、GCMタグを検証、ペイロードを検証
Auth->>IBM: 復号化された資格情報でIBM iに対して認証
IBM-->>Auth: 成功/失敗
Auth->>Auth: アクセストークンを生成、プールセッションをプロビジョニング
Auth-->>CLI: 201 JSON { access_token, expires_in, ... }
クライアントの統合
トークンを取得したら、MCPクライアントでリクエストを認証するために使用します。
import asyncio
import os
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def main():
# 環境からアクセストークンを取得
token = os.environ.get('IBMI_MCP_ACCESS_TOKEN')
if not token:
raise ValueError("IBMI_MCP_ACCESS_TOKEN環境変数が設定されていません")
# 認証ヘッダーを設定
headers = {"Authorization": f"Bearer {token}"}
# 認証付きでIBM i MCPサーバーに接続
async with streamablehttp_client(
"http://localhost:3010/mcp",
headers=headers
) as (read_stream, write_stream, _):
# 認証済みのストリームを使用してセッションを作成
async with ClientSession(read_stream, write_stream) as session:
# 接続を初期化
await session.initialize()
# 利用可能なツールをリストする (現在はIBM iの資格情報で認証済み)
tools = await session.list_tools()
print(f"利用可能なツール: {[tool.name for tool in tools.tools]}")
# 認証済みのIBM iアクセスでツールを実行
result = await session.call_tool("system_status", {})
print(f"システムステータスの結果: {result}")
if __name__ == "__main__":
asyncio.run(main())
セキュリティに関する考慮事項
開発環境:
IBMI_AUTH_ALLOW_HTTP=trueでHTTPをテストに使用- ローカルホスト/信頼できるネットワークのみを使用
- テスト用に短いトークン有効期限を使用
本番環境:
IBMI_AUTH_ALLOW_HTTP=falseでHTTPSを強制- 適切なTLS証明書を使用
- 安定性のために長いトークン有効期限を使用
- ネットワークセキュリティとアクセス制御を設定
- リソース使用状況を監視するために
IBMI_AUTH_MAX_CONCURRENT_SESSIONSを監視
認証エンドポイント
有効になっている場合 (IBMI_HTTP_AUTH_ENABLED=true)、サーバーは以下のエンドポイントを提供します。
| エンドポイント | メソッド | 説明 |
|---|---|---|
/api/v1/auth |
POST | IBM iの資格情報で認証し、ベアラートークンを受け取る |
🧩 SQLツールの設定
このMCPサーバーで使用するツールを構成する主な方法は、tools.yaml ファイルを使用することです (例については prebuiltconfigs/ を参照)。各yamlファイルには、sources、tools、および toolsets の3つの主要セクションがあります。以下は各セクションの概要です。
ソース
tools.yaml の sources セクションは、MCPサーバーがアクセスできるデータソースを定義します。
sources:
ibmi-system:
host: ${DB2i_HOST}
user: ${DB2i_USER}
password: ${DB2i_PASS}
port: 8076
ignore-unauthorized: true
[!NOTE] 環境変数
DB2i_HOST、DB2i_USER、DB2i_PASS、およびDB2i_PORTは、サーバーの.envファイルで設定できます。設定 を参照してください。
ツール
tools.yaml の tools セクションは、エージェントが実行できるアクションを定義します。ツールの種類、影響を与えるソース、使用するパラメータなどを指定します。
tools:
system_status:
source: ibmi-system
description: "Overall system performance statistics with CPU, memory, and I/O metrics"
parameters: []
statement: |
SELECT * FROM TABLE(QSYS2.SYSTEM_STATUS(RESET_STATISTICS=>'YES',DETAILED_INFO=>'ALL')) X
ツールセット
tools.yaml の
代替品








