Real-time global intelligence dashboard. AI-powered news aggregation, geopolitical monitoring, and infrastructure tracking in a unified situational awareness interface
MCP server and REST GraphQL API for databases
Data API builder turns a database into a REST, GraphQL, and MCP surface. You point it at a connection string, define entities in a JSON config, and start the service with the `dab` CLI.
Builders who want their agent or app to query and mutate database data through REST, GraphQL, or MCP.
You can expose database tables and procedures as agent-friendly tools and APIs without writing a custom backend.
What it does
REST, GraphQL, and MCP endpoints
Creates REST and GraphQL routes for entities and exposes MCP tools for database access.
Database-backed entity mapping
Maps tables, views, and stored procedures to named entities in a JSON config file.
CLI-driven setup and run
Uses `dab init`, `dab add`, and `dab start` to create config, add entities, and run the service.
Container and local runtime
Runs locally during development and in a container for production.
Database support
Supports Azure SQL, SQL Server, SQLDW, Cosmos DB, PostgreSQL, and MySQL.
How to get it
- 1Run
dotnet --version
- 2The Data API builder (DAB) command line is cross-platform and intended for local…
dotnet tool install microsoft.dataapibuilder -g
- 3Run
dab --version
- 4Run
echo my-connection-string=%database_connection_string% > .env
- 5Run
echo "my-connection-string=$database_connection_string" > .env
- 6The file .env is automatically created through this process. These are the resulting…
"my-connection-string=$env:database_connection_string"
README
Data API builder for Azure Databases
Join the community
Want to be part of our priorities and roadmap? Sign up here.

