使用说明
SQL MCP服务器--测试项目
测试项目 数据API生成器(DAB)SQL MCP服务器 带着一个 Azure AI Foundry 代理人。
建筑
Azure AI Foundry Agent (GPT-4o)
↓ MCP protocol
SQL MCP Server (DAB v1.7)
↓ T-SQL (deterministic)
Azure SQL Database (OrdersDB)
数据库模式
| 表 | 描述 | 行 |
|---|---|---|
dbo.Categories |
产品类别(电子、书籍、服装) | 3 |
dbo.Products |
与类别关联的带价格的产品 | 10 |
dbo.Customers |
注册客户 | 5 |
dbo.Orders |
订单状态和总计 | 8 |
dbo.OrderItems |
将订单链接到产品的行项目 | 20 |
关系
- 类别1:M产品
- 客户1:M订单
- 订单1:M订单项目
- 产品1:M订单项目
先决条件
- .NET 8 SDK
- Azure命令行界面 (
az login已完成) - Python 3.10+
- 部署GPT-4o的Azure AI Foundry项目
快速开始
1.安装DAB命令行界面
dotnet tool install --global Microsoft.DataApiBuilder --prerelease
dab --version # should be >= 1.7.x-rc
2.在本地运行DAB
dab start --verbose
这将开始:
- 表征状态转移:
http://localhost:5000/api/{entity} - 图查询语言:
http://localhost:5000/graphql - 主控程序:
http://localhost:5000/mcp
3.测试REST端点
curl http://localhost:5000/api/Product
4.配置Python代理
cp .env.template .env
# Edit .env with your Azure AI Foundry project details
5.运行测试代理
pip install -r requirements.txt
python test_agent.py
部署到Azure容器应用程序
自动化脚本在 scripts/ 创建完整的Azure环境。
先决条件
- Azure命令行界面 已登录(
az login) - Python 3.10+
pyodbc已安装(用于数据库种子设定) - SQL Server的ODBC驱动程序17
步骤1——创建Azure资源
创建资源组、Azure SQL Server(仅限Azure AD身份验证)、数据库和防火墙规则。
scripts/01-create-azure-resources.sh
步骤2——为数据库添加种子
跑动 sql/setup.sql 创建表并插入示例数据。启用查询存储。
scripts/02-seed-database.sh
步骤3——将DAB部署到容器应用程序
在ACR中构建Docker镜像并部署到Azure容器应用程序。
scripts/03-deploy-container-app.sh
部署后,更新 .env 其中MCP URL由脚本打印。
步骤4——创建AI Foundry项目并部署模型
创建Azure AI Foundry中心、项目并部署GPT-4o。
scripts/04-create-foundry-project.sh
创建后,更新 .env 随着 PROJECT_ENDPOINT 和 MODEL_DEPLOYMENT_NAME 按脚本打印。
步骤5——部署Streamlit查询跟踪器
构建查询跟踪器UI并将其部署到Azure容器应用程序。
scripts/05-deploy-streamlit.sh
部署后,授予对容器的托管标识(脚本打印的T-SQL)的SQL读取权限。
定制
用环境变量覆盖默认值:
RESOURCE_GROUP=my-rg \
LOCATION=westeurope \
SQL_SERVER_NAME=my-sql-server \
scripts/01-create-azure-resources.sh
拆除
删除所有Azure资源:
scripts/99-teardown.sh
DAB配置
这 dab-config.json 文件控制一切:
- 数据库连接:具有Azure AD身份验证的Azure SQL
- 实体:5个具有语义描述的实体,用于AI代理理解
- 关系:跨实体导航(例如,订单→ 客户)
- 主控程序:启用于
/mcp所有DML工具都处于活动状态 - 权限:
anonymous:*用于测试(限制生产)
MCP工具可用
SQL MCP Server公开了6个DML工具:
| 工具 | 说明 |
|---|---|
describe_entities |
列出可用实体及其字段 |
create_record |
插入新记录 |
read_records |
使用过滤器、分页、排序读取记录 |
update_record |
更新现有记录 |
delete_record |
删除记录 |
execute_entity |
执行存储过程 |
关键设计:NL2DAB(非NL2SQL)
代理人 从不生成原始SQL相反,它调用结构化MCP工具→ DAB的查询生成器在内部生成确定性T-SQL。这消除了人工智能生成SQL的风险。
查询跟踪器UI
基于Streamlit的UI,用于可视化AI代理调用MCP工具时DAB生成的SQL查询。
特性
- 实时SQL跟踪 通过Azure SQL查询存储
- 查询分类 --将每个SQL语句映射回可能的MCP工具(
read_records,create_record等等) - 性能指标 --持续时间、CPU、IO读取、每次查询的行数
- 时间线图 --查询持续时间随时间变化的可视化条形图
- 内置代理启动器 --奔跑
test_agent.py直接从UI - 过滤器 --按查询类型(SELECT/INSERT/UPDATE/DELETE)、表、时间窗口
运行跟踪器
streamlit run query_tracer.py
已创建Azure资源
| 资源 | 名称 |
|---|---|
| 资源组 | rg-sql-mcp |
| Azure SQL Server | sql-mcp-pietrobr.database.windows.net |
| 数据库 | OrdersDB |
| 仅限Azure AD身份验证(无SQL身份验证) |
清理
scripts/99-teardown.sh
# or manually:
az group delete --name rg-sql-mcp --yes --no-wait