From b07bfc64ce3a6c42be62c9346b04421aa7d016f8 Mon Sep 17 00:00:00 2001
From: RubenCerna2079 <32799214+RubenCerna2079@users.noreply.github.com>
Date: Wed, 29 Apr 2026 16:46:35 -0700
Subject: [PATCH 1/5] Add Core NuGet package authoring requirements (#3474)
## Why make this change?
- Resolves issue #3469
## What is this change?
- `Cli.csproj`: Changes package description and tags to include new MCP
endpoint.
- `Core.csproj`: Adds authoring requirements based on the following link
https://devdiv.visualstudio.com/DevDiv/_wiki/wikis/DevDiv.wiki/11557/Publish-as-Microsoft?anchor=publishing-microsoft-packages-on-nuget.org
## How was this tested?
- [ ] Integration Tests
- [ ] Unit Tests
No tests are necessary for this change
## Sample Request(s)
N/A
---
nuget/nuget_core/README.md | 47 +++++++++++++++++++++++
src/Cli/Cli.csproj | 4 +-
src/Core/Azure.DataApiBuilder.Core.csproj | 21 ++++++++++
3 files changed, 70 insertions(+), 2 deletions(-)
create mode 100644 nuget/nuget_core/README.md
diff --git a/nuget/nuget_core/README.md b/nuget/nuget_core/README.md
new file mode 100644
index 0000000000..9872c693a5
--- /dev/null
+++ b/nuget/nuget_core/README.md
@@ -0,0 +1,47 @@
+# Data API builder Core Library for Azure Databases
+
+[](https://opensource.org/licenses/MIT)
+
+## About
+
+**Microsoft.DataApiBuilder.Core** is the core engine library for [Data API builder](https://learn.microsoft.com/azure/data-api-builder/) (DAB). It provides the runtime components needed to generate and execute secure REST, GraphQL endpoints and MCP tools backed by Azure SQL and other databases.
+
+This package is intended for developers who want to embed or extend the Data API builder engine within their own .NET applications or services.
+
+## Supported Databases
+
+- Azure SQL / SQL Server
+- Azure SQL Data Warehouse
+- Azure Cosmos DB (NoSQL)
+- PostgreSQL
+- MySQL
+
+## Key Capabilities
+
+- **REST API engine** � Automatically generates CRUD endpoints (POST, GET, PUT, PATCH, DELETE) with filtering, sorting, and pagination
+- **GraphQL engine** � Generates queries and mutations with filtering, sorting, pagination, and relationship navigation
+- **MCP tool support** � Exposes DML and custom MCP tools for building SQL MCP Servers
+- **Authentication** � OAuth2/JWT and EasyAuth (Azure App Service / Static Web Apps)
+- **Authorization** � Role-based access control with item-level security via policy expressions
+- **Configuration-driven** � Define entities, permissions, and relationships in a JSON config file; no code required
+- **Multi-database** � Connect to multiple database types from a single instance
+- **Caching** � Built-in response caching with [FusionCache](https://github.com/ZiggyCreatures/FusionCache)
+
+## Installation
+
+```bash
+dotnet add package Microsoft.DataApiBuilder.Core
+```
+
+## Usage
+
+This library provides the core services and middleware used by the Data API builder runtime. Register the DAB services in your application's dependency injection container and configure them using a [DAB configuration file](https://learn.microsoft.com/azure/data-api-builder/reference-configuration).
+
+For a complete, ready-to-run experience, consider using the [`Microsoft.DataApiBuilder`](https://www.nuget.org/packages/Microsoft.DataApiBuilder) NuGet package or the [DAB CLI](https://learn.microsoft.com/azure/data-api-builder/how-to-install-cli).
+
+## Resources
+
+- [Official Documentation](https://learn.microsoft.com/azure/data-api-builder/)
+- [GitHub Repository](https://github.com/Azure/data-api-builder)
+- [Samples](https://aka.ms/dab/samples)
+- [Known Issues](https://learn.microsoft.com/azure/data-api-builder/known-issues)
diff --git a/src/Cli/Cli.csproj b/src/Cli/Cli.csproj
index 2f26b932ef..60c405e6a9 100644
--- a/src/Cli/Cli.csproj
+++ b/src/Cli/Cli.csproj
@@ -18,9 +18,9 @@
LICENSE.txt
git
https://go.microsoft.com/fwlink/?linkid=2224253
- microsoft rest graphql api azure sql mssql mysql pgsql postgresql azure-sql sqlserver nosql cosmosdb dataApiBuilder
+ microsoft rest graphql mcp api azure sql mssql mysql pgsql postgresql azure-sql sqlserver nosql cosmosdb dataApiBuilder
Microsoft.DataApiBuilder
- Data API builder for Azure Databases provides modern REST and GraphQL endpoints to your Azure Databases.
+ Data API builder for Azure Databases provides modern REST, GraphQL endpoints and MCP tools to your Azure Databases.
nuget_icon.png
README.md
true
diff --git a/src/Core/Azure.DataApiBuilder.Core.csproj b/src/Core/Azure.DataApiBuilder.Core.csproj
index 2359f21a2e..32a633d1bb 100644
--- a/src/Core/Azure.DataApiBuilder.Core.csproj
+++ b/src/Core/Azure.DataApiBuilder.Core.csproj
@@ -4,7 +4,21 @@
net8.0
enable
enable
+ ./nupkg
+ Microsoft.DataApiBuilder.Core
+
Microsoft.DataApiBuilder.Core
+ Microsoft
+ © Microsoft Corporation. All rights reserved.
+ LICENSE.txt
+ git
+ https://go.microsoft.com/fwlink/?linkid=2224253
+ microsoft rest graphql mcp api azure sql mssql mysql pgsql postgresql azure-sql sqlserver nosql cosmosdb dataApiBuilder
+ Microsoft.DataApiBuilder.Core
+ Data API builder Core library for Azure Databases provides modern REST, GraphQL endpoints and MCP tools to your Azure Databases.
+ nuget_icon.png
+ README.md
true
+ true
NU1603
@@ -45,4 +59,11 @@
+
+
+
+
+
+
+
From 2a7654bd050f4a6ee079ce792a9f4567ed5ce022 Mon Sep 17 00:00:00 2001
From: Copilot <198982749+Copilot@users.noreply.github.com>
Date: Thu, 7 May 2026 15:56:39 +0000
Subject: [PATCH 2/5] docs: Update nuget/README.md with MCP endpoint and
comprehensive content (#3475)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
## Why make this change?
`nuget/README.md` (the README shown on the NuGet package page) was
minimal and stale — it described only REST and GraphQL, omitted the MCP
endpoint entirely and other content present in the root `README.md`.
## What is this change?
Rewrote `nuget/README.md` to match the quality and completeness of the
root `README.md`, adapted for the NuGet context:
- **Badges** — docs link, license
- **About** — updated to cover REST, GraphQL, and MCP endpoints
- **Features** — added MCP section: DML tools, custom tools via stored
procedures, configurable path (`/mcp` default), AI client compatibility
(GitHub Copilot, Azure AI Foundry)
- **Resources** — aligned with root README; links use absolute GitHub
URLs
## How was this tested?
- [ ] Integration Tests
- [ ] Unit Tests
Documentation-only change; no code logic modified.
## Sample Request(s)
N/A
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: RubenCerna2079 <32799214+RubenCerna2079@users.noreply.github.com>
Co-authored-by: Ruben Cerna
Co-authored-by: Aniruddh Munde
---
nuget/README.md | 31 +++++++++++++++++++++++++++----
1 file changed, 27 insertions(+), 4 deletions(-)
diff --git a/nuget/README.md b/nuget/README.md
index 0aebccd2c5..cb2bab37d2 100644
--- a/nuget/README.md
+++ b/nuget/README.md
@@ -1,18 +1,21 @@
# Data API builder for Azure Databases
[](https://opensource.org/licenses/MIT)
+[](https://learn.microsoft.com/azure/data-api-builder/)
+
+[What's new?](https://learn.microsoft.com/azure/data-api-builder/whats-new)
## About
-**Data API builder for Azure Databases provides modern REST and GraphQL endpoints to your Azure Databases.**
+**Data API builder for Azure Databases provides modern REST and GraphQL endpoints and MCP tools to your Azure Databases.**
-With data API builder, database objects can be exposed via REST or GraphQL endpoints so that your data can be accessed using modern techniques on any platform, any language, and any device. With an integrated and flexible policy engine, native support for common behavior like pagination, filtering, projection and sorting, the creation of CRUD backend services can be done in minutes instead of hours or days, giving developers an efficiency boost like never seen before.
+With data API builder, database objects can be exposed via REST or GraphQL endpoints as well as MCP tools so that your data can be accessed using modern techniques on any platform, any language, and any device. With an integrated and flexible policy engine, native support for common behavior like pagination, filtering, projection and sorting, the creation of CRUD backend services and MCP tools can be done in minutes instead of hours or days, giving developers an efficiency boost like never seen before.
-Data API builder is Open Source and works on any platform. It can be executed on-premises, in a container or as a Managed Service in Azure, via the new [Database Connection](https://learn.microsoft.com/azure/static-web-apps/database-overview) feature available in Azure Static Web Apps.
+Data API builder is Open Source and works on any platform. It can be executed on-premises, in a container or as a Managed Service in Azure, via the [Database Connection](https://learn.microsoft.com/azure/static-web-apps/database-overview) feature available in Azure Static Web Apps.
## Features
-- Allow collections, tables, views and stored procedures to be accessed via REST and GraphQL
+- Allow collections, tables, views and stored procedures to be accessed via REST, GraphQL, and MCP
- Support authentication via OAuth2/JWT
- Support for EasyAuth when running in Azure
- Role-based authorization using received claims
@@ -24,6 +27,26 @@ Data API builder is Open Source and works on any platform. It can be executed on
- Queries and mutations
- Filtering, sorting and pagination
- Relationship navigation
+- MCP (Model Context Protocol)
+ - Exposes database tables, views, and stored procedures through MCP tools
+ - Compatible with any MCP-enabled AI client (e.g., GitHub Copilot, Azure AI Foundry)
+ - DML tools for create, read, update, and delete operations
+ - Custom tools via stored procedures
- Easy development via dedicated CLI
- Full integration with Static Web Apps via Database Connection feature when running in Azure
- Open Source
+
+## Getting started
+
+Use the [Getting Started](https://learn.microsoft.com/azure/data-api-builder/get-started/get-started-with-data-api-builder) tutorial to quickly explore the core tools and concepts.
+
+#### Other endpoints to explore
+
+- DAB's Health endpoint: `http://localhost:5000/health`
+- DAB's Swagger UI: `http://localhost:5000/api/openapi`
+
+## Additional resources
+
+- [Online Documentation](https://learn.microsoft.com/en-us/azure/data-api-builder/overview)
+- [Official Samples](https://github.com/Azure-samples/data-api-builder)
+- [Known Issues](https://learn.microsoft.com/azure/data-api-builder/known-issues)
\ No newline at end of file
From 09f13732536cd0c10700f5bc77ee709ac872fea6 Mon Sep 17 00:00:00 2001
From: RubenCerna2079 <32799214+RubenCerna2079@users.noreply.github.com>
Date: Tue, 19 May 2026 14:20:15 -0700
Subject: [PATCH 3/5] Create Nuget Core Package Changes (#3550)
## Why make this change?
- Solves issue #3479
## What is this change?
- Changes `Cli.proj` and `Core.proj` files to retrieve their unique
NOTICE files from their respective new path.
- Changes `notice-generation.ps1` script to use the NOTICE file path
from the pipeline as an argument instead of having it hard coded.
- Changes `create-manifest-file.ps1` script to add the new nuget Core
package that will be created in the pipeline.
## How was this tested?
This is tested alongside the changes from the
[pipeline](https://msdata.visualstudio.com/CosmosDB/_git/data-api-builder/pullrequest/2097650)
## Sample Request(s)
N/A
---------
Co-authored-by: Aniruddh Munde
---
scripts/create-manifest-file.ps1 | 24 ++++++++++++++++-------
scripts/notice-generation.ps1 | 4 +---
src/Cli/Cli.csproj | 2 +-
src/Core/Azure.DataApiBuilder.Core.csproj | 2 +-
4 files changed, 20 insertions(+), 12 deletions(-)
diff --git a/scripts/create-manifest-file.ps1 b/scripts/create-manifest-file.ps1
index bb32d18cf2..85e1579ba4 100644
--- a/scripts/create-manifest-file.ps1
+++ b/scripts/create-manifest-file.ps1
@@ -40,11 +40,17 @@ foreach ($targetFramework in $dotnetTargetFrameworks)
}
# Generating hash for nuget
-$nugetFileName = "Microsoft.DataApiBuilder.$DabVersion.nupkg"
-$nugetFilePath = "$BuildOutputDir/nupkg/$nugetFileName"
-$fileHashInfo = Get-FileHash $nugetFilePath
-$nuget_file_hash = $fileHashInfo.Hash
-$download_url_nuget = "https://github.com/Azure/data-api-builder/releases/download/$versionTag/$nugetFileName"
+$nugetCliFileName = "Microsoft.DataApiBuilder.$DabVersion.nupkg"
+$nugetCliFilePath = "$BuildOutputDir/nupkg/$nugetCliFileName"
+$fileCliHashInfo = Get-FileHash $nugetCliFilePath
+$nuget_cli_file_hash = $fileCliHashInfo.Hash
+$download_url_nuget_cli = "https://github.com/Azure/data-api-builder/releases/download/$versionTag/$nugetCliFileName"
+
+$nugetCoreFileName = "Microsoft.DataApiBuilder.Core.$DabVersion.nupkg"
+$nugetCoreFilePath = "$BuildOutputDir/nupkg/$nugetCoreFileName"
+$fileCoreHashInfo = Get-FileHash $nugetCoreFilePath
+$nuget_core_file_hash = $fileCoreHashInfo.Hash
+$download_url_nuget_core = "https://github.com/Azure/data-api-builder/releases/download/$versionTag/$nugetCoreFileName"
# Creating new block to insert latest version
# String substitution requires hashtable to be wrapped in $( $hashtable['key'] ) to avoid parsing issues.
@@ -68,8 +74,12 @@ $latestBlock = @'
"sha": "$($frameworkPlatformFileHashMetadata["net8.0_osx-x64"])"
},
"nuget": {
- "url": "${download_url_nuget}",
- "sha": "${nuget_file_hash}"
+ "url": "${download_url_nuget_cli}",
+ "sha": "${nuget_cli_file_hash}"
+ },
+ "nuget-core": {
+ "url": "${download_url_nuget_core}",
+ "sha": "${nuget_core_file_hash}"
}
}
}
diff --git a/scripts/notice-generation.ps1 b/scripts/notice-generation.ps1
index bc67f6e72e..d97f0edf8a 100644
--- a/scripts/notice-generation.ps1
+++ b/scripts/notice-generation.ps1
@@ -2,6 +2,7 @@
# Licensed under the MIT License.
param (
+ [Parameter (Mandatory=$true)][string] $noticeFilePath,
[Parameter (Mandatory=$true)][string] $BuildArtifactStagingDir,
[Parameter (Mandatory=$true)][string] $BuildSourcesDir
)
@@ -17,9 +18,6 @@ Invoke-WebRequest $chiliCreamLicenseMetadataURL -UseBasicParsing |
$sqlClientSNILicenseFilePath = "$BuildSourcesDir/external_licenses/Microsoft.Data.SqlClient.SNI.5.2.0.License.txt"
$sqlClientSNILicense = Get-Content -Path $sqlClientSNILicenseFilePath -Raw
-# Path of notice file generated in CI/CD pipeline.
-$noticeFilePath = "$BuildSourcesDir/NOTICE.txt"
-
# Replace erroneous copyright, using [System.IO.File] for better performance than Get-Content and Set-Content
$content = [System.IO.File]::ReadAllText($noticeFilePath).Replace("(c) Microsoft 2023`r`n", "")
$content = [System.IO.File]::ReadAllText($noticeFilePath).Replace("(c) Microsoft 2024`r`n", "")
diff --git a/src/Cli/Cli.csproj b/src/Cli/Cli.csproj
index 60c405e6a9..3cacab6b4b 100644
--- a/src/Cli/Cli.csproj
+++ b/src/Cli/Cli.csproj
@@ -55,7 +55,7 @@
-
+
diff --git a/src/Core/Azure.DataApiBuilder.Core.csproj b/src/Core/Azure.DataApiBuilder.Core.csproj
index 32a633d1bb..756e45f984 100644
--- a/src/Core/Azure.DataApiBuilder.Core.csproj
+++ b/src/Core/Azure.DataApiBuilder.Core.csproj
@@ -63,7 +63,7 @@
-
+
From 2c0171eefbfe82fb3fbecd2cb00b26e9fbf15b08 Mon Sep 17 00:00:00 2001
From: RubenCerna2079 <32799214+RubenCerna2079@users.noreply.github.com>
Date: Tue, 19 May 2026 15:23:59 -0700
Subject: [PATCH 4/5] Fix bug for replacement of strings
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
---
scripts/notice-generation.ps1 | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/scripts/notice-generation.ps1 b/scripts/notice-generation.ps1
index d97f0edf8a..6a0dd8f504 100644
--- a/scripts/notice-generation.ps1
+++ b/scripts/notice-generation.ps1
@@ -19,8 +19,9 @@ $sqlClientSNILicenseFilePath = "$BuildSourcesDir/external_licenses/Microsoft.Dat
$sqlClientSNILicense = Get-Content -Path $sqlClientSNILicenseFilePath -Raw
# Replace erroneous copyright, using [System.IO.File] for better performance than Get-Content and Set-Content
-$content = [System.IO.File]::ReadAllText($noticeFilePath).Replace("(c) Microsoft 2023`r`n", "")
-$content = [System.IO.File]::ReadAllText($noticeFilePath).Replace("(c) Microsoft 2024`r`n", "")
+$content = [System.IO.File]::ReadAllText($noticeFilePath).
+ Replace("(c) Microsoft 2023`r`n", "").
+ Replace("(c) Microsoft 2024`r`n", "")
# Prepare license content for writing to file.
$sqlClientSNIComponentName = "`r`nMICROSOFT.DATA.SQLCLIENT.SNI`r`n`r`n"
From d38441c6f017976126def162d941a5a53cb9e26e Mon Sep 17 00:00:00 2001
From: Ruben Cerna
Date: Wed, 20 May 2026 11:48:06 -0700
Subject: [PATCH 5/5] Revert change for notice generation file
---
scripts/notice-generation.ps1 | 5 ++---
1 file changed, 2 insertions(+), 3 deletions(-)
diff --git a/scripts/notice-generation.ps1 b/scripts/notice-generation.ps1
index 6a0dd8f504..d97f0edf8a 100644
--- a/scripts/notice-generation.ps1
+++ b/scripts/notice-generation.ps1
@@ -19,9 +19,8 @@ $sqlClientSNILicenseFilePath = "$BuildSourcesDir/external_licenses/Microsoft.Dat
$sqlClientSNILicense = Get-Content -Path $sqlClientSNILicenseFilePath -Raw
# Replace erroneous copyright, using [System.IO.File] for better performance than Get-Content and Set-Content
-$content = [System.IO.File]::ReadAllText($noticeFilePath).
- Replace("(c) Microsoft 2023`r`n", "").
- Replace("(c) Microsoft 2024`r`n", "")
+$content = [System.IO.File]::ReadAllText($noticeFilePath).Replace("(c) Microsoft 2023`r`n", "")
+$content = [System.IO.File]::ReadAllText($noticeFilePath).Replace("(c) Microsoft 2024`r`n", "")
# Prepare license content for writing to file.
$sqlClientSNIComponentName = "`r`nMICROSOFT.DATA.SQLCLIENT.SNI`r`n`r`n"