About Data API builder
Data API builder (DAB) is an open-source, no-code tool that creates secure, full-featured REST and GraphQL endpoints for your database. It’s a CRUD data API engine that runs in a container—on Azure, any other cloud, or on-premises. DAB is built for developers with integrated tooling, telemetry, and other productivity features.
[!IMPORTANT] Data API builder (DAB) is open source and always free.
Which databases does Data API builder support?
| Azure SQL | SQL Server | SQLDW | Cosmos DB | PostgreSQL | MySQL | |
|---|---|---|---|---|---|---|
| Supported | Yes | Yes | Yes | Yes | Yes | Yes |
Which environments does Data API builder support?
| On-Prem | Azure | AWS | GCP | Other | |
|---|---|---|---|---|---|
| Supported | Yes | Yes | Yes | Yes | Yes |
Which endpoints does Data API builder support?
| REST | GraphQL | MCP | |
|---|---|---|---|
| Supported | Yes | Yes | Yes |
Getting started
Use the Getting Started tutorial to quickly explore the core tools and concepts.
1. Install the dotnet command line
[!NOTE] You may already have .NET installed!
The Data API builder (DAB) command line requires the .NET runtime version 8 or later.
Validate your installation
dotnet --version
2. Install the dab command line
The Data API builder (DAB) command line is cross-platform and intended for local developer use.
dotnet tool install microsoft.dataapibuilder -g
Validate your installation
dab --version
3. Create your database (example: Azure SQL database / T-SQL)
This example uses a single table for simplicity.
CREATE TABLE dbo.Todo
(
Id INT PRIMARY KEY IDENTITY,
Title NVARCHAR(500) NOT NULL,
IsCompleted BIT NOT NULL DEFAULT 0
);
INSERT dbo.Todo (Title, IsCompleted)
VALUES
('Walk the dog', 0),
('Feed the fish', 0),
('Clean the cat', 1);
4. Prepare your connection string
Data API builder (DAB) supports .env files for testing process-level environment variables.
PowerShell (Windows)
echo "my-connection-string=$env:database_connection_string" > .env
cmd.exe (Windows)
echo my-connection-string=%database_connection_string% > .env
bash (macOS/Linux)
echo "my-connection-string=$database_connection_string" > .env
Resulting .env file
The file .env is automatically created through this process. These are the resulting contents:
"my-connection-string=$env:database_connection_string"
[!NOTE] Be sure and replace
database_connection_stringwith your actual database connection string.
[!IMPORTANT] Adding
.envto your.gitignorefile will help ensure your secrets are not added to source control.
5. Create your initial configuration file
Data API builder (DAB) requires a JSON configuration file. Use dab --help for syntax options.
dab init
--database-type mssql
--connection-string "@env('my-connection-string')"
--host-mode development
[!NOTE] Including
--host-mode developmentenables Swagger for REST and Nitro for GraphQL.
Resulting configuration
The file dab-config.json is automatically created through this process. These are the resulting contents:
{
"$schema": "https://github.com/Azure/data-api-builder/releases/download/v1.5.56/dab.draft.schema.json",
"data-source": {
"database-type": "mssql",
"connection-string": "@env('my-connection-string')",
"options": {
"set-session-context": false
}
},
"runtime": {
"rest": {
"enabled": true,
"path": "/api",
"request-body-strict": true
},
"graphql": {
"enabled": true,
"path": "/graphql",
"allow-introspection": true
},
"host": {
"cors": {
"origins": [],
"allow-credentials": false
},
"authentication": {
"provider": "AppService"
},
"mode": "development"
}
},
"entities": { }
}
6. Add your table to the configuration
dab add Todo
--source "dbo.Todo"
--permissions "anonymous:*"
[!NOTE] DAB supports tables, views, and stored procedures. When the type is not specified, the default is
table.
Resulting configuration
The entities section of the configuration is no longer empty:
{
"entities": {
"Todo": {
"source": {
"object": "dbo.Todo",
"type": "table"
},
"graphql": {
"enabled": true,
"type": {
"singular": "Todo",
"plural": "Todos"
}
},
"rest": {
"enabled": true
},
"permissions": [
{
"role": "anonymous",
"actions": [
{
"action": "*"
}
]
}
]
}
}
}
7. Run Data API builder
In production, DAB runs in a container. In development, it’s locally self-hosted.
dab start
[!IMPORTANT] The DAB CLI assumes your configuration file is called
dab-config.jsonand is in the local folder.
8. Access your data!
By default, DAB enables both REST and GraphQL.
GET http://localhost:5000/api/Todo
[!NOTE] Change the URL to match your port if it is different.
Other things you should try
- DAB’s Health endpoint:
http://localhost:5000/health - DAB’s Swagger UI:
http://localhost:5000/swagger - DAB’s Nitro UI:
http://localhost:5000/graphql
How does it work?
DAB dynamically creates endpoints and translates requests to SQL, returning JSON.
sequenceDiagram
actor Client as Client
participant Endpoint as Endpoint
participant QueryBuilder as QueryBuilder
participant DB as Database
%% Initialization / Warming up section (light grey)
rect rgba(120,120,120,0.10)
Endpoint -->>+ Endpoint: Read Config
Endpoint ->> DB: Query Metadata
DB -->> Endpoint: Metadata Response
Endpoint ->>- Endpoint: Start Engine
end
%% Request/Response section (very light purple)
rect rgba(180,150,255,0.11)
Client ->>+ Endpoint: HTTP Request
Endpoint ->> Endpoint: Authorize
Endpoint ->> QueryBuilder: Invoke
QueryBuilder -->> Endpoint: SQL Query
Endpoint ->> DB: Submit Query
DB -->> Endpoint: Data Response
Endpoint -->>- Client: HTTP Response
end
Additional resources
References
How to contribute
To contribute, see these documents:
Third-party component notice
Nitro (formerly Banana Cake Pop by ChilliCream, Inc.) may optionally store work in its cloud service via your ChilliCream account. Microsoft is not affiliated with or endorsing this service. Use at your discretion.
Trademarks
This project may use trademarks or logos. Use of Microsoft trademarks must follow Microsoft’s Trademark & Brand Guidelines. Use of third-party marks is subject to their policies.
Files in the repo
- .aspire
- .config
- .devcontainer
- .github
- .pipelines
- config-generators
- docker
- docs
- external_licenses
- nuget
- samples
- schemas
- scripts
- src
- templates
- .gitattributes
- .gitignore
- CODE_OF_CONDUCT.md
- CODEOWNERS
- CONTRIBUTING.md
- Dockerfile
- global.json
- LICENSE.txt
- Nuget.config
- README.md
- SECURITY.md
- SUPPORT.md
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More connectors
High-performance code intelligence MCP server. Indexes codebases into a persistent knowledge graph — average repo in milliseconds. 158 languages, sub-ms queries, 99% fewer tokens. Single static binary, zero dependencies.

Universal provider proxy for OpenAI Codex & Claude Code — use any LLM (Claude, Gemini, Grok, DeepSeek, Ollama…) with Codex CLI, App, SDK, and Claude Code
Git-native persistent memory for AI coding agents. Implements Google OKF v0.2 with sub-300µs in-memory BM25 search, embedded MCP server, and progressive disclosure. Slashes token bloat by 80% with zero external databases or dependencies. Built in pure Go.
Local-first code intelligence graph for MCP and CLI. Builds a persistent map of your codebase so AI coding tools read only what matters, with benchmarked context reductions on reviews and large-repo workflows.
Stop your AI from making things up — it proposes, deterministic tools decide, every claim checked against ground truth with evidence. Grounded facts and context survive resets. Reverse engineering is the proving ground. MCP server + CLI.