PostgreSQLのMCPサーバを使って自然言語でデータベースに問い合わせる

PostgreSQLのMCPサーバを使って自然言語でデータベースに問い合わせる

Clock Icon2025.04.01

はじめに

Model Context Protocol(以下、MCP)とは、Anthropic社が公開しているオープンソースのプロトコルです。従来では、AIアシスタントと外部サービスを連携する場合、連携させるために都度開発が必要でした。MCPという仕組みを使うことで、そのサービスがMCPに対応していれば、AIアシスタントに対して設定を行うだけで外部サービスが持つデータにアクセスしたり、操作したりできるようになります。

Introduction - Model Context Protocol

Introducing the Model Context Protocol

製造業において、各種センサーや連携システムから収集したデータがデータベースに蓄積されているにも関わらず、十分に活用しきれていないという課題を抱える現場も少なくありません。

本記事では、PostgreSQL上のデータに対して、MCPを介して自然言語で問い合わせることにより、柔軟かつ迅速にデータ分析を行う可能性を探ります。

前提条件

この記事は以下の環境下で検証しています。

  • Windows 11
  • Node.js v22.9.0
  • PostgreSQLはローカルのDockerで起動
  • Cursor及びClaude Desktop(Proプラン)で動作確認

使用するデータ

検証のため、製造業の現場で働く従業員とそのシフト及びスキルの情報をテストデータとして作成しました。

従業員データ(100名)

20250401_p_01

シフトデータ

20250401_p_02

スキルデータ

20250401_p_03

従業員のシフト(365日分)

20250401_p_04

従業員のスキル(307件)

20250401_p_05

MCPサーバの設定

MCP公式リポジトリにあるpostgresを使用します。

PostgreSQL

READMEにはDockerを使う方法、Node.js(NPX)を使う方法が紹介されていますが、本記事ではNPXを使う方法で設定します。

Cursor

Cursor - The AI Code Editor

CursorではMCPをプロジェクト単位で設定することも、すべてのプロジェクトで共通設定として有効にすることも可能です。

プロジェクト単位で設定する場合は、プロジェクトフォルダ内に.cursor/mcp.jsonファイルを作成します。グローバルに設定したい場合、下記画像の通りCursorの設定画面を開き、「Add new global MCP server」をクリックすると共通設定用のmcp.jsonファイルが開きます。

20250401_p_06

20250401_p_07

mcp.jsonファイルには、以下のように記述します。PostgreSQLの接続文字列は、READMEにも記載されている通り、postgresql://user:password@host:port/db-nameという形式です。

{
  "mcpServers": {
    "postgres": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-postgres",
        "postgresql://test:test@localhost:15432/test"
      ]
    }
  }
}

すると、設定画面にPostgreSQLのMCPサーバが表示されます。サーバ名の横に表示されるアイコンが緑になっていれば、接続は正常に完了しています。

20250401_p_08

アイコンが緑にならず接続エラーになる場合は、設定画面に表示されている実行コマンドを、コマンドプロンプト等で実行できるかを確認してください。必要に応じてmcp.jsonファイルを修正します。

20250401_p_09

Claude Desktop

Download Claude

Claude Desktopでも、Cursorと同様に設定ファイルを編集してMCPを有効化します。

アプリを起動したら、まず左上のメニューを開きます。開発者モードが無効の場合、「開発者モードを有効にする」といったメニュー項目が表示されるので、クリックして開発者モードを有効にします。

※私の環境では既に有効化してあるため、表示されていません。

20250401_p_10

設定ファイルを編集するには、メニューから「ファイル」→「設定」を選択します。

20250401_p_11

「開発者」⇒「構成を編集」を選択すると、設定ファイルが格納されたフォルダが開きます。この中にある設定ファイルを編集します。内容は、Cursorに設定したものと同一です。

20250401_p_12

Claude Desktopを一度終了します。このとき、私の環境ではタスクマネージャーからプロセスごと終了する必要がありました。

再度Claude Desktopを起動すると、設定が反映されて以下のような画面が表示されます。

20250401_p_13

自然言語で色々な質問をしてみる

ここからは、Cursor及びClaude Desktopで、格納されているデータに対して自然言語で様々な質問をしてみます。

Cursor

Cursorのチャット欄では、Agentモードを使用して質問します。チャット欄が表示されていない場合、Ctrl + Iで表示されます。

20250401_p_14

MCPを介してデータベースを検索しようとします。実行予定のクエリも表示されます。内容に問題がなければ「Run tool」をクリックします。

