SQL MCP Server's undocumented shortcut: DAB_CONNSTRING
Since version 2.0, Microsoft's SQL MCP Server container image ships with a built-in configuration file, and a single environment variable named DAB_CONNSTRING overrides its connection string. That means a working MCP endpoint in minutes with no custom image and no mounted JSON file. The catch: the bundled defaults are built for developers, with anonymous CRUD permissions including mutations, so production needs real configuration.
Key points
- Data API builder 2.0 (June 2026) images now bundle a baseline configuration with autoentities exposing every table in every schema
- DAB_CONNSTRING overrides the connection string in any configuration, regardless of existing values or @env() function references
- The Docker image mcr.microsoft.com/azure-databases/data-api-builder:2.0.12 serves an MCP endpoint at port 5000 under /mcp
- Deploy commands for ACA Express, Container Apps, ACI and AKS all work with the same DAB_CONNSTRING environment variable
- Defaults set hosting to development, enable Swagger and Nitro, and leave the health endpoint anonymous
- Anonymous users get full CRUD permissions including mutations, so the default config is not production-safe
SQL MCP Server is Microsoft's self-hosted container built on the Data API builder engine, exposing CRUD plus execute operations to agents with guardrails. The 2.0 release added auto configuration, where autoentities wildcards pick up SQL tables by schema or name, and the shipped image now carries a baseline config that exposes every table in every schema. The only missing piece was a connection string, and the DAB_CONNSTRING environment variable overrides whatever the config file holds.
A single docker run, or a deploy command for Azure Container Apps Express, standard Container Apps, ACI or AKS, gets an MCP endpoint on port 5000 at /mcp without building an image or mounting JSON. The bundled defaults are developer-oriented though: development hosting mode, Swagger and Nitro enabled, anonymous health access and full anonymous CRUD including mutations. Treat it as a proof-of-concept path and write your own config before production.
Real-world use
- A team validating a SQL-backed agent idea in minutes without building a custom image or writing configuration JSON
- Spinning up a throwaway MCP endpoint on AKS in an internal POC environment and pointing Claude Code or Copilot at it
- Multi-environment setups where you inject the connection string as an environment variable instead of baking it into an image
Why it matters
The config-file step that slows down agent-over-database prototypes mostly disappears, so you can test an MCP endpoint in minutes; the same convenience makes it easy to ship wide-open anonymous write access to production if you skip hardening.