対象読者: IBM watsonx Orchestrate(wxO)を使っていて、エージェントから DB を参照したい方
検証環境: wxO SaaS 環境 / Supabase(クラウド PostgreSQL)
はじめに
wxO エージェントからデータベースを自然言語で参照したい、というユースケースがあります。
wxO には MCP(Model Context Protocol)サーバーを Toolkit として登録する機能があり、これを使えば自然言語 → SQL 変換 → DB 参照が実現できます。
今回は GitHub の modelcontextprotocol/servers-archived にあるPostgreSQL 向け MCP サーバー @modelcontextprotocol/server-postgres を試してみました。データベースは Supabase(クラウド PostgreSQL)の無料プランを使用しました。
サンプルコード等は以下リポジトリにあります。README.mdをご参照ください。
やったこと・結果
wxOのConnection に PostgreSQL の接続文字列、Toolkit に接続コマンドを定義することで、エージェントが自然言語の問い合わせに対してデータベースにアクセスし、結果を返してくれるようになります。
実際に「1万円以下の商品を教えて」と話しかけると、エージェントが SQL を生成して該当商品を返してくれました。
wxO の MCP 接続方式:ローカルとリモート
wxO の MCP サーバーには、公式ドキュメントで定義された2つの接続方式があります。

※公式ドキュメントを元にGoogle NotebookLMで作成
| ローカル MCP サーバー | リモート MCP サーバー | |
|---|---|---|
| 通信方式 | STDIO | StreamableHTTP / SSE |
| 実行場所 | wxO クラウド内 | 自前でホスト |
| PC・公開 URL | 不要 | 必要 |
今回はローカル MCP サーバー(STDIO)方式を使いました。
発見:MCP サーバーは PC で動いていない
Toolkit YAML の command: に npx -y @modelcontextprotocol/server-postgres と書くだけで、wxO がクラウド内部でそのプロセスを起動し、STDIO で通信してくれます。
手元の PC に Node.js 環境は不要です。
エラー発生時のスタックトレースにあった /opt/app-root/lib64/python3.12/ というパスであったことからローカル PC のものではなく、wxO クラウドの実行環境のパスと推測されます
@modelcontextprotocol/server-postgres の考慮点
- 公式の archived リポジトリのため、今後のメンテナンスは期待できない
- ツールは
query1本のみ(BEGIN TRANSACTION READ ONLYでラップ)— SELECT 専用 - 検証・デモ用途には十分だが、本番利用には向かない
R/W が必要な場合や、目的別のツールを設計したい場合は独自 FastMCP サーバーの実装も検討しています(Track B として続報予定)。
詳細手順
セットアップの詳細は track-a/README.md を参照してください。
続編:Track B — Python で MCP サーバーを自作する
続編では、FastMCP を使って Python で MCP サーバーを自作し、INSERT / UPDATE / DELETE まで含めた読み書きを wxO エージェントから操作できることを確認しています。独自のデータソースや社内 API に MCP を使いたい場合の参考にどうぞ。
シリーズ
(本記事は、執筆にあたりAnthropic Claudeを利用し、その出力を参考にしています。)