项目简介
本项目 ('MssqlMcp' 子目录) 是一个示例性的 Model Context Protocol (MCP) 服务器实现,专门用于暴露对 Microsoft SQL Server (MSSQL) 数据库的操作作为MCP工具。LLM(大语言模型)客户端可以通过标准化的MCP协议连接到此服务器,并调用这些工具来执行数据库查询、修改等操作,从而将数据库能力融入LLM应用中。
主要功能点
该服务器实现了以下主要功能,作为可供LLM调用的工具:
- 列出表格 (List Tables): 获取数据库中所有用户表的列表。
- 描述表格 (Describe Table): 获取指定表格的详细架构信息,包括列、索引和约束等。
- 创建表格 (Create Table): 执行SQL 'CREATE TABLE' 语句以创建新表格。
- 删除表格 (Drop Table): 执行SQL 'DROP TABLE' 语句以删除表格。
- 读取数据 (Read Data): 执行SQL 'SELECT' 查询以读取表格中的数据。
- 插入数据 (Insert Data): 执行SQL 'INSERT' 语句以向表格插入数据。
- **更新数据 (Update Data): 法执行SQL 'UPDATE' 语句以更新表格中的数据。
这些工具允许LLM通过生成相应的SQL语句并调用服务器提供的工具来与数据库进行交互。
安装步骤
- 安装 .NET SDK: 确保您的系统安装了 .NET SDK (例如 .NET 6 或更高版本)。
- 安装 MSSQL 数据库: 需要一个可用的 Microsoft SQL Server 实例。您可以安装本地版本或使用 Azure SQL Database。
- 克隆仓库: 克隆 'Azure-Samples/SQL-AI-samples' 仓库到本地。
git clone https://github.com/Azure-Samples/SQL-AI-samples.git cd SQL-AI-samples - 进入 MCP 服务器目录: 切换到 'MssqlMcp' 项目目录。
cd MssqlMcp - 构建项目: 使用 .NET CLI 构建项目。
构建成功后,可在 'bin/Debug/netX.0/' (其中 X.0 是您使用的 .NET 版本) 目录下找到可执行文件或 DLL 文件。dotnet build
服务器配置 (供 MCP 客户端使用)
MCP 客户端需要配置如何启动此服务器进程并与其建立连接。以下是客户端可能需要的配置信息结构说明:
- 'serverName' (字符串): 服务器的标识名称,例如 "MSSQL MCP Server"。
- 'command' (字符串): 启动服务器进程的命令。通常是 'dotnet' 或构建后的可执行文件的完整路径。
- 'args' (字符串数组): 传递给命令的参数。如果 'command' 是 'dotnet',则参数通常包括 'run' 和 '--project MssqlMcp.csproj',或者构建后的 DLL 文件路径。
- 'env' (对象): 一个包含环境变量的键值对对象。必须在此处设置数据库连接字符串,例如:
- 'CONNECTION_STRING' (字符串): 您的 MSSQL 数据库连接字符串。例如:'Server=your_server;Database=your_db;User ID=your_user;Password=your_password;...' 或 'Server=.;Database=test;Trusted_Connection=True;TrustServerCertificate=True' (用于本地SQL Server Windows身份验证)。
- 'transport' (字符串): 服务器使用的传输协议。此项目配置为使用标准输入输出 ('stdio')。
注意: 您需要根据您的实际环境(例如,构建后可执行文件的位置、数据库连接详细信息)填充这些配置值。
基本使用方法
- 配置数据库连接: 在启动服务器进程的环境中(例如,通过MCP客户端的'env'配置),设置名为 'CONNECTION_STRING' 的环境变量,其值为您的 MSSQL 数据库连接字符串。
- 启动服务器: 使用配置好的 'command' 和 'args' 从您的 MCP 客户端启动 'MssqlMcp' 进程。
- 建立连接: MCP 客户端将通过 'stdio' 协议与启动的服务器进程建立连接。
- 调用工具: 连接成功后,MCP 客户端可以向服务器发送 JSON-RPC 请求,调用服务器暴露的工具(例如 'listTables', 'readData', 'describeTable' 等),并传递必要的参数(如SQL语句或表名)。服务器将执行相应的数据库操作并将结果通过JSON-RPC响应返回给客户端。
信息
分类
数据库与文件