mcpField
A
azuresql-db-dab

azuresql-db-dab

github.com/microsoft開発2262 回インストール1 週間前に更新
リポジトリ

azuresql-db-dab について

Azure SQL Database コンテナー上で Data API Builder を設定し、REST、GraphQL API と組み込み MCP エンドポイントを公開するスキルです。アプリケーションコードを書かずにローカルデータベース API を構築する開発者向けです。

主な機能

  1. 01データベースエンティティの設定
  2. 02REST と GraphQL API の生成
  3. 03環境変数から接続文字列を読み込み
  4. 04DAB 組み込み MCP エンドポイントの公開

活用シーン

  1. 01ローカル Azure SQL データベースの API 構築
  2. 02データベースエンティティを MCP クライアントに公開

MCP 対応

Data API Builder は設定済みエンティティ向けの MCP エンドポイントを提供し、既定の `/mcp` パスに MCP クライアントが接続できます。独立した SQL MCP サーバーではなく、DAB の API サーフェスです。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/microsoft/azure-sql-database-container --skill azuresql-db-dab

インストール後、Claude Code で/azuresql-db-dabを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

skill.spec.jsonc
references/
dab-config-reference.md
dab-mcp.md
dab-snippets.md

詳細

Data API Builder を使った Azure SQL Database コンテナー上の即時 REST + GraphQL API

アプリケーションコードなしで、ローカルの Azure SQL Database コンテナー (Private Preview)上に、完全な REST および GraphQL API を生成できます。Microsoft のファーストパーティ製オープンソースエンジンである Data API Builder(DAB) を使用します。 テーブルを dab-config.json でエンティティとして記述すると、DAB がそれらを提供します。DAB は通常の TDS プロトコルと通常の接続文字列を使って接続するため、変更追跡や特別なエンジン機能は必要ありません。

2026-09-05 に、コンテナーイメージ sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest に対して検証済みです。このイメージは EngineEdition 5、Edition SQL Azure、ビルド 12.0.2000.8 を報告しました。このスキルに含まれる実行可能な 8 つのチェックはすべて Data API Builder 2.0.9 に対して合格しました。これには、生成された dab-config.json がパスワードではなく環境変数を介した間接参照を保持すること、/api と /graphql のプレフィックスおよび /mcp エンドポイントがデフォルトとして設定されること、REST と GraphQL の両方がコンテナー内のテーブルから同じ行を返すことが含まれます。

重要な事実(要点を記載。エンジンの詳細は azuresql-db-container を参照)

  • これは Azure SQL Database エンジン(Private Preview)であり、SQL Server イメージ mcr.microsoft.com/mssql/server ではありません。SERVERPROPERTY('EngineEdition') は 5 を返し、SERVERPROPERTY('Edition') は 'SQL Azure' を返します。
  • イメージ:sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest (x64、linux/amd64)。レジストリはプライベートです。まず、https://aka.ms/sqldbcontainerpreview-signup から共有されたプル専用の認証情報を使用して docker login sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io でサインインしてください(認証情報はローテーションされる場合があります)。Private Preview 中は、レジストリとタグは暫定的なものです。
  • 必須の環境変数:ACCEPT_EULA=Y と、複雑な MSSQL_SA_PASSWORD(8 文字以上で、大文字、小文字、数字、記号を含む)。エンジンは 1433 で待ち受けます。
  • エンジンはデータベースを自動作成しません。DAB が Database=appdb で接続する前に、master への接続で CREATE DATABASE appdb を実行してください。データベースを切り替えるために USE を使わないでください(ユーザーデータベースのセッションでは Msg 40508 が返されます)。接続文字列でデータベースを指定してください。
  • x64 以外のホストでは --platform linux/amd64 を追加してください。

エンジンモデルの詳細(起動待機ループ、ベクター、トラブルシューティング)については、azuresql-db-container スキルを参照してください。コンテナーを起動して最初に appdb を作成するには、azuresql-db-container または azuresql-db-scaffold を使用してください。

