記事検索

検索ワードを入力してください。
Sky Tech Blog
AIエージェントに​よる​動的SQLの​生成および​MCPの​利用

AIエージェントに​よる​動的SQLの​生成および​MCPの​利用

AIエージェントがユーザーの自然言語リクエストに応じて動的にSQLクエリを生成・実行するアーキテクチャを紹介します。このアプローチの利点は、多様な要求に迅速に対応できる柔軟性と、API開発・保守コストの削減にあります。クエリ生成精度を向上させるプロンプト手法と、安全な実行基盤「Model Context Protocol (MCP)」という2つの核心技術について解説します。

AIエージェントの活用が進む中、「ユーザーの自然言語リクエストに応じて、エージェントが動的にSQLクエリを生成・実行する」というアーキテクチャを構築しましたので、ご紹介させていただきます。

このアプローチの最大の利点は、事前に定義されたAPIを介さずとも、データベースから柔軟に情報を取得できる点にあります。
これにより、多様なユーザー要求に対して迅速に対応でき、SQLを実行するAPIを個別に開発・メンテナンスするコストから解放されます。

では、AIが生成したSQLを安全に実行するにはどうすればよいのでしょうか?

本記事では、このアーキテクチャを支える2つの技術について解説します。

  • SQLをプロンプトに与えることで、クエリ生成の精度を向上させる具体的な手法
  • 動的SQLを安全に実行するための実行基盤「Model Context Protocol (MCP)」の役割

アーキテクチャ概要

システムは、それぞれが特定のタスクを持つ複数のAIエージェントの連携によって動作します。
ユーザーの自然言語要求は、計画エージェントによって構造化された「意図」に変換され、それを基にクエリ生成エージェントがSQLを構築します。

クエリ生成の​精度を​向上させる​プロンプトエンジニアリング

クエリ生成エージェント(LLM)の精度は、プロンプトの質に大きく依存します。
特に有効だったのが「SQLによるコンテキスト付与」です。

具体的には、プロンプト内に以下の情報をテキストで含めることで、エージェントがデータベースの構造とSQLの”方言”を理解し、クエリの生成精度が向上しました。

  • データベーススキーマ(CREATE TABLE文) テーブル定義をマークダウン等で抽象的に記述するのではなく、実行可能なCREATE TABLE文そのものにします。
    これにより、カラムの型やリレーションシップを正確に認識させることができます。
  • サンプルSQLクエリ 対象のデータベース(例: MySQL)で実際に動作する、クエリの例を1つ提示します。
    (複数あった方が良かったかもしれませんが、今回の検証では1つです)これは、エージェントにとっての「お手本」となり、クエリの生成失敗を抑制できます。

この手法により、テーブルに存在しないカラムを参照する、あるいはSQLの方言を間違えるといった、LLMが陥りがちなエラーを大幅に削減できました。

MCP: 動的SQLを​実行する​ツール

AIエージェントにSQLを動的に生成させるアーキテクチャにおいて、最大の懸念はセキュリティでした。
AIが生成したSQLを、そのまま本番データベースで実行して本当に安全なのか?

答えは当然「ノー」です。
SQLインジェクションなどによって、DELETE文やUPDATE文などが生成されてしまうリスクが存在します。

そのリスクを管理し、動的SQL実行の安全性を担保するのが Model Context Protocol (MCP) です。
MCPは、AIエージェントとデータベースの間に立つ「ゲートウェイ」として機能します。
よくUSBとかで例えられますね。

MCPのツールは以下の要件を守って動作します。

  1. クエリの静的解析
    まず、MCPは受け取ったSQL文字列を解析し、SELECT文以外(UPDATE, DELETE, DROPなど)のDMLやDDLが含まれていないかをチェックします。
    許可されていないキーワードが含まれていれば、データベースに接続せずにエラーを返します。
  2. タイムアウトとリソース制限
    意図せず生成された非効率なクエリ(過度なJOINなど)がデータベース全体に影響を与えないよう、すべてのクエリに厳格な実行タイムアウト(10秒)を設定し、システムを保護します。

このように、MCPはAIの柔軟性を最大限に活用しつつ、システムに求められる安全性を両立させる上で、不可欠なコンポーネントです。

まとめ

本記事では、AIエージェントによる動的SQL生成アーキテクチャの2つの要点を解説しました。

  1. プロンプトエンジニアリング
    CREATE TABLE文やサンプルSQLをプロンプトに含めることで、クエリ生成の精度を大幅に向上させる。
  2. MCP
    静的解析、リソース制限といった多層的な防衛機構により、動的SQLを安全に実行する。

この「高精度なクエリ生成」と「安全な実行基盤」の組み合わせは、API開発の制約から解放され、より柔軟で強力なデータベース活用が可能となります。

データベースとMCPの導入を考えていましたら、ぜひ入門編としてご参考にしていただけますと幸いです。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム