/ ディレクトリ / プレイグラウンド / Azure Data API Builder (MCP)
● 公式 Azure 🔑 自分のキーが必要

Azure Data API Builder (MCP)

作者 Azure · Azure/data-api-builder

MicrosoftのオフィシャルOSSツールがAzure SQL・Cosmos DB・Postgres・MySQLをREST + GraphQL + MCPエンドポイントに変換 — 設定ファイルだけ、コード不要。

Data API Builder(DAB)は、リレーショナルまたはNoSQLストアをMCPを含む既知のプロトコルの背後に置くためのAzureサポートのツールです。エンティティ・リレーションシップ・ポリシーを列挙したJSON設定を書くと、DABがREST・GraphQL・(2026年以降)MCPツールとして公開するプロセスを起動します。Azure SQL・SQL Server・Cosmos DB(NoSQL + PostgreSQL)・Postgres・MySQL・Azure Data Lakeをサポート。Static Web Apps・Easy Auth・JWTによる認証。

なぜ使うのか

主な機能

ライブデモ

実際の動作

azure-data-api-builder-mcp.replay ▶ 準備完了
0/0

インストール

クライアントを選択

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "azure-data-api-builder-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "${PWD}/dab-config.json:/App/dab-config.json:ro",
        "-e",
        "DAB_ENVIRONMENT=Production",
        "mcr.microsoft.com/azure-databases/data-api-builder:latest",
        "--ConfigFileName",
        "/App/dab-config.json"
      ]
    }
  }
}

Claude Desktop → Settings → Developer → Edit Config を開く。保存後、アプリを再起動。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "azure-data-api-builder-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "${PWD}/dab-config.json:/App/dab-config.json:ro",
        "-e",
        "DAB_ENVIRONMENT=Production",
        "mcr.microsoft.com/azure-databases/data-api-builder:latest",
        "--ConfigFileName",
        "/App/dab-config.json"
      ]
    }
  }
}

Cursor は Claude Desktop と同じ mcpServers スキーマを使用。プロジェクト設定はグローバルより優先。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "azure-data-api-builder-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "${PWD}/dab-config.json:/App/dab-config.json:ro",
        "-e",
        "DAB_ENVIRONMENT=Production",
        "mcr.microsoft.com/azure-databases/data-api-builder:latest",
        "--ConfigFileName",
        "/App/dab-config.json"
      ]
    }
  }
}

Cline サイドバーの MCP Servers アイコンをクリックし、"Edit Configuration" を選択。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "azure-data-api-builder-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "${PWD}/dab-config.json:/App/dab-config.json:ro",
        "-e",
        "DAB_ENVIRONMENT=Production",
        "mcr.microsoft.com/azure-databases/data-api-builder:latest",
        "--ConfigFileName",
        "/App/dab-config.json"
      ]
    }
  }
}

Claude Desktop と同じ形式。Windsurf を再起動して反映。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "azure-data-api-builder-mcp",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-v",
        "${PWD}/dab-config.json:/App/dab-config.json:ro",
        "-e",
        "DAB_ENVIRONMENT=Production",
        "mcr.microsoft.com/azure-databases/data-api-builder:latest",
        "--ConfigFileName",
        "/App/dab-config.json"
      ]
    }
  ]
}

Continue はマップではなくサーバーオブジェクトの配列を使用。

~/.config/zed/settings.json
{
  "context_servers": {
    "azure-data-api-builder-mcp": {
      "command": {
        "path": "docker",
        "args": [
          "run",
          "--rm",
          "-i",
          "-v",
          "${PWD}/dab-config.json:/App/dab-config.json:ro",
          "-e",
          "DAB_ENVIRONMENT=Production",
          "mcr.microsoft.com/azure-databases/data-api-builder:latest",
          "--ConfigFileName",
          "/App/dab-config.json"
        ]
      }
    }
  }
}

context_servers に追加。保存時に Zed がホットリロード。

claude mcp add azure-data-api-builder-mcp -- docker run --rm -i -v ${PWD}/dab-config.json:/App/dab-config.json:ro -e DAB_ENVIRONMENT=Production mcr.microsoft.com/azure-databases/data-api-builder:latest --ConfigFileName /App/dab-config.json

ワンライナー。claude mcp list で確認、claude mcp remove で削除。

ユースケース

実用的な使い方: Azure Data API Builder (MCP)

ロールベースアクセスでAzure SQLデータベースをClaudeに公開する

👤 Azureショップチーム;クエリを実行したいアナリスト ⏱ ~30 min intermediate

使うタイミング: 社内のAzure SQL DBがあり、AIエージェントに厳格なテーブルごとの権限で読み取らせたい場合(全権限のadminではなく)。

前提条件
  • Azure SQL接続文字列 — Azure Portal → SQL DB → 接続文字列
  • Dockerのローカルインストール — Docker DesktopまたはOCIランタイム
フロー
  1. dab-config.jsonを生成する
    Create a DAB config that exposes the Customers and Orders tables read-only over MCP. Connect to my Azure SQL via env var DAB_CONN.✓ コピーしました
    → 両エンティティとactions: ["read"]を含むdab-config.jsonが書き込まれる
  2. ローカルで実行する
    Spin up DAB locally via Docker on port 5000 and verify the MCP endpoint responds.✓ コピーしました
    → GET /api/Customersが行を返し;MCPツールリストにエンティティが表示される
  3. Claudeに接続する
    Add the local DAB MCP to my Claude config and ask: 'Top 10 customers by orders in 2026.'✓ コピーしました
    → Claudeがread呼び出しを組み合わせて結果を返す