Step 1: DAB をインストールする

サポートされている方法は 2 つあります。ローカル開発には CLI を選び、DAB を compose スタックに組み込むにはコンテナーを選んでください。CLI ではなく compose サービスを使う場合は、references/dab-snippets.md を開いてください。

# CLI (.NET 8 required): installs the `dab` command
dotnet tool install --global Microsoft.DataApiBuilder
# update later with: dotnet tool update --global Microsoft.DataApiBuilder

# Container image (alternative):
#   mcr.microsoft.com/azure-databases/data-api-builder:latest

Step 2: 1 つの環境変数で DAB をコンテナーに接続する

DAB は @env() による間接参照を使って環境変数から接続文字列を読み取るため、dab-config.json にシークレットが書き込まれることはありません。他のスキルで使われているものと同じ単一の SQL_CONNECTION_STRING の取り決めを再利用してください(1433 が使用中だった場合は、1433 をコンテナーが選択したホストポートに置き換えてください)。

export SQL_CONNECTION_STRING="Server=localhost,1433;Database=appdb;User Id=sa;Password=$MSSQL_SA_PASSWORD;TrustServerCertificate=true"

コンテナーの自己署名証明書には TrustServerCertificate=true が必要です。表記を統一するため、ハウススタイルではキーワードに User Id=/Password=/Database= を使っています。Uid= と Pwd= も、ドキュメントに記載されている SqlClient の同義語であり、使用できます。

Step 3: 初期化し、エンティティを追加して、起動する

# Initialize config in Development mode (enables Swagger + friendlier errors).
dab init --database-type mssql \
  --connection-string "@env('SQL_CONNECTION_STRING')" \
  --host-mode Development

# Expose a table as an entity. Repeat per table.
# --permissions is role:actions; "anonymous:*" allows all actions with no auth (dev only).
dab add Book --source dbo.Books --source.type table --permissions "anonymous:*"

# Serve REST + GraphQL (and the MCP endpoint) on http://localhost:5000
dab start

appdb はデータベース名の例、Book/dbo.Books はエンティティ/テーブル名の例です。必要に応じて置き換えてください。エンティティ名(Book)は API パスに表示され、--source は実際の schema.table です。

ステップ 4:API を使用する

dab start を実行した状態で(デフォルトのポートは 5000 です):

  • REST: GET http://localhost:5000/api/Book(一覧)、/api/Book/id/1(キーによる取得)、さらに POST / PATCH / PUT / DELETE を使用できます。?$filter=、$select=、$orderby=、$first=、$after= を指定してクエリを実行できます(OData 形式)。
  • GraphQL: POST http://localhost:5000/graphql - すべてのエンティティに対するクエリとミューテーションを、リレーションシップのナビゲーション付きで利用できます。
  • OpenAPI / Swagger: GET /api/openapi(ドキュメント)および GET /swagger(UI、Development モードのみ)。
  • ヘルスチェック: GET /health。
curl http://localhost:5000/api/Book
curl -s http://localhost:5000/graphql -H 'Content-Type: application/json' \
  -d '{"query":"{ books { items { id title } } }"}'

リレーションシップと設定の詳細

DAB では、リレーションシップを宣言すると、関連するエンティティ(たとえば著者の書籍)を公開できます。設定スキーマ、アクセス許可/ポリシー、@env()、REST/GraphQL オプション、および正確な dab update --relationship の構文については、references/dab-config-reference.md を参照してください。

MCP エンドポイント(DAB の機能であり、独立した SQL MCP サーバーではありません)

