2
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 API Connect for GraphQLでデータベースをMCPサーバ化してみる

2
Last updated at Posted at 2025-12-11

概要

AIエージェントとバックエンドをつなぐ手段として、Model Context Protocolが注目されています。本記事では、データベースとIBM API Connect for GraphQLを接続し、MCP Inspectorというツールを利用して動作確認を実施します。

image.png

環境

PostgreSQL 16.11 (Ubuntu 24.04上に構築)
ngrok 3.34.0
API Connect for GraphQL SaaS (無料試用版を利用)
Stepzen CLI 0.53.0

事前準備

  1. PostgreSQL上にテスト用のテーブルを作成します。また、後ほどデータベース名・ユーザ・パスワードの情報が必要になるため控えておきます。

    CREATE TABLE EMPLOYEE (
        EMP_ID      INTEGER       NOT NULL,     
        AGE         INTEGER,                    
        NAME        VARCHAR(100),               
        DEPARTMENT  VARCHAR(100),              
        PRIMARY KEY (EMP_ID)
    );
    
    
    INSERT INTO EMPLOYEE (EMP_ID, AGE, NAME, DEPARTMENT)
    VALUES
        (1001, 30, '山田太郎',    '営業部'),
        (1002, 28, '佐藤花子',    '総務部'),
        (1003, 35, '鈴木一郎',    '開発部')
        (1017, 29, '竹内悠',      '管理部'); 
    
  2. 今回は個人PC上のLinuxにDBを構築したので、SaaSからアクセスできるようにngrokというツールを利用します。ngrokを使うと、ローカルのPCにアクセスするためのトンネルを作成してくれます。導入方法はホームページに記載がありますが、会員登録を実施しトークンを取得しておく必要があります。また、TCPの通信をトンネリングする場合はクレジットカードの登録が必要になります。

    sudo snap install ngrok
    ngrok config add-authtoken XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    
  3. トンネリングの前に、5432番 (デフォルトの場合)が正しくリッスンしているか確認します。

    ss -ltn|grep 5432
    
  4. DBが正常に動いているのを確認できたら、ngrokを起動します。

    ngrok tcp 5432
    
    ngrok (Ctrl+C to quit) 
    
    🤫 Put your secrets in vaults and (re)use them to transform traffic: https://ngrok.com/r/secrets 
    
    Session Status online 
    Account xxxx (Plan: Free) 
    Version 3.34.0 
    Region Japan (jp)
    Latency 12ms 
    Web Interface http://127.0.0.1:4040
    Forwarding tcp://0.tcp.xx.ngrok.io:xxxxx -> localhost:5432 
    
  5. 上記のような画面が出たら、トンネリングは成功です。データベースへ外部から接続できるか確認します。

    psql -h 0.tcp.xx.ngrok.io -p xxxxx -d postgres -U stepzen
    

この際、指定するポート番号は5432番ではなく、ngrokによってフォワードされたポート番号を指定する必要がある点に注意してください。ここまでで準備は完了です。

API Connect for GraphQLへの接続

  1. 設定を実施するためStepzen CLIというツールを導入します。

    sudo apt install npm
    npm -i g stepzen
    stepzen --version
    
  2. stepzen CLIでSaaS環境へログインします。環境のURLは、トップページのGUIから確認できます。

    stepzen login xxxxx.ibm.stepzen.net -i xxxxxx -k <MCSP API KEY>
    

GQL_GUI1.png

  1. ログインできたら、ローカルの任意の場所に作業ディレクトリを作成します。

    mkdir ~/stepzen && cd stepzen
    
  2. 作業フォルダを初期化します。

    stepzen init --endpoint=api/postgrestest 
    
  3. 作業フォルダ内でimportコマンドを実施することで、自動でDBに接続しGraphQLスキーマを生成することができます。

    stepzen import postgresql \
      "postgresql://<DBユーザ名>:<パスワード>@0.tcp.xx.ngrok.io:xxxxx/postgres"
    

    これで、作業フォルダに以下のようなファイルが生成されます。

    stepzen/
      ├─ config.yaml
      ├─ index.graphql
      ├─ postgresql/
      │     └─ index.graphql
      ├─ stepzen.config.json
    
  4. ローカルで生成した情報を、SaaSへデプロイします。

    stepzen deploy
    
  5. SaaSの画面を開き、トップページ左側のEndpointsから、デプロイしたエンドポイントを選択し、Explorerを開きます。エンドポイントのURLは、https://xxxxxx.ibm.stepzen.net/api/postgrestest/graphqlのような形で払い出されます。このURLの末尾graphqlmcpに変更したものが、MCPサーバのエンドポイントになります。これで、MCPサーバの準備が完了しました。
    GQL_GUI2.png

MCP Inspectorによる確認

  1. MCP Inspectorを導入・実行します。実行すると、自動でweb UIが起動します。

    npm install -g @modelcontextprotocol/inspector
    mcp-inspector
    
  2. web UIの左側のペインに各項目を選択・入力し、"Connect"を押下します。

    • Transport Type: Streamable HTTP

    • URL: 上記手順で取得したもの

    • Authentication: Custom Headersを設定する。

      • ヘッダ名: Authorization

      • 内容: API Connect for GraphQLのExplorer画面中央のBearerトークンをコピーして入力

      MCPInspect1.png

  3. 自動で接続が始まり、Toolの一覧が表示されます。Toolのdescriptionには、queryにどのようにクエリを生成しなければならないかが記載されており、生成AIはこれを読み取ってユーザの自然言語での問い合わせに応じたクエリを生成します。今回はテストなので、手動でqueryを入力します。API Connect for GraphQLのExplorer画面では、GUIベースでGraphQLクエリを生成できます。
    スクリーンショット 2025-12-11 155817.png

    任意のクエリを生成して、MCP Inspectorのqueryに入力します。

    MCPInspect2.png

  4. Run Toolを押下すると、Tool/Callが実行され、ペイン下部に結果が表示されます。これで、DBの内容をMCPサーバを通じて確認することができました。実際は、この内容が生成AIによって解釈され、自然言語で表示されることになります。
    スクリーンショット 2025-12-11 013647.png

終わりに

API Connect for GraphQLを利用して、データベースをMCPとして公開する方法についてご紹介しました。ぜひ試してみてください。

また、IBM TechXchange Integration Group Japanで製品の最新情報を発信しています。あわせてご覧ください。

2
0
0

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
2
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?