Microsoft Azure Data API builderのMCP修正を解説:release/2.0で確認すべき設定と影響範囲

Microsoft Azureの「Microsoft Azure documentation update: Cherry-pick MCP fixes (#3508, #3544, #3425) to release/2.0」は、Azure Data API builderのMCP関連不具合をrelease/2.0へ取り込む更新です。結論から言うと、影響が大きいのは、Data API builder 2.0でSQL MCP Serverを使い、dab start --mcp-stdio、MCPエージェント、ストアドプロシージャ実行を運用・検証している管理者や開発者です。REST APIやGraphQLだけを使っている場合の影響は限定的ですが、MCPを使ってAIエージェントからデータ操作を行う環境では、ログ設定、エージェントによるログレベル変更、describe_entitiesの戻り値を必ず確認しておきましょう。

目次

まず押さえたい結論

今回の更新は、Azure Data API builderのmainブランチに入っていた3つのMCP関連修正を、release/2.0ブランチへバックポートするものです。公式PR #3606は2026年5月20日にrelease/2.0へマージされ、対象修正として#3508、#3544、#3425の3件が明記されています。(GitHub)

重要なのは、単なる表示改善だけではない点です。MCP stdioモードのログ出力、ログレベルの優先順位、ストアドプロシージャのパラメーター検出という、AIエージェント連携の安定性に直結する部分が修正されています。

変更点主な影響確認すべき人
MCP CLIログが設定ファイルのlog-levelを反映--LogLevelを付けない起動時のログ挙動が変わるDAB CLIでMCP stdioを使う開発者
ログレベルの優先順位がAgent > CLI > Configに整理エージェントが実行時にログレベルを上書きできる運用監視・セキュリティ担当者
describe_entitiesがストアドプロシージャのパラメーターを正しく返すエージェントによるexecute_entity失敗が減るストアドプロシージャをMCP公開している開発者

この更新はAzure全体ではなくData API builderのMCP機能が対象

Data API builderは、SQL Server、Azure SQL、Azure Cosmos DB、PostgreSQL、MySQLなどのデータベースに対してREST APIやGraphQL APIを生成するオープンソースのエンジンです。公式ドキュメントでは、Data API builderがMCPサーバーを含み、AIエージェント連携にも対応することが説明されています。(Microsoft Learn)

今回の「Cherry-pick MCP fixes」は、Azureの全サービス設定が一斉に変わるような更新ではありません。対象は、Azure Data API builderのrelease/2.0系でMCPを使う環境です。Data API builder 2.0はパブリックプレビューとして扱われており、MCPやAI統合を中心に強化されているバージョンです。(Microsoft Learn)

そのため、次のいずれかに当てはまる環境では確認が必要です。

  • dab start --mcp-stdioでローカルのMCPサーバーを起動している
  • VS Code、GitHub Copilot、MCP InspectorなどのMCP互換クライアントからDABを呼び出している
  • Data API builder 2.0 previewを検証・導入している
  • ストアドプロシージャをMCPツール、またはexecute_entity経由で使っている
  • runtime.telemetry.log-level--LogLevelでログレベルを制御している

一方で、MCPを無効化しており、REST APIやGraphQLのみを本番利用している場合は、今回の修正による直接的な挙動変更は限定的です。ただし、将来的にAIエージェント連携を追加する予定があるなら、今のうちにMCP設定とログ設計を整理しておく価値があります。

変更点:MCP stdioモードのCLIログが設定を正しく反映する

1つ目の修正は、MCP stdioモードでのCLIログ出力です。PR #3508では、dab start --mcp-stdio実行時に、CLIの起動ログが色付きで表示されない問題と、--LogLevelを指定しない場合にdab-config.jsonruntime.telemetry.log-levelが反映されない問題が修正されています。(GitHub)

実務上のポイントは、設定ファイルでログレベルを明示している環境です。これまでは、設定ファイルにログレベルを書いていても、MCP stdioモードのCLI起動ログが抑制されるケースがありました。修正後は、CLIフラグがない場合でも、設定ファイル側のlog-levelが有効な最小ログレベルとして扱われます。

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core": "information",
        "default": "warning"
      }
    }
  }
}

Data API builderのruntime.telemetry.log-levelは、.NETのロギング慣例に沿ってnamespace単位でログの詳細度を制御する設定です。公式ドキュメントでは、log-levelは本番環境でもホットリロード可能なプロパティとして説明されています。(Microsoft Learn)

管理者が見るべきポイント

MCP stdioでは、標準入出力をJSONメッセージの通信路として使います。そのため、ログが不用意にstdoutへ混ざると、MCPクライアントとの通信を壊す原因になります。今回の修正は、CLIログの整合性を高めるものですが、運用側では「どのログを、どこに、どの粒度で出すか」を改めて決めておく必要があります。

