本项目是一个实现了Model Context Protocol (MCP) 的后端服务,专门用于与 Microsoft SQL Server 数据库进行交互。通过这个服务器,支持MCP协议的大型语言模型(LLM)客户端可以安全、结构化地访问数据库,执行查询并获取数据库的元数据(Schema)。

主要功能点

  • 数据库查询: 允许LLM执行SQL查询并获取结果集。支持指定查询超时时间和返回的最大行数。
  • Schema信息查询: 允许LLM获取数据库的结构信息,包括:
    • 列出所有表、视图、存储过程。
    • 获取特定表的详细Schema信息(列、主键、外键等)。
    • 获取特定视图的列和定义。
    • 获取特定存储过程的参数和定义。

安装步骤

本项目是一个 .NET 工具,可以通过 .NET CLI 安装。

  1. 安装 .NET 8.0 SDK 或更高版本。
  2. 安装为全局 .NET 工具 (推荐):
    dotnet tool install --global tsql-mcp-server
    更新到最新版本:
    dotnet tool update --global tsql-mcp-server
  3. 从源代码构建 (备选):
    # 克隆仓库
    git clone https://github.com/Popplywop/mssql-mcp-server
    cd mssql-mcp-server
    
    # 构建项目
    dotnet build

服务器配置

MCP客户端(例如 Claude 的MCP集成或其他支持MCP的LLM平台)需要知道如何启动并连接到此服务器。这通常通过在客户端的MCP配置文件中指定服务器的名称、启动命令和参数来完成。

以下是一个典型的MCP客户端配置示例,用于启动 SQL Server MCP 服务器:

{
  "servers": [
    {
      "name": "SqlServerMcp", // 给服务器起一个唯一名称,供LLM调用时使用
      "command": "tsql-mcp-server", // 如果已作为.NET工具安装,直接使用命令名
      "args": [ // 启动服务器时传递的参数
        // 以下二选一,指定数据库连接字符串:
        "--dsn",
        "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;",
        // 或者使用环境变量 (更安全):
        // "--env-var",
        // "SQL_CONNECTION_STRING" // 指定包含连接字符串的环境变量名称
      ]
    }
    // 可以在此处添加其他MCP服务器的配置
  ]
}

请将 'your-server', 'your-database', 'your-username', 'your-password' 替换为您实际的数据库连接信息。如果使用环境变量,请确保在运行MCP客户端的环境中设置了相应的环境变量。

基本使用方法

配置完成后,支持MCP的LLM客户端即可通过标准MCP请求与该服务器交互。LLM可以调用服务器提供的工具或读取资源。

例如,LLM可以通过调用名为 'ExecuteQuery' 的工具来执行SQL查询:

ExecuteQuery:
  query: "SELECT TOP 10 CustomerName, TotalAmount FROM Orders ORDER BY TotalAmount DESC"
  maxRows: 20

LLM也可以通过读取资源URI来获取Schema信息,例如读取特定表的Schema:

ReadResource:
  uri: "sqlserver://schemas/dbo/tables/Customers"

服务器会处理这些请求,与SQL Server交互,并将结果或错误以JSON-RPC响应的形式返回给LLM客户端。

信息

分类

数据库与文件