SQL Server安全查询服务

MsSqlMcpDotNet是一个用于Microsoft SQL Server的模型上下文协议(MCP)服务器,支持AI助手安全生成和执行SQL查询,提供SQL注入防护和只读权限控制。

  • by LLMToolkit
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 llmtoolkit/mssqlmcpdotnet

使用说明

# MsSqlMcpDotNet

Microsoft SQL Server MCP服务器

MsSqlMcpDotNet 是一个 模型上下文协议(MCP)服务器 这使得能够与Microsoft SQL Server数据库进行安全交互。 它允许 AI助手--例如 GitHub复制代理--以受控和安全的方式生成和执行SQL查询。

特性

  • 实现一个 MCP服务器 对于Microsoft SQL Server。

  • SQL注入保护 通过参数化查询。

  • 与GitHub Copilot代理兼容.

  • 检索服务器级元数据:

    • 数据库
  • 检索详细的架构和数据库元数据:

    • 表格
    • 视图
    • 列
    • 密钥(主键/外键)
  • 存储数据库 安全连接字符串 使用 Windows DPAPI (数据保护API)。

  • 完全地 异步数据库操作 使用 async/await.

  • 结构化日志记录 随着 Serilog.

先决条件

SQL Server安全配置

提供了一个SQL脚本来创建专用 安全登录 在SQL Server中,供MCP服务器使用。 MCP登录被授予 最小只读权限 在目标数据库上。

⚠️ 重要: MCP用户被明确限制在数据库或SQL Server实例中写入或修改数据。这确保了MCP服务器能够 仅读取数据 并且不能以任何方式更改数据库。

/* ----------------------------------------------------------------------------------------------
   Use this script to create a login for the MCP user in SQL Server.
   Replace <yourStrongPassword123!> with the desired password for the login.
   ---------------------------------------------------------------------------------------------- */

USE [master]
GO
CREATE LOGIN [mcpUser]  
WITH  
    PASSWORD = N'<yourStrongPassword123!>',  
    DEFAULT_DATABASE = [master],  
    CHECK_EXPIRATION = OFF,  
    CHECK_POLICY = OFF
GO

GRANT CONNECT ANY DATABASE TO [mcpUser]
GO
GRANT CONNECT SQL TO [mcpUser]
GO
GRANT VIEW ANY DATABASE TO [mcpUser]
GO
GRANT VIEW ANY DEFINITION TO [mcpUser]
GO
GRANT VIEW ANY ERROR LOG TO [mcpUser]
GO
GRANT VIEW ANY PERFORMANCE DEFINITION TO [mcpUser]
GO
GRANT VIEW SERVER STATE TO [mcpUser]
GO

-- Read permission in the specific database
USE [<MyDatabase>]
GO
CREATE USER [mcpUser] FOR LOGIN [mcpUser]
GO
ALTER ROLE [db_datareader] ADD MEMBER [mcpUser]
GO

MCP服务器配置

要设置连接字符串并配置MCP服务器,只需运行 MSSqlMcpDotNet.exe. 程序将提示:

  • SQL Server实例名称
  • 可信连接选项
  • 用户凭据(如果需要)

此过程将生成 sqlserver.secured.json 包含以下内容的文件 使用DPAPI加密的连接字符串.

如果您想更改访问凭据,只需删除现有的 sqlserver.secured.json 归档并重复配置过程。

Visual Studio代码配置

编辑您的 App.Settings 文件并在下添加MCP服务器配置 mcp 部分。 在从Visual Studio Code使用服务器之前,请记住启动它。

"mcp": {
    "servers": {
        "MSSqlMcpDotNet": {
            "type": "stdio",
            "command": "C:\\bin\\mcp\\MSSqlMcpDotNet\\MSSqlMcpDotNet.exe",
            "args": []
        }
    }
}

mcp.json

此文件用于 Visual Studio 2022 或在任何 MCP客户端应用程序.

这 mcp.json 文件定义了MCP服务器配置。

{
  "servers": {
    "MSSqlMcpDotNet": {
      "type": "stdio",
      "command": "C:\\bin\\mcp\\MSSqlMcpDotNet\\MSSqlMcpDotNet.exe",
      "args": []
    }
  }
}

许可证

该项目根据 MIT许可证. 请参阅 许可证 文件以获取更多详细信息。