確認すべき設定は次の3つです。

確認項目見る場所判断基準
設定ファイルのログレベルruntime.telemetry.log-level開発ではinformationdebug、本番相当ではwarning以上を基本にする
起動時の一時的な上書きdab start --LogLevel Warningなど障害調査時だけ詳細化し、恒常的なdebug運用は避ける
MCP stdio起動dab start --mcp-stdiomcp.enabledが有効で、JSON通信を邪魔する独自出力がないか確認する

DAB CLIのstartコマンドでは、--LogLevel <level>でログレベルを指定でき、--mcp-stdioを使うとHTTPポートを開かず標準入出力でMCPサーバーとして起動します。(Microsoft Learn)

変更点:ログレベルの優先順位がAgent > CLI > Configになる

2つ目の修正は、MCPエージェントが実行時にログレベルを変更する場合の優先順位です。PR #3544では、MCPのlogging/setLevelがCLIや設定ファイルで指定されたログレベルに阻まれて反映されない問題が修正されました。修正後の優先順位は、エージェント、CLIフラグ、設定ファイルの順です。(GitHub)

優先順位指定元主な用途
1MCPエージェントlogging/setLeveldebugへ変更実行中の調査、MCP Inspectorでの確認
2CLIdab start --LogLevel Error起動単位の一時的な制御
3設定ファイルruntime.telemetry.log-level環境ごとの標準ポリシー
4既定値host modeやstdioの既定明示設定がない場合

ここで注意したいのは、--LogLevel Errorを付けて起動しても、MCPエージェントが後からdebugへ変更できる点です。PR #3544の説明では、修正後もCLIがConfigより優先される点や、既定値は変更されない点が明記されていますが、エージェントによる実行時変更は最上位として扱われます。(GitHub)

運用で失敗しやすいポイント

ログレベルの優先順位が変わると、障害調査はしやすくなります。一方で、次のような運用ミスが起こりやすくなります。

失敗例起きること対策
CLIでErrorにしたので詳細ログは出ないと思い込むエージェントがdebugへ変更すると詳細ログが流れるエージェント側の操作ログとDAB側の監査ログを確認する
検証中のdebug設定を残したまま本番相当に展開するログ量が増え、機密性の高い値が出るリスクも増える本番用configを分離し、CIで差分確認する
複数エージェントから同時に調査するどの操作でログレベルが変わったか追いにくい調査手順を決め、変更前後の時刻を記録する

MCPエージェントによるログレベル変更は便利ですが、運用監視の観点では「誰が、いつ、なぜ詳細ログを有効にしたか」を追える状態にすることが重要です。Azure Log Analytics、Application Insights、OpenTelemetry、ファイル出力など、利用中のテレメトリ設定と合わせて確認しましょう。Data API builderのランタイム設定には、Application Insights、OpenTelemetry、Azure Log Analytics、ファイル出力の項目が用意されています。(Microsoft Learn)

変更点:describe_entitiesがストアドプロシージャのパラメーターを正しく返す

3つ目の修正は、MCPエージェントがエンティティ情報を取得するdescribe_entitiesの応答です。PR #3425では、ストアドプロシージャのパラメーターが設定ファイルに完全には書かれていない場合、describe_entitiesが空または不完全なparametersを返し、結果としてエージェントのexecute_entity呼び出しが失敗する問題が修正されました。(GitHub)

修正後は、ストアドプロシージャのパラメーター検出において、実行時のデータベースメタデータが信頼できる情報源として扱われ、設定ファイルは上書き情報として使われます。PR #3425では、パラメーター名はデータベース由来、requiredは既定でtruedefaultdescriptionは設定ファイル由来と整理されています。(GitHub)

項目修正後の扱い実務での確認ポイント
パラメーター名データベース側の定義を使用configで名前を変えたつもりでもDB定義が基準になる
required既定はtrue、明示指定時のみconfigで上書き任意パラメーターはconfigに明示する
defaultconfig側の情報を使用DB側の既定値だけに頼らず、エージェント向けに補足する
descriptionconfig側の情報を使用エージェントが誤解しない説明文を入れる
configにないDBパラメーターrequired: trueとして表示追加したDBパラメーターがエージェントに見えるか確認する

この修正は、ストアドプロシージャをMCPツールとして公開している環境では特に重要です。AIエージェントは、describe_entitiestools/listで得た情報をもとに、どの入力を渡すべきか判断します。必要なパラメーターが見えていなければ、エージェントは正しい呼び出しを組み立てられません。

