项目简介
该项目是 'Gen-AI-Demo-Assets' 仓库中的一个子模块,专门实现了一个基于 Model Context Protocol (MCP) 的服务器。其核心功能是通过 MCP 协议暴露与 Azure SQL 数据库交互的能力,允许 LLM 客户端发现和调用这些能力,从而实现大型语言模型与数据库的集成。
主要功能点
- 连接 Azure SQL 数据库: 利用 Azure 身份验证(如托管身份或服务主体)安全连接到 Azure SQL 数据库。
- 提供数据库工具: 暴露两个核心工具供 LLM 客户端调用:
- 获取数据库表结构:允许 LLM 了解数据库中的表及其列信息。
- 执行 T-SQL 查询:允许 LLM 生成并执行 SQL 查询,获取数据库中的数据。
- 支持 MCP 协议: 作为 MCP 服务器,它遵循 MCP 标准,通过 JSON-RPC 格式与客户端通信,接收工具调用请求并返回结果。
安装步骤
- 克隆仓库: 首先需要克隆包含该项目的完整仓库:
git clone https://github.com/guangying94/Gen-AI-Demo-Assets.git cd Gen-AI-Demo-Assets/mcp-server/mcp-azure-sql - 设置 Python 环境: 确保您有 Python 环境,建议使用虚拟环境:
python -m venv .venv source .venv/bin/activate # Linux/macOS # 或 .\venv\Scripts\activate # Windows - 安装依赖: 安装项目所需的 Python 库,包括 'fastmcp', 'pyodbc', 'python-dotenv', 'azure-identity' 等:
注意: 安装 'pyodbc' 可能需要先安装相应的 ODBC 驱动程序,请参考 Microsoft 的官方文档。pip install -r requirements.txt # 如果有 requirements.txt 文件,或者手动安装必要的库 # 示例安装命令 (可能需要根据实际依赖调整): # pip install fastmcp pyodbc python-dotenv azure-identity - 配置环境变量: 创建一个 '.env' 文件在项目根目录('mcp-azure-sql/'),并配置 Azure SQL 的连接信息。该服务器使用 Azure 身份验证,因此需要确保运行环境已正确配置 Azure 身份(例如,通过 Azure CLI 登录,或者使用托管身份/服务主体)。
AZURE_SQL_SERVER=<你的Azure SQL服务器名称,不包含tcp:> AZURE_SQL_DATABASE=<你的Azure SQL数据库名称>
服务器配置 (供 MCP 客户端使用)
要让一个 MCP 客户端连接到并使用这个服务器,客户端需要知道如何启动它。配置信息通常通过一个 JSON 对象传递给客户端,包含服务器的名称、启动命令和参数。
对于此 Azure SQL MCP 服务器,典型的客户端配置信息描述如下:
{ "server name": "Azure SQL MCP Server", // 服务器在客户端中显示的名称 "command": "python", // 启动服务器的可执行文件,这里是python解释器 "args": ["main.py"], // 传递给可执行文件的参数,这里是服务器主文件 "transport": "sse" // 服务器使用的传输协议,与 mcp.run() 中指定的一致 }
请注意: 上述是一个配置信息的描述示例,实际传递给 MCP 客户端的可能是包含这些字段的 JSON 对象,无需复制粘贴这里的代码块。客户端将使用 'command' 和 'args' 来启动一个进程,并通过 'transport' 指定的方式与该进程通信。
基本使用方法
- 启动服务器: 在项目目录下激活您的 Python 环境,然后运行 'main.py' 文件:
服务器将启动并监听通过 SSE 协议接收的 MCP 请求。cd mcp-server/mcp-azure-sql source .venv/bin/activate # 或 .\venv\Scripts\activate python main.py - 连接 MCP 客户端: 启动一个支持 MCP 协议的 LLM 客户端(例如,一个支持 MCP 的 VS Code 扩展或其他应用)。配置客户端,使其能够发现或连接到本地运行的 "Azure SQL MCP Server",使用上面提供的启动命令和参数描述。
- LLM 调用工具: 在客户端中,LLM 可以通过调用服务器暴露的工具与 Azure SQL 数据库交互。例如,LLM 可以首先调用 'get_table_schema' 工具来获取数据库结构信息,然后根据用户需求调用 'execute_query' 工具执行 SQL 查询并获取数据。
信息
分类
数据库与文件