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 ai-servicesの新機能MCP サーバーを設定してみる

1
Posted at

はじめに

IBM ai-services(IBM Power AI Launchpad)v0.4.0 から、各 AI サービスが MCP(Model Context Protocol)サーバーとして公開されるようになりました。
この記事では、ai-services が提供する MCP エンドポイントに IBM のAIコーディングアシスタント「Bob」から接続し、RAG ベースの Q&A などのサービスを呼び出してみます。

MCP は AI エージェントやコーディングアシスタントとツールを接続するためのプロトコルです。対応クライアントであれば、ai-services のサービスをそのまま「ツール」として呼び出せます。

ai-services のインストールや初期セットアップは、以下の記事を参照してください。

MCP接続方法は下記の公式ドキュメントを参照しています。

前提環境

  • サーバー: IBM Power(IBM Spyre アクセラレーター搭載)

  • ai-services バージョン: v0.4.0 以降(MCP サーバー機能あり)

  • クライアント: Bob(IBM AIコーディングアシスタント)

  • クライアント OS: macOS

TLS 証明書のセットアップ

ai-services のカタログは Caddy による HTTPS エンドポイントを提供しています。
エンドポイントの URL は <service>.<host>.nip.io 形式のドメインで提供されており(nip.io は IP アドレスを DNS 名に変換するサービスです)、Caddy が自己署名のルート証明書を発行しています。
クライアント側でこの証明書を信頼するよう設定しておく必要があります。

Worker から TLS 証明書を取得する

ここでいう「Worker」とは、ai-services がAIサービス用のコンテナを実行するLPARのことです。
ai-services v0.4.0 以降ではカタログ(管理サーバー)とWorker(実行サーバー)が分離しており、コンテナや MCP エンドポイントはWorker上に立ち上がります。
TLS 証明書もWorker側の Caddy が発行するため、ここではWorkerサーバーから証明書を取得します。

ssh root@<worker-host> "cat /var/lib/containers/storage/volumes/caddy-catalog/_data/caddy/pki/authorities/local/root.crt" > ~/caddy-root.crt

取得した証明書の内容を確認します。

openssl x509 -noout -subject -issuer -dates -in ~/caddy-root.crt
subject=CN=Caddy Local Authority - 2026 ECC Root
issuer=CN=Caddy Local Authority - 2026 ECC Root
notBefore=Oct  2 00:16:56 2026 GMT
notAfter=Aug 10 00:16:56 2036 GMT

クライアント OS に証明書をインポートする

OS ごとの手順は以下の通りです。

公式ドキュメント参照 (https://www.ibm.com/docs/ja/aiservices/2026.09.0?topic=assistant-connecting-mcp-server)

macOS

sudo security add-trusted-cert -d -r trustRoot \
  -k /Library/Keychains/System.keychain ~/spyre/caddy-root.crt

Linux(Red Hat 系)

sudo cp ~/caddy-root.crt /etc/pki/ca-trust/source/anchors/
sudo update-ca-trust

Linux(Debian 系)

sudo cp ~/caddy-root.crt /usr/local/share/ca-certificates/
sudo update-ca-certificates

Windows

certmgr.msc(証明書マネージャー)または PowerShell を使用し、「信頼されたルート証明機関」ストアにインポートします。

Node.js ベースのツールを使う場合
Node.js は OS の信頼ストアとは独立した証明書ストアを持っています。以下の環境変数を設定してから、アプリケーションを再起動してください。

export NODE_EXTRA_CA_CERTS=~/spyre/caddy-root.crt

アクセストークンを取得する

MCP エンドポイントへの接続には Bearer トークンによる認証が必要です。
カタログの API URL は ai-services catalog info --runtime podman コマンドで確認できます。

環境変数 `TOKEN` にそのまま入れ込む形にしています。

カタログAPIのURLやユーザー名、パスワードがご利用の環境に合わせて変更してください。

TOKEN=$(curl -s -X POST \
  https://<catalog-api-host>/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"username":"<username>","password":"<password>"}' \
  | python3 -c "import sys,json; print(json.load(sys.stdin)['access_token'])")

取得したトークンには有効期限があるため、期限切れの場合は再度このコマンドを実行してトークンを更新してください。

MCP エンドポイントを確認する

デプロイ済みアプリケーションの一覧確認

curl -sL https://<catalog-api-host>/api/v1/applications/ \
  -H "Authorization: Bearer $TOKEN" | python3 -c "
import sys,json
for a in json.load(sys.stdin).get('data',[]):
    print(a['name'], a['id'], a['status'])
"

以下のように起動しているアプリケーション IDが表示されます。(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx の部分)

Digital assistant xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx Running

アプリケーション ID から MCP エンドポイント URL を取得する

一覧で確認したアプリケーション ID を使って、各サービスの MCP エンドポイントを取得します。

curl -sL https://<catalog-api-host>/api/v1/applications/<application-id>/ \
  -H "Authorization: Bearer $TOKEN" | python3 -c "
import sys,json
app=json.load(sys.stdin)
for svc in app.get('services',[]):
    for ep in svc.get('endpoints',[]):
        if ep['type']=='mcp':
            print(svc['type'], '->', ep['url'])
"
Question and answer -> https://chat-bot-mcp-xxxxxxxxxx.<host>.nip.io
Digitize documents -> https://digitize-mcp-xxxxxxxxxx.<host>.nip.io
Find similar items -> https://similarity-mcp-xxxxxxxxxx.<host>.nip.io

3 つのサービスがそれぞれ独立した MCP エンドポイントとして公開されています。

MCP クライアントの設定

基本的な設定フォーマット

MCP 対応クライアントの設定ファイルには以下のように記述します。

{
  "mcpServers": {
    "<service-name-1>": {
      "url": "https://<mcp-endpoint-1>/mcp",
      "headers": {
        "Authorization": "Bearer <access-token>"
      }
    },
    "<service-name-2>": {
      "url": "https://<mcp-endpoint-2>/mcp",
      "headers": {
        "Authorization": "Bearer <access-token>"
      }
    }
  }
}

Bob での設定例

Bob で接続を試みたところ、上記の基本フォーマットでは動作しませんでした。
これは Bob の MCP クライアントがトランスポートの種類を明示的に要求するためで、"type": "streamable-http" を指定することで解決します。

Bob の MCP 設定は、設定画面(Settings → MCP Servers)または mcp_settings.json に記述します。

{
  "mcpServers": {
    "Question and answer": {
      "type": "streamable-http",
      "url": "https://<chat-bot-mcp-endpoint>/mcp",
      "headers": {
        "Authorization": "Bearer <ai-service-token>"
      }
    },
    "Digitize documents": {
      "type": "streamable-http",
      "url": "https://<digitize-mcp-endpoint>/mcp",
      "headers": {
        "Authorization": "Bearer <ai-service-token>"
      }
    }
  }
}

MCPを設定することで、RAGの機能にAIコードエージェントからアクセスが可能になるので、PDF化された固有情報などをAIで利用するために使えるかと思います。


公式のgithubに更新情報の動画が掲載されています。
こちらでは、Claude Codeを使ったデモを見ることが出来ます。

デモの中では画像のようにClaude CodeにMCPを登録していました。

image.png

1
0
1

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?