ストアドプロシージャ公開時の確認例

ストアドプロシージャをMCPのカスタムツールとして公開する場合は、--source.type stored-procedure--mcp.custom-tool trueを使います。公式ドキュメントでは、custom-toolはストアドプロシージャエンティティでのみ有効であり、ツール名はエンティティ名からsnake_caseへ変換されると説明されています。(Microsoft Learn)

dab add GetProductById \
  --source dbo.get_product_by_id \
  --source.type "stored-procedure" \
  --permissions "authenticated:execute" \
  --mcp.custom-tool true

この例では、MCPツール名としてはget_product_by_idのようなsnake_case名を使う前提で確認します。あわせて、エージェントに渡したい説明をdescriptionとして追加しておくと、AIがツールの用途を誤解しにくくなります。

dab update GetProductById \
  --description "指定した商品IDに対応する商品詳細、価格、在庫情報を返します"

影響範囲:特に確認すべき環境

今回の更新はMCP関連の修正なので、すべてのAzure利用者が対応を迫られるわけではありません。影響範囲は、Data API builderの使い方によって大きく変わります。

利用状況影響度確認内容
Data API builder 2.0 previewでMCPを検証中release/2.0相当の修正が取り込まれているか確認
dab start --mcp-stdioを使う--LogLevelruntime.telemetry.log-level、stderrログの挙動
MCPエージェントからログレベルを変更するlogging/setLevel後のログ量と監査ログ
ストアドプロシージャをexecute_entityで実行するdescribe_entitiesに全パラメーターが出るか確認
MCPをHTTPでホストしているログレベル変更とツール表示を確認
REST/GraphQLのみ利用直接影響は限定的だが、将来のMCP導入に備えて設定を把握
Azureインフラ管理のみ担当Container Apps、App Service、CI/CDで使うDABイメージやCLIの更新有無を確認

SQL MCP Serverは、ホスト用途ではHTTP、ローカル開発や直接的なエージェント連携ではstdioを使える構成です。公式ドキュメントでは、stdioはローカル開発、VS Code with GitHub Copilot、CI/CDやスクリプト化されたエージェント自動化に向くと説明されています。(Microsoft Learn)

管理者・開発者が確認すべき設定

今回の修正を受けて、まず見るべき設定はruntime.mcpruntime.telemetry.log-level、エンティティ権限、ストアドプロシージャ定義です。

MCPランタイム設定

MCPを使う場合、runtime.mcp.enableddml-toolsを確認します。Data API builderのランタイム設定では、runtime.mcp.enabledの既定値はtruepathの既定値は/mcpdml-toolsは全体または個別ツール単位で制御できます。(Microsoft Learn)

{
  "runtime": {
    "mcp": {
      "enabled": true,
      "dml-tools": {
        "describe-entities": true,
        "create-record": true,
        "read-records": true,
        "update-record": true,
        "delete-record": false,
        "execute-entity": true,
        "aggregate-records": {
          "enabled": true,
          "query-timeout": 30
        }
      }
    }
  }
}

本番相当の環境では、すべてのDMLツールを無条件に有効化するよりも、エージェントに必要な操作だけを有効化する方が安全です。たとえば、読み取りとストアドプロシージャ実行だけで十分な業務エージェントに、delete-recordを公開する必要はありません。

ログ設定

ログ設定は、環境ごとに分けて管理します。開発環境ではinformation以上を出して調査しやすくし、本番相当ではwarningを基本にして、障害調査時だけCLIやエージェントで一時的に詳細化するのが現実的です。

{
  "runtime": {
    "telemetry": {
      "log-level": {
        "Azure.DataApiBuilder.Core": "information",
        "default": "warning"
      }
    }
  }
}

ただし、今回の更新後はエージェントがログレベルを上書きできるため、設定ファイルだけで最終的なログ粒度を固定できるとは考えない方が安全です。運用手順として、MCPエージェントによるlogging/setLevelの使用タイミング、調査後に戻す手順、ログ保存先の確認をセットで決めておきましょう。

stdio起動時のrole指定

--mcp-stdioでは、ロールを省略するとanonymousとして動作します。公式ドキュメントでは、role:<role-name>を指定でき、指定したロールはエンティティ設定のpermissionsに存在する必要があると説明されています。(Microsoft Learn)

dab start \
  --mcp-stdio role:authenticated \
  --config ./dab-config.json \
  --LogLevel Information

ここで失敗しやすいのは、ロール名の指定漏れです。ローカル検証でanonymousのまま成功していた構成を、業務データに近い環境へ持ち込むと、意図せず広い権限で動かしてしまう可能性があります。MCP用の検証ロールを作り、読み取り専用、実行専用など、役割ごとに権限を切り分けると安全です。

展開前に行うべき検証手順

修正を取り込んだData API builderを展開する前に、最低限次の順序で確認しましょう。

手順確認すること失敗時の見直しポイント
1dab validateで設定ファイルを検証JSON構造、権限、DB接続、ストアドプロシージャのパラメーター
2dab start --mcp-stdioで起動MCPが有効か、role指定が正しいか
3--LogLevelなしで起動runtime.telemetry.log-levelが期待どおり効くか
4--LogLevel Warningなどで起動CLI指定がConfigより優先されるか
5MCPエージェントからlogging/setLevelを送るAgent指定がCLIより優先されるか
6describe_entitiesを実行ストアドプロシージャの全パラメーターが返るか
7execute_entityまたはカスタムツールを実行必須パラメーター不足で失敗しないか

dab validateは、設定ファイルを起動前に検証するコマンドです。公式ドキュメントでは、スキーマ、構造、権限、接続、メタデータを順に確認し、CI/CDでも使えると説明されています。(Microsoft Learn)

dab validate --config ./dab-config.staging.json

ストアドプロシージャを使っている場合は、dab validateだけで終わらせず、MCPクライアントから実際にdescribe_entitiesと実行系ツールを呼び出してください。今回の修正は、エージェントが見るメタデータの正確性に関わるため、CLI上の構文チェックだけでは確認が不十分です。

移行・展開時の注意点

今回のPRは、MCP関連の不具合修正をrelease/2.0に取り込むものです。そのため、大きな設定移行が必要になる更新というより、既存設定が意図どおり効くようになる更新と捉えると分かりやすいです。ただし、「これまで偶然動いていた運用」が変わって見える可能性があります。

ログが増えたように見える場合

設定ファイルのruntime.telemetry.log-levelが以前より正しく反映されることで、更新後にログが増えたように見える場合があります。これは不具合というより、設定済みの意図が反映されるようになった可能性があります。

確認する順序は次の通りです。

  1. dab-config.jsonruntime.telemetry.log-levelを見る
  2. 起動コマンドに--LogLevelが付いているか確認する
  3. MCPエージェントがlogging/setLevelを送っていないか確認する
  4. ログ保存先の容量、保持期間、転送先の料金影響を確認する

ストアドプロシージャ呼び出しが変わったように見える場合

describe_entitiesがDBメタデータを基準にパラメーターを返すようになるため、これまでエージェントから見えていなかったパラメーターが見えるようになる場合があります。DB側で追加したパラメーターをconfigに反映していなかった環境では、エージェントの入力候補が増える可能性があります。

特に次のケースは注意してください。

ケース起きやすい問題対応
DB側に必須パラメーターを追加したエージェントが新しい入力を要求するconfigに説明文を追加する
任意扱いしたいパラメーターがある既定でrequired: trueとして見えるconfigでrequired: falseを明示する
パラメーター名をconfig側で変えたいDB名が基準になるエージェント向け説明で用途を補う
DBの既定値に依存しているMCPメタデータ上のdefaultが不足するconfigにdefaultやdescriptionを明示する

次に取るべき行動

今回の「Microsoft Azure documentation update: Cherry-pick MCP fixes (#3508, #3544, #3425) to release/2.0」は、Azure Data API builder 2.0でMCPを使う環境にとって、ログ制御とストアドプロシージャ実行の安定性を高める更新です。特に重要なのは、MCP stdioのログが設定ファイルを反映すること、エージェントによるログレベル変更が最優先になること、describe_entitiesがストアドプロシージャのパラメーターをより正確に返すことです。

まずは、利用中のDAB CLIまたはコンテナイメージがrelease/2.0系の修正を取り込んでいるか確認します。そのうえで、dab validatedab start --mcp-stdiologging/setLeveldescribe_entitiesexecute_entityをステージング環境で順に確認してください。

MCPを使ったAIエージェント連携では、「エージェントが何を見て、どの権限で、どのログ粒度で実行しているか」が運用品質を左右します。今回の更新を機に、MCP設定、ログポリシー、ストアドプロシージャの説明文とパラメーター定義を見直しておくと、将来の本番展開や障害調査でつまずきにくくなります。

この記事を書いた人

実務の現場で詰まりがちなポイントを地図にするITブログ「IT trip」を運営。Windows/Office(Teams・Excel)からSQL、サーバ運用、ガジェットまで、再現性のある手順と“なぜそうなるか”を丁寧に解説します。読んだらすぐ試せること、そして迷った人の次の一歩が見えることを大切にしています。

コメント

コメントする

目次