結果: Claudeが直接SQLではなく、設定された厳格な範囲内でデータベースをクエリできるようになる。

注意点
  • Azure SQLのファイアウォールがローカルDockerのIPをブロックする — Azure Portal → SQL Server → ネットワークでIPを許可するか、Azure内でDABを実行してください

Cosmos DB NoSQLをGraphQL+MCPレイヤーでラップする

👤 カスタムAPIなしでLLMアクセスが必要なCosmosチーム ⏱ ~40 min advanced

使うタイミング: Cosmos NoSQLコンテナがあり、フィールドレベルポリシー付きでClaudeに読み書きアクセスさせたい場合。

前提条件
  • Cosmos DBアカウント + コンテナ — Azure Portalから — 接続文字列とデータベース/コンテナ名をメモ
フロー
  1. エンティティを設定する
    Add an entity for Cosmos container products with a JSON schema mapped from the actual docs. Allow read+update; require role 'editor' for updates.✓ コピーしました
    → 権限ブロック付きのdab-config.jsonが更新される
  2. Easy Authを設定する
    Add a JWT auth provider config with the issuer of my Entra tenant.✓ コピーしました
    → 認証ブロックが追加される;DABが強制する
  3. ポリシーを確認する
    Try a write as anonymous (should fail), then with editor token (should succeed).✓ コピーしました
    → 401次に200 — ポリシーが強制されていることを証明

結果: Claudeに対して安全なCosmos表面 — 読み取り開放、書き込みゲート制御。

注意点
  • CosmosスキーマはダイナミックだがDABはGraphQL型を必要とする — GraphQLスキーマファイルを提供してください;しなければDABはRESTにフォールバックします

ストアドプロシージャをMCPツールとして公開する

👤 TSQLにビジネスロジックを持つDBA ⏱ ~25 min advanced

使うタイミング: 既存のストアドプロシージャがビジネスルールをエンコードしており、直接テーブルアクセスよりもClaudeにそれらを公開したい場合。

フロー
  1. エンティティを定義する
    In dab-config, add entity GetSalesByRegion of type stored-procedure pointing to dbo.usp_GetSalesByRegion. Map parameters to MCP tool inputs.✓ コピーしました
    → ストアドプロシージャが呼び出し可能なMCPツールとして表示される
  2. テストする
    Call GetSalesByRegion for region='APAC', period='2026Q1'.✓ コピーしました
    → 結果行が返される

結果: ビジネスロジックがDBに留まり、AIはただそれを呼び出す。

注意点
  • ストアドプロシージャが複数の結果セットを返す — DABは最初のセットを返します;単一セットにリファクタリングするか複数のプロシージャに分割してください

組み合わせ

他のMCPと組み合わせて10倍の力を

azure-data-api-builder-mcp + filesystem

dab-config.jsonと生成されたGraphQLスキーマをリポジトリに保存する

Save dab-config.json and schema.graphql under /db/dab/.✓ コピーしました
azure-data-api-builder-mcp + github

DAB設定変更時にPRをオープンする

Diff against main; if changed, open PR titled 'DAB config update'.✓ コピーしました

ツール

このMCPが提供する機能

ツール入力呼び出すタイミングコスト
list_entities (none) 公開されているエンティティを確認する free
<entity>.read filter?, top?, select?, orderby? 標準読み取り;<entity>を置き換えてください 1 DB query per call
<entity>.create fields object 権限がcreateを許可している場合のみ 1 DB insert
<storedproc> configured params カプセル化されたビジネスロジック 1 DB call

コストと制限

運用コスト

APIクォータ
Azure DBティアに依存
呼び出しあたりのトークン
返される行に応じて100〜2000
金額
DABは無料;DBコストはお客様負担。ローカルDockerは追加コストゼロ。
ヒント
top + selectを使って結果セットを限定し、tokenコストを予測可能に保ってください

セキュリティ

権限、シークレット、影響範囲

最小スコープ: DBのreadロール(例:読み取り専用のdb_datareader)
認証情報の保管: 接続文字列は環境変数またはAzure Managed Identity経由(Azureでは推奨)
データ送信先: DABをAzureにデプロイすればAzure内に留まります
絶対に付与しない: db_owner DDL rights

トラブルシューティング

よくあるエラーと対処法

ユーザーのログインに失敗する

接続文字列を確認 — DABは存在するSQLまたはEntraアカウントが必要;ファイアウォールがホストを許可していること

確認: 同じホストから同じ認証情報で`sqlcmd`を実行
MCPツールリストにエンティティが見つからない

dab-config.json編集後にDABを再起動してください — 設定は起動時に一度だけ読み込まれます

確認: コンテナログで「Entity X registered」を確認
CosmosのGraphQL型が欠けている

dab-config.jsonと並置してschema.graphqlを提供するか、GraphQL.Mode = REST-onlyを設定してください

代替案

Azure Data API Builder (MCP) 他との比較

代替案代わりに使う場面トレードオフ
Hasuraより洗練されたGraphQL表面が必要でMCPはまだ不要な場合Hasuraは範囲が広くて重い;DABはAzure向きで軽量
Direct Postgres MCP / Postgres MCPサーバーAzureを使っておらず生のPostgresアクセスだけ必要な場合Postgres MCPはシンプル;DABはエンティティ/行レベルのポリシーを強制

その他

リソース

📖 GitHub の公式 README を読む

🐙 オープンな issue を見る

🔍 400以上のMCPサーバーとSkillsを見る