20250401_p_15

実行結果として、データベースの情報に基づいた応答が返されます。

20250401_p_16

  • 特定の日のシフトについて質問する

20250401_p_17

202511日のシフト状況を要約すると以下のようになっています:
早番(07:00-16:00: 15名
資材部、品質管理部、設備保全部、製造部、生産管理部の各部署から配置
日勤(09:00-18:00: 15名
すべての部署からバランスよく配置
遅番(13:00-22:00: 19名
各部署からまんべんなく配置
夜勤(22:00-07:00: 14名
主に設備保全部、品質管理部、生産管理部から配置
特徴:
全シフトで合計63名が勤務
各時間帯で必要な人員が確保されている
部署ごとにバランスの取れた人員配置
24時間体制で運営されている
シフト間の引き継ぎ時間が確保されている(例:早番と日勤の重複時間など)
各シフトは部署横断的に編成されており、各部署の機能が1日を通して維持される体制となっています。
  • 特定の日のスキルのばらつきを確認する

20250401_p_18

2025年3月1日の遅番について、スキルの分布を分析しました:
勤務者数:10名
・生産管理部: 4名
・設備保全部: 2名
・品質管理部: 2名
・資材部: 1名
・製造部: 1名
主要スキルの分布(熟練度別):
品質関連スキル
・上級: 1名(品質文書管理)
・中級: 5名(品質管理、品質検査、品質文書管理)
・初級: 2名(品質管理、品質検査)
生産管理関連スキル
・上級: 1名(生産計画)
・中級: 1名(生産計画)
データ分析スキル
・上級: 2名(製造データ分析)
・中級: 1名(製造データ分析)
資材関連スキル
・上級: 2名(在庫管理、資材調達)
・初級: 3名(資材調達)
分析結果:
問題点:
・製造ライン操作のスキルを持つ従業員が1名(初級)しかいない
・設備保全スキルを持つ従業員が1名(初級)しかいない
・工程改善スキルを持つ従業員が1名(中級)しかいない
良い点:
・品質管理関連スキルは複数の従業員が保有しており、レベルも分散している
・データ分析スキルを持つ従業員が複数おり、上級者も確保されている
・資材関連スキルも複数の従業員が保有している
改善提案:
・製造ライン操作スキルを持つ従業員を追加で配置することが望ましい
・設備保全スキルの上級者または中級者を配置することを検討する
・工程改善スキルを持つ従業員をもう1名配置することで、より安定した運営が可能になる
結論:
基本的な業務運営は可能ですが、特に製造ライン操作と設備保全に関して脆弱性があります。トラブル発生時の対応力を高めるために、これらのスキルを持つ従業員の配置を検討することを推奨します。
  • 従業員の教育に関して質問する

20250401_p_19

分析結果から、以下の分野で重点的な教育が必要だと考えられます:
1. 設備保全
・現状: 上級3名(3%), 中級6名(6%), 初級10名(10%)
・問題点: 上級者が少なく、初級者が多い
・理由: 設備トラブル対応は生産性に直結する重要スキル
・提案: 初級から中級、中級から上級への育成プログラムの強化
2. 製品検査
・現状: 上級3名(3%), 中級5名(5%), 初級5名(5%)
・問題点: 全体的な保有者数が少なく、特に上級者が不足
・理由: 品質保証の要となる重要スキル
・提案: 検査技術の体系的な教育プログラムの実施
3. 品質管理
・現状: 上級7名(7%), 中級4名(4%), 初級3名(3%)
・問題点: 中級・初級者が少なく、世代交代の準備が不十分
・理由: 品質管理は企業の競争力に直結
・提案: 上級者による中級者の育成プログラムの強化
4. 在庫管理
・現状: 上級9名(9%), 中級1名(1%), 初級10名(10%)
・問題点: 中級者が極端に少なく、スキルレベルの二極化
・理由: コスト管理と生産効率に影響する重要スキル
・提案: 初級から中級へのステップアップ教育の強化
5. 作業指導
・現状: 上級6名(6%), 中級5名(5%), 初級6名(6%)
・問題点: 全体的な保有者数が少ない
・理由: 技能伝承と人材育成に必要不可欠
・提案: 指導者育成プログラムの拡充
優先順位付けの提案:
1. 最優先(即時対応が必要):
・設備保全
・製品検査
2. 高優先(半年以内に対応):
・品質管理
・在庫管理
3. 中優先(1年以内に対応):
・作業指導
教育プログラム実施の提案:
1. クロストレーニング制度の導入
・異なる部署間での人材交流
・OJTによる実践的なスキル習得
2. メンター制度の確立
・上級者と初級・中級者のペアリング
・計画的な技能伝承の実施
3. 定期的なスキル評価とフィードバック
・四半期ごとのスキル評価
・個人別の育成計画の作成と更新
4. 外部研修の活用
・専門機関による認定資格の取得支援
・最新技術や手法の習得
5. デジタル教材の整備
・eラーニングシステムの導入
・マニュアルやベストプラクティスの文書化
これらの施策を実施することで、より強固なスキルマトリクスの構築が期待できます。特に、設備保全と製品検査については、早急な対応が必要です。

Claude Desktop

Cursorは主に開発者向けに設計されたIDEで、開発作業の中でAIアシスタントを活用するのに適しています。一方、Claude Desktopは開発者以外のユーザでも使いやすい、直感的なインターフェースを備えています。

20250401_p_20

チャット欄に質問を入力することで、AIアシスタントと会話ができます。チャット内で初めてMCPツールを使用しようとすると、以下のダイアログが表示されます。「このチャットで許可」をクリックすると、そのチャット内では以後、MCPツールを確認なしで使用できます。

20250401_p_21

また、Claude Desktopの特徴として、Reactコンポーネントを使ってデータを視覚的に表示できます。

  • 特定のスキルに関してレベル別にグラフ化

20250401_p_22

20250401_p_23

ご要望に応じて、品質管理に関するスキルレベルごとの人数をグラフにしたいと思います。まずはデータベースからこの情報を取得しましょう。
(略)
データが取得できました。これをReactコンポーネントを使ってグラフで視覚化しましょう。

以上が品質管理に関連するスキル(品質管理、品質検査、品質文書管理、製品検査)のレベル(初級、中級、上級)ごとの人数を示すグラフです。
このグラフから以下のことが観察できます:

1. 品質管理スキルは上級レベルの社員が多く(7名)、スキルの高い人材が揃っています。
2. 品質検査は初級レベルの社員が最も多く(11名)、現在育成段階にある人材が多いことがわかります。
3. 品質文書管理は中級レベルの社員が最も多く(12名)、組織的な文書管理体制が整いつつあることが推測されます。
4. 製品検査は各レベルで比較的均等に分布しています。

このデータは人材計画や研修プログラムの策定に役立てることができます。例えば、品質検査スキルを持つ社員の育成をさらに進め、中級・上級へのステップアップを促進することで、品質管理体制の強化につながるでしょう。

Claude Desktopの右半分に、以下のようなグラフが描画されました。

20250401_p_24

  • 年末年始のシフトをグラフ化

20250401_p_25

20250401_p_26

  • シフトごとのヒートマップを作成

20250401_p_27

20250401_p_28

  • 特定の従業員が持つスキルについて質問

20250401_p_29

藤田達也さん(従業員ID: 53)のプロフィールとスキル情報をまとめます:

基本情報
・氏名: 藤田 達也
・生年月日: 1986年12月18日(38歳)
・部署: 生産管理部
・役職: 一般社員
・入社日: 2024年4月19日(最近入社された方です)

保有スキル
1. 品質検査 (上級)
・内容: 製品の品質検査と規格適合確認
・取得日: 2006年6月7日
2. 生産計画 (中級)
・内容: 製造工程の計画立案
・取得日: 2006年10月15日
3. 安全管理 (初級)
・内容: 作業安全と環境管理
・取得日: 2018年11月7日
4. 品質文書管理 (初級)
・内容: 品質関連文書の管理
・取得日: 2020年12月8日

特徴
藤田さんは今年(2024年)4月に入社されたばかりですが、品質検査の上級スキルを2006年から持っていることから、前職でも類似の業務に携わっていた可能性が高いです。品質検査と生産計画のスキルは15年以上前から保有しており、これらの分野において豊富な経験があると考えられます。
生産管理部に所属しており、品質検査(上級)と生産計画(中級)のスキルを持つことから、製造プロセスの品質管理や生産計画の立案において、重要な役割を担っていると考えられます。安全管理と品質文書管理については比較的最近取得したスキルであり、初級レベルであることから、現在これらの分野でのスキルアップを図っている可能性があります。
  • 複数の従業員について、スキルを比較

20250401_p_30

20250401_p_31

上の例では割愛しましたが、これらのグラフの生成とあわせて、AIによる文章による分析結果も提供されています。

藤田達也さんと伊藤裕子さんのスキルを比較しました。
両者は同じ生産管理部に所属していますが、役職や経験、保有スキルに大きな違いがあります。
伊藤裕子さんは部長職で2005年から長く会社に在籍しており、生産計画の上級スキルと設備操作の中級スキルを持っています。一方、藤田達也さんは今年入社したばかりの一般社員ですが、品質検査の上級スキルをはじめ、4つのスキルを保有しています。
特に注目すべき点として:

・藤田さんは品質管理関連(品質検査、品質文書管理)に強みがあります
・伊藤さんは生産計画が上級レベルで、部門の計画立案を主導する立場にあります
・両者とも「生産計画」スキルを持っていますが、伊藤さんが上級、藤田さんが中級です
・藤田さんは幅広いスキルを持ち、伊藤さんは特定分野に特化しています

このスキル構成から、部長である伊藤さんが生産計画を統括し、新しく入社した藤田さんが品質管理面での専門性を活かして部門に貢献するという役割分担が想定されます。

※データはランダムで作成しましたので、伊藤裕子さんが13歳で入社したことになっていますが、気にしないでください。

クエリの確認

取得されるデータの正確性を検証するため、実行されたSQLクエリを確認します。

Cursor及びClaude Desktopのどちらでも、AIによって生成されたクエリを事前に確認できます。(なお、クエリを生成するのはAIアシスタントであり、MCPサーバはクエリを受け取り、実行した結果を返すのみです)

以下は、2025年3月1日~5日までのシフトに関するヒートマップを作成するよう依頼した際に、AIにより生成されたクエリです。クエリの内容から、意図通りにデータを取得するための条件が適切に構成されていることが分かります。また、実際に描画されたヒートマップに表示されている数値も、データベースの内容と一致していました。

SELECT 
    TO_CHAR(勤務日, 'YYYY-MM-DD') as 日付,
    s.シフト名,
    COUNT(*) as 人数
FROM 
    従業員シフト es
JOIN 
    シフト s ON es.シフトid = s.シフトid
WHERE 
    勤務日 BETWEEN '2025-03-01' AND '2025-03-05'
GROUP BY 
    勤務日, s.シフト名, s.シフトid
ORDER BY 
    勤務日, s.シフトid;

また、以下は2025年1月1日のシフトに関する質問を行った際に実行されたクエリです。こちらもクエリの内容については問題ありません。

select
	従業員.従業員id,
	従業員.,
	従業員.,
	従業員.部署名,
	シフト.シフト名,
	シフト.開始時間,
	シフト.終了時間
FROM 従業員シフト
JOIN 従業員 on	従業員シフト.従業員id = 従業員.従業員id
JOIN シフト on	従業員シフト.シフトid = シフト.シフトid
WHERE 従業員シフト.勤務日 = '2025-01-01'
order by シフト.開始時間, 従業員.従業員id;

実行結果として、MCPサーバからは64名の情報が正しく返ってきていました。しかしその後、CursorのAIアシスタントが分析した際の応答では、63名と返されていました。

20250401_p_32

AIによるデータ分析において、データのカウント誤りは一般的にみられる現象です。このケースもその一例だと考えられます。

まとめ

データベースに直接自然言語でアクセスし、分析できることは、強力なAIアシスタントや視覚化ツールと組み合わせることで、非常に柔軟かつ迅速なデータ活用を可能にするということが分かりました。

特に、データそのものは蓄積されているものの、どう分析すれば良いか分からないといった現場において、AIアシスタントとの対話を通じて分析を深めていくことが可能となる点は、大きな価値をもたらすと考えられます。

本記事では製造業の従業員に関するデータを例に取り上げましたが、稼働状況や品質計画、生産計画など、多様な業務データへの適用も期待できます。

一方で、AIアシスタントの応答に差異が生じたように、結果が必ずしも100%正確とは限らない点には注意が必要です。

また、クエリの生成にはデータベースの設計や一貫性に依存します。複雑な構造のスキーマにおいて、AIアシスタントが生成するクエリの妥当性やパフォーマンスに注意を払う必要があります。

現在のところ、MCPに対応したサービスは限られていますが、対応サービスの拡充が進むことで、より多彩なデータ活用の実現が期待されます。

おわりに

本記事では、PostgreSQLのMCPサーバを用いて、製造現場のデータをAIと組み合わせて活用する取り組みを試してみました。

データベースさえあれば比較的短時間で準備できますので、興味を持たれた方は実際に試してみてください。

この記事がどなたかのお役に立てば幸いです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.