SQL自然语言查询集成

通过Azure OpenAI和SQL MCP服务器架构实现自然语言查询SQL数据库的智能接口解决方案。

  • by bhushang19
  • JavaScript
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 bhushang19/openai-sql-agent

使用说明

SQL MCP与Azure OpenAI的集成

概述

该项目演示了如何使用模型上下文协议(MCP)服务器架构将Azure SQL数据库与Azure OpenAI集成。该解决方案允许通过AI代理对SQL数据库进行自然语言查询,为数据库操作提供智能界面。

建筑

该项目遵循使用模型上下文协议(MCP)的客户端-服务器架构:

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Azure OpenAI  │    │   Python Agent   │    │   SQL MCP       │
│   (GPT-4/GPT-3.5│◄──►│   (Client)       │◄──►│   Server        │
│   -turbo)       │    │                  │    │   (Node.js)     │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                                       │
                                                       ▼
                                              ┌─────────────────┐
                                              │   Azure SQL     │
                                              │   Database      │
                                              └─────────────────┘

组件

  1. Azure OpenAI服务:为自然语言处理提供AI模型(GPT-4或GPT-3.5-turbo)
  2. Python代理:充当MCP客户端,协调AI和SQL服务器之间的通信
  3. SQL MCP服务器:基于Node.js的MCP服务器,处理SQL数据库操作
  4. Azure SQL数据库:查询和操作的目标数据库

特性

  • 自然语言查询:将纯英语转换为SQL查询
  • 智能数据库操作:通过AI执行复杂的数据库操作
  • 安全连接:支持使用Azure SQL进行SQL身份验证
  • 只读模式:出于安全考虑,可选择只读访问
  • 连接管理:可配置的超时和证书处理

先决条件

  • Python 3.8+
  • Node.js 16+
  • Azure OpenAI服务帐户
  • Azure SQL数据库
  • 所需的Python包(请参阅 requirements.txt)

⚠️ 重要提示:更新了MCP服务器设置

此存储库包括 更新版本 SQL MCP服务器支持多种身份验证方法。原始的Azure SQL AI示例存储库仅支持Azure AD身份验证,但此增强版本增加了对以下内容的支持:

  • 使用用户名和密码 (用户名/密码)
  • 身份验证 (NTLM)
  • Azure AD身份验证 (原始方法)

安装说明:

  1. 克隆仓库:

    git clone <repository-url>
    cd sql-mcp-integration
    
  2. 安装Python依赖项:

    pip install -r requirements.txt
    
  3. 设置增强型MCP服务器:

    # Clone the original SQL-AI-samples repository
    git clone https://github.com/Azure-Samples/SQL-AI-samples.git repo/SQL-AI-samples
    
    # Navigate to the Node.js MCP server directory
    cd repo/SQL-AI-samples/MssqlMcp/Node
    
    # Install dependencies
    npm install
    
    After the build is successful, locate the index.js file within the newly created dist folder. Copy and save its fully qualified path. you will need in an upcoming step.
    
    
    # ⚠️ CRITICAL: Replace the generated index.js with our updated version
    # Copy the enhanced index.ts from this repository to replace the original
    cp ../../../index.ts src/index.ts
    
    
  4. 验证增强功能: 增强 index.ts 文件包括:

    • 多身份验证支持(SQL、Windows、Azure AD)
    • 更好的错误处理和调试
    • 可配置的连接超时
    • 增强日志记录以进行故障排除
  5. 配置环境变量: 创建一个 .env 根目录中的文件:

    # Azure OpenAI Configuration
    AZURE_OPENAI_API_KEY=your_azure_openai_api_key
    AZURE_OPENAI_ENDPOINT=your_azure_openai_endpoint
    AZURE_OPENAI_CHAT_DEPLOYMENT=your_deployment_name
    AZURE_OPENAI_CHAT_DEPLOYMENT_MODEL=gpt-4
    AZURE_OPENAI_API_VERSION=2024-02-15-preview
    
    # SQL Database Configuration
    SERVER_NAME=your_sql_server.database.windows.net
    DATABASE_NAME=your_database_name
    AUTH_METHOD=sql
    SQL_USERNAME=your_username
    SQL_PASSWORD=your_password
    READONLY=false
    CONNECTION_TIMEOUT=50
    TRUST_SERVER_CERTIFICATE=true
    

用法

基本用法

运行主程序:

python program.py

该计划将:

  1. 连接到SQL MCP服务器
  2. 使用SQL功能初始化AI代理
  3. 执行默认查询:“显示Customer表的前5行”

自定义查询

要运行自定义查询,请修改 user_input 变量in program.py:

user_input = "Find all customers who made purchases in the last 30 days"

系统说明

AI代理使用中定义的系统指令 sql_system_instructions.txt。此文件包含以下指南:

  • 如何解释自然语言查询
  • SQL最佳实践
  • 错误处理
  • 安全注意事项

项目结构

sql-mcp-integration/
├── program.py                      # Main application entry point
├── sql_system_instructions.txt     # AI agent system instructions
├── requirements.txt                # Python dependencies
├── index.ts                        # Enhanced MCP server with multi-auth support
├── .env                           # Environment variables (create this)
├── readme.md                      # This documentation
└── repo/
    └── SQL-AI-samples/            # Original Azure SQL-AI-samples repository
        └── MssqlMcp/
            └── Node/
                ├── dist/
                │   └── index.js   # Compiled SQL MCP server (replace with enhanced version)
                ├── src/           # Source code
                ├── package.json   # Node.js dependencies
                └── tsconfig.json  # TypeScript configuration

配置选项

Azure OpenAI设置

  • AZURE_OPENAI_API_KEY:您的Azure OpenAI API密钥
  • AZURE_OPENAI_ENDPOINT:Azure OpenAI服务端点
  • AZURE_OPENAI_CHAT_DEPLOYMENT:聊天完成的部署名称
  • AZURE_OPENAI_CHAT_DEPLOYMENT_MODEL:型号名称(如gpt-4、gpt-35-turbo)
  • AZURE_OPENAI_API_VERSION:要使用的API版本

SQL数据库设置

  • SERVER_NAME:Azure SQL服务器名称
  • DATABASE_NAME:目标数据库名称
  • AUTH_METHOD:身份验证方法(sql、azure ad等)
  • SQL_USERNAME:数据库用户名
  • SQL_PASSWORD:数据库密码
  • READONLY:设置为“true”以进行只读访问
  • CONNECTION_TIMEOUT:连接超时(秒)
  • TRUST_SERVER_CERTIFICATE:是否信任服务器证书

安全考虑

  1. 环境变量:从不承诺 .env 文件到版本控制
  2. 只读模式:尽可能对生产查询使用只读模式
  3. 连接安全性:确保正确的SSL/TLS配置
  4. API密钥管理:将Azure密钥保险库用于生产中的API密钥存储

故障排除

常见问题

  1. 找不到Node.js:确保Node.js已安装并位于PATH中
  2. 连接超时:检查网络连接和防火墙设置
  3. 身份验证错误:验证SQL凭据和权限
  4. MCP服务器错误:检查Node.js MCP服务器日志

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

相关文件