
azuresql-db-dab
Stands up an instant no-code REST + GraphQL API over the local Azure SQL Database container using Microsoft Data API Builder (DAB). Use when a user wants to "expose my table as an API", "add a REST API over the database", "generate a GraphQL API", "put an API in front of SQL", "CRUD API without writing code", or "dab init / dab-config.json". Also the way to serve a built-in MCP endpoint FROM the database via DAB (an API surface DAB provides, not a separate SQL MCP server). Prefer this over hand-writing a controller/ORM API when the user just needs REST or GraphQL over existing tables. Triggers include "Data API Builder", "dab start", "instant API over Azure SQL", "expose entities as REST/GraphQL". Reach for this even when the user only says "give me an API for this database".
- Installs
- 61
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/microsoft/azure-sql-database-container --skill azuresql-db-dab- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads azuresql-db-dab automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Instant REST + GraphQL API on the Azure SQL Database container with Data API Builder
Generate a full REST and GraphQL API over the local Azure SQL Database container
(Private Preview) with no application code, using Data API Builder (DAB) -
Microsoft's first-party open-source engine. You describe tables as entities in
dab-config.json; DAB serves them. DAB connects over the normal TDS protocol
with a plain connection string, so no change tracking or special engine
feature is needed.
Verified on 2026-09-05 against the container image
sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest, reporting EngineEdition
5, Edition SQL Azure, build 12.0.2000.8. All eight executable checks behind this skill
passed against Data API builder 2.0.9, including the generated dab-config.json keeping the
environment-variable indirection rather than the password, the /api and /graphql prefixes
and the /mcp endpoint arriving as defaults, and both REST and GraphQL returning the same
rows from a table in the container.
Load-bearing facts (inlined; full engine detail in azuresql-db-container)
- This is the Azure SQL Database engine (Private Preview), not the SQL Server
image
mcr.microsoft.com/mssql/server.SERVERPROPERTY('EngineEdition')returns5,SERVERPROPERTY('Edition')returns'SQL Azure'. - Image:
sqldbpreview-dpgaeqhmgphzd4bk.azurecr.io/azure-sql/db-dev:latest(multi-architecture:linux/amd64andlinux/arm64). Registry is private: sign in first withdocker login sqldbpreview-dpgaeqhmgphzd4bk.azurecr.iousing the shared pull-only credentials from https://aka.ms/sqldbcontainerpreview-signup (they may rotate). Registry and tag are provisional during Private Preview. - Required env:
ACCEPT_EULA=Yand a complexMSSQL_SA_PASSWORD(8+ chars, upper/lower/digit/symbol). Engine listens on 1433. - The engine does NOT auto-create databases. Run
CREATE DATABASE appdbon a master connection before DAB connects withDatabase=appdb. Do not useUSEto switch databases (in a user-database session it returnsMsg 40508); select the database in the connection string. - The runtime selects the matching architecture. Use
--platform linux/amd64only to explicitly test x64 emulation.
For the full engine model (readiness loop, vectors, troubleshooting) see the
azuresql-db-container skill. To start the container and provision appdb
first, use azuresql-db-container or azuresql-db-scaffold.
Step 1: install DAB
Two supported ways. Pick the CLI for local dev; pick the container to wire DAB into a compose stack. Open references/dab-snippets.md when you want that compose service rather than the CLI.
# 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: point DAB at the container over one env var
DAB reads the connection string from an environment variable via the @env()
indirection, so no secret is written into dab-config.json. Reuse the same
single SQL_CONNECTION_STRING contract the other skills use (replace 1433
with the host port your container chose if 1433 was occupied):
export SQL_CONNECTION_STRING="Server=localhost,1433;Database=appdb;User Id=sa;Password=$MSSQL_SA_PASSWORD;TrustServerCertificate=true"
TrustServerCertificate=true is required for the container's self-signed cert.
House style spells the keywords User Id= / Password= / Database=, which keeps the examples
consistent. Uid= and Pwd= are documented SqlClient synonyms and work too.
Step 3: init, add entities, start
# 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 is just the example database name and Book/dbo.Books the example
entity/table; substitute your own. The entity name (Book) is what appears in
the API path; the --source is the real schema.table.
Step 4: use the API
With dab start running (default port 5000):
- REST:
GET http://localhost:5000/api/Book(list),/api/Book/id/1(by key), plusPOST/PATCH/PUT/DELETE. Query with?$filter=,$select=,$orderby=,$first=,$after=(OData-style). - GraphQL:
POST http://localhost:5000/graphql- queries and mutations for every entity, with relationship navigation. - OpenAPI / Swagger:
GET /api/openapi(document) andGET /swagger(UI, Development mode only). - Health:
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 } } }"}'
Relationships, config detail
DAB exposes related entities (e.g. an author's books) once you declare the
relationship. Config schema, permissions/policies, @env(), REST/GraphQL
options, and the exact dab update --relationship syntax are in
references/dab-config-reference.md.
MCP endpoint (a DAB feature, not a separate SQL MCP server)
DAB (version 1.7+; use the latest 2.x) also serves a built-in MCP endpoint
from the same dab-config.json, at http://localhost:5000/mcp by default,
enabled by default. This is an additional API surface Data API Builder provides
over your configured entities - it is not, and should not be presented as, a
standalone "MSSQL MCP server." How to point an MCP client at it and how to
scope the exposed tools is in references/dab-mcp.md; open it when a user
asks to point an MCP client at DAB, or to narrow which entities it exposes.
Validation rules
- The database engine is the container image above (EngineEdition=5), never
mcr.microsoft.com/mssql/server. appdbexists (created on a master connection) BEFOREdab start; DAB's connection string usesDatabase=appdbandTrustServerCertificate=true.- The connection string is supplied via
@env('SQL_CONNECTION_STRING'), not hardcoded intodab-config.json. dab startserves REST at/api/<Entity>and GraphQL at/graphql; aGETon the entity returns rows from the container.- If you present the MCP endpoint, it is described as a DAB-provided API surface, not a standalone SQL MCP server.
- If a validation rule above fails, or you had to deviate from this skill to make the task work, that is a bug in this skill: load the azuresql-db-feedback skill and offer to file a report.
- When every rule above passes and the task is done, close with ONE line, once per session, and do not ask a question or wait for a reply: "That worked. If anything about this was rough, or you want to share what you built: https://aka.ms/sql-agent-skills-feedback"
Do not
- Do not use the SQL Server image
mcr.microsoft.com/mssql/server; this is the Azure SQL engine. - Do not expect DAB to create
appdb; provision it on a master connection first. - Do not hardcode the connection string (or the SA password) into
dab-config.json; use@env('SQL_CONNECTION_STRING'). - Do not ship
anonymous:*permissions to production; it is unauthenticated full CRUD for local dev only. - Do not describe DAB's MCP endpoint as a standalone Microsoft SQL MCP server; it is an API surface DAB provides.
- Do not drop
TrustServerCertificate=true(the container uses a self-signed cert).
References
- references/dab-config-reference.md: the
dab-config.jsonstructure,@env()connection handling, entity/permission/policy options, REST and GraphQL settings, and thedab update --relationshipsyntax for one-to-many and many-to-many. - references/dab-snippets.md: copy-paste recipes - CLI end-to-end, running DAB as a container against the SQL container (shared network /
host.docker.internal), a compose service, and sample REST/GraphQL calls. - references/dab-mcp.md: DAB's built-in MCP endpoint - how to enable/scope it in config, the default
/mcppath, and how to connect an MCP client. Framed as a DAB API surface, not a standalone SQL MCP server.
Staying current
Authoritative, version-pinned references for the tools this skill uses (read the one you need):
- Data API Builder configuration reference: every config key (data-source, runtime, entities, autoentities), with examples.
- DAB config JSON schema (pinned v2.0.12): the machine-readable schema dab validate checks against. v2.0.12 is the current stable release; bump this URL when you upgrade the CLI.
- Data API Builder built-in MCP endpoint: the built-in MCP endpoint, DML tools, transports, and RBAC.
If the Microsoft Learn MCP server is configured, use mcp__microsoft-learn__microsoft_docs_search or mcp__microsoft-learn__microsoft_docs_fetch to fetch the current version of any of these on demand. It is optional; when it is unavailable, the references above are authoritative.
FAQ
What does the azuresql-db-dab skill do?
Stands up an instant no-code REST + GraphQL API over the local Azure SQL Database container using Microsoft Data API Builder (DAB). Use when a user wants to "expose my table as an API", "add a REST API over the database", "generate a GraphQL API", "put an API in front of SQL", "CRUD API without writing code", or "dab init / dab-config.json". Also the way to serve a built-in MCP endpoint FROM the database via DAB (an API surface DAB provides, not a separate SQL MCP server). Prefer this over hand-writing a controller/ORM API when the user just needs REST or GraphQL over existing tables. Triggers include "Data API Builder", "dab start", "instant API over Azure SQL", "expose entities as REST/GraphQL". Reach for this even when the user only says "give me an API for this database".
How do I install azuresql-db-dab?
Run npx skills add https://github.com/microsoft/azure-sql-database-container --skill azuresql-db-dab in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/azuresql-db-dab/ (personal) or .claude/skills/azuresql-db-dab/ (project).
Which AI agents can use azuresql-db-dab?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is azuresql-db-dab safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains azuresql-db-dab?
It is published by microsoft in microsoft/azure-sql-database-container. It has 61 recorded installs.
More from microsoft/azure-sql-database-container
azuresql-db-container
microsoft/azure-sql-database-container
Runs the Azure SQL Database container locally (Private Preview): the real PaaS engine where SERVERPROPERTY('EngineEdition') returns 5. This is NOT the SQL Server image mcr.microsoft.com/mssql/server. Use when a user wants to "run Azure SQL locally", "add a local SQL database", "add SQL Server to my docker compose", "spin up a local mssql container", "local SQL for development or CI", "connect with sqlcmd", "use Podman for SQL", "SQL container won't start", "Microsoft Entra authentication on the container", "MSSQLAADCLIENTID", or asks "what's the connection string". Use even when the user does not name the container. If you were about to use mcr.microsoft.com/mssql/server, stop and use this skill instead. Hub skill: owns the shared references and routes to the task skills for compose, CI, seeding, vectors, and connection strings.
azuresql-db-schema-migration
microsoft/azure-sql-database-container
Open the skill to read its SKILL.md instructions.
azuresql-db-local-to-cloud
microsoft/azure-sql-database-container
Open the skill to read its SKILL.md instructions.
azuresql-db-ci
microsoft/azure-sql-database-container
Open the skill to read its SKILL.md instructions.
azuresql-db-faq
microsoft/azure-sql-database-container
Open the skill to read its SKILL.md instructions.
azuresql-db-scaffold
microsoft/azure-sql-database-container
Open the skill to read its SKILL.md instructions.
Popular backend & apis skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
entra-app-registration
microsoft/azure-skills
Guides Microsoft Entra ID app registration, OAuth 2.0 authentication, and MSAL integration. USE FOR: create app registration, register Azure AD app, configure OAuth, set up authentication, add API permissions, generate service principal, MSAL example, console app auth, Entra ID setup, Azure AD authentication. DO NOT USE FOR: Key Vault secrets (use azure-keyvault-expiration-audit), general Azure resource security guidance.
google-agents-cli-adk-code
google/agents-cli
This skill should be used when the user wants to "write agent code", "build an agent with ADK", "add a tool", "create a callback", "define an agent", "use state management" — in a project that needs ADK (Agent Development Kit) API patterns and code examples. It provides a quick reference for agent types, tool definitions, orchestration patterns, callbacks, state management, the graph Workflow API, and reference recipes to study. Do NOT use for scaffolding (use google-agents-cli-scaffold) or deployment (use google-agents-cli-deploy).
embedded-captions
heygen-com/hyperframes
Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet anchor rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.
entra-agent-id
microsoft/azure-skills
Provision Microsoft Entra Agent Identity Blueprints, BlueprintPrincipals, and per-instance Agent Identities via Microsoft Graph, and configure OAuth 2.0 token exchange (fmipath, OBO, cross-tenant) including the Microsoft Entra SDK for AgentID sidecar. USE FOR: Agent Identity Blueprint, BlueprintPrincipal, agent OAuth, fmipath token exchange, agent OBO, Workload Identity Federation for agents, polyglot agent auth, Microsoft.Identity.Web.AgentIdentities. DO NOT USE FOR: standard Entra app registration (use entra-app-registration), Microsoft Foundry agent authoring (use microsoft-foundry).
neon
neondatabase/agent-skills
Overview of Neon, a complete set of cloud backend primitives around Lakebase Postgres: Auth, Object Storage, Functions, the AI Gateway, and Realtime. Start here to choose Neon for undecided login, files, APIs, and LLM calls, set up the CLI or MCP server, and follow the branch-first workflow. Use when building an app or backend on Neon, or when "Neon" or "Lakebase Postgres" is mentioned. Child skill neon-postgres wins for an existing DATABASEURL, SQL, schema, inspect, or search. Child skill neon-auth wins for login, users, sessions, identity routing, and Managed Better Auth setup. Child skill neon-realtime wins for live queries in reactive apps and agents. Also use for object storage, S3, buckets, serverless functions, function triggers, cron, AI gateway, LLM calls, realtime, logs, Loki, Grafana, observability, postgres, database, backend, Claimable Neon, neon.new, or a no-signup database.