DAB(バージョン 1.7 以降。最新の 2.x を使用してください)は、同じ dab-config.json から組み込み MCP エンドポイントも提供します。デフォルトでは http://localhost:5000/mcp で、既定で有効になっています。これは、設定したエンティティに対して Data API Builder が提供する追加の API サーフェスであり、独立した「MSSQL MCP サーバー」ではありません。また、そのように紹介してはいけません。MCP クライアントの接続方法と公開するツールの範囲を設定する方法については、references/dab-mcp.md を参照してください。ユーザーから DAB への MCP クライアントの接続方法や、公開するエンティティの絞り込みについて尋ねられた場合は、このファイルを開いてください。

検証ルール

  • データベースエンジンには上記のコンテナーイメージを使用します(EngineEdition=5)。mcr.microsoft.com/mssql/server は使用しないでください。
  • appdb は(master への接続で作成して)dab start の実行前に存在している必要があります。DAB の接続文字列では Database=appdb と TrustServerCertificate=true を使用します。
  • 接続文字列は @env('SQL_CONNECTION_STRING') で指定し、dab-config.json にハードコードしないでください。
  • dab start は /api/<Entity> で REST、/graphql で GraphQL を提供します。エンティティに対する GET は、コンテナー内の行を返します。
  • MCP エンドポイントを紹介する場合は、独立した SQL MCP サーバーではなく、DAB が提供する API サーフェスとして説明してください。
  • 上記の検証ルールのいずれかに違反した場合、またはタスクを完了するためにこのスキルから逸脱する必要があった場合は、このスキルの不具合です。azuresql-db-feedback スキルを読み込み、レポートの提出を提案してください。
  • 上記のすべてのルールに合格してタスクが完了したら、セッションごとに一度だけ、質問したり返答を待ったりせず、最後に次の一行を記載してください:"That worked. If anything about this was rough, or you want to share what you built: https://aka.ms/sql-agent-skills-feedback"

禁止事項

  • SQL Server イメージ mcr.microsoft.com/mssql/server を使用しないでください。これは Azure SQL エンジンです。
  • DAB が appdb を作成すると想定しないでください。先に master への接続でプロビジョニングしてください。
  • 接続文字列(または SA パスワード)を dab-config.json にハードコードしないでください。@env('SQL_CONNECTION_STRING') を使用してください。
  • anonymous:* のアクセス許可を本番環境にデプロイしないでください。これはローカル開発専用の、認証なしでの完全な CRUD アクセスです。
  • DAB の MCP エンドポイントを、独立した Microsoft SQL MCP サーバーとして説明しないでください。これは DAB が提供する API サーフェスです。
  • コンテナーは自己署名証明書を使用するため、TrustServerCertificate=true を削除しないでください。また、x64 以外のホストでは --platform linux/amd64 を削除しないでください。

参考資料

  • references/dab-config-reference.md:dab-config.json の構造、@env() による接続の処理、エンティティ/権限/ポリシーのオプション、REST と GraphQL の設定、および一対多と多対多のための dab update --relationship 構文について説明しています。
  • references/dab-snippets.md:コピーして使えるレシピです。CLI によるエンドツーエンドの手順、SQL コンテナーに接続して DAB をコンテナーとして実行する方法(共有ネットワーク/host.docker.internal)、Compose サービス、および REST/GraphQL 呼び出しのサンプルを掲載しています。
  • references/dab-mcp.md:DAB 組み込みの MCP エンドポイントについて説明しています。設定での有効化とスコープ設定、既定の /mcp パス、MCP クライアントの接続方法を扱います。単独の SQL MCP サーバーではなく、DAB API サーフェスとして位置付けています。

最新情報の確認

このスキルで使用するツールの、バージョンが固定された信頼できる参考資料です(必要なものを参照してください)。

Microsoft Learn MCP サーバーが構成されている場合は、mcp__microsoft-learn__microsoft_docs_search または mcp__microsoft-learn__microsoft_docs_fetch を使用して、これらの資料の最新バージョンを必要に応じて取得してください。使用は任意です。利用できない場合は、上記の参考資料を信頼できる情報源として使用してください。

コメント