SQL Server数据库协议工具

一个基于.NET 10构建的SQL Server MCP服务器,提供通过MCP协议与SQL Server数据库交互的工具。

  • by tehmang
  • C#
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 tehmang/sqlserver-mcp

使用说明

SQL Server MCP服务器

用于SQL server的模型上下文协议(MCP)服务器,使用构建。网10。此服务器提供通过MCP协议与SQL server数据库交互的工具。

✅ 与SQL Server 2005及更高版本兼容

特性

此MCP服务器为SQL server操作提供了以下工具:

  • 怎么翻译 -执行SQL查询并返回结果
  • list_tables -列出数据库中的所有表
  • describe_table -获取详细的表结构信息
  • 列表_数据库 -列出服务器上的所有数据库
  • 列表存储程序 -列出数据库中的所有存储过程
  • list_functions -列出数据库中的所有用户定义函数
  • get_routine_定义 -获取存储过程或函数的源代码
  • execute_nonquery -执行INSERT、UPDATE、DELETE、CREATE命令

先决条件

  • .NET 10 SDK或更高版本
  • SQL Server实例(SQL Server 2005或更高版本)
  • 有效的SQL Server连接字符串

安装

  1. 克隆或下载此存储库
  2. 构建项目:
    dotnet build
    

用法

Visual Studio 2026的配置

此MCP服务器旨在与Visual Studio 2026的MCP集成配合使用。

独立运行服务器

服务器使用stdio传输进行通信:

dotnet run

在Visual Studio 2026中配置

在Visual Studio 2026中,通过以下方式配置MCP服务器:

工具>选项>人工智能>模型上下文协议

使用以下设置添加新的MCP服务器:

  • 名字:SQL Server
  • 类型标准: stdio
  • 命令: dotnet
  • 参数: run --project c:\Dev\sqlserver-mcp\SqlServerMcp.csproj
  • 工作目录: c:\Dev\sqlserver-mcp

或者,您可以发布项目并使用可执行文件:

dotnet publish -c Release -o publish

然后配置:

  • 命令: c:\Dev\sqlserver-mcp\publish\SqlServerMcp.exe
  • 参数:(留空)

SQL Server 2005的连接字符串

对于 SQL Server 2005,使用以下连接字符串格式:

Windows身份验证(建议用于SQL Server 2005):

Data Source=VM-SQLTEST;Database=master;Integrated Security=True;Encrypt=False

或者使用标准格式:

Server=localhost;Database=MyDatabase;Integrated Security=true;Encrypt=false;

SQL Server身份验证:

Data Source=VM-SQLTEST;Database=MyDatabase;User Id=sa;Password=YourPassword;Encrypt=False

具有特定端口的远程服务器:

Server=192.168.1.100,1433;Database=MyDatabase;User Id=myuser;Password=mypass;Encrypt=false;

命名实例:

Server=localhost\SQLEXPRESS;Database=MyDatabase;Integrated Security=true;Encrypt=false;

SQL Server 2008的连接字符串+

对于 现代SQL Server版本,使用:

Windows身份验证:

Server=localhost;Database=MyDatabase;Integrated Security=true;TrustServerCertificate=true;

SQL Server身份验证:

Server=localhost;Database=MyDatabase;User Id=sa;Password=YourPassword;TrustServerCertificate=true;

🔒 安全说明

  • SQL Server 2005:此服务器启用TLS 1.0兼容性支持。使用 Encrypt=false 在连接字符串中。
  • 生产环境:考虑升级到支持TLS 1.2+的现代SQL Server版本。
  • 证书:服务器接受用于开发目的的自签名证书。

可用工具

怎么翻译

执行SQL查询并以JSON格式返回结果。

参数:

  • connectionString (string,必填):SQL Server连接字符串
  • query (string,必填):要执行的SQL查询
  • maxRows (int,可选):返回的最大行数(默认值:100,最大值:1000)
  • timeoutSeconds (int,可选):查询超时(秒)(默认值:30)

例子:

{
  "connectionString": "Server=localhost;Database=AdventureWorks;Integrated Security=true;Encrypt=false;",
  "query": "SELECT TOP 10 * FROM Sales.Customer",
  "timeoutSeconds": 60
}

list_tables

列出数据库中的所有表。

参数:

  • connectionString (string,必填):SQL Server连接字符串
  • schema (字符串,可选):按架构名称筛选

例子:

{
  "connectionString": "Server=localhost;Database=AdventureWorks;Integrated Security=true;Encrypt=false;",
  "schema": "Sales"
}

describe_table

获取有关表结构的详细信息。

参数:

  • connectionString (string,必填):SQL Server连接字符串
  • schema (字符串,必填):架构名称
  • tableName (字符串,必填):表名

例子:

{
  "connectionString": "Server=localhost;Database=AdventureWorks;Integrated Security=true;Encrypt=false;",
  "schema": "Sales",
  "tableName": "Customer"
}

列表_数据库

列出SQL Server实例上的所有用户数据库(自动检测SQL Server 2005)。

参数:

  • connectionString (string,必填):SQL Server连接字符串(可以连接到任何数据库)

例子:

{
  "connectionString": "Server=localhost;Integrated Security=true;Encrypt=false;"
}

列表存储程序

列出数据库中的所有存储过程。

参数:

  • connectionString (string,必填):SQL Server连接字符串
  • schema (字符串,可选):按架构名称筛选

例子:

{
  "connectionString": "Server=localhost;Database=AdventureWorks;Integrated Security=true;TrustServerCertificate=true;",
  "schema": "dbo"
}

list_functions

列出数据库中所有用户定义的函数。

参数:

  • connectionString (string,必填):SQL Server连接字符串
  • schema (字符串,可选):按架构名称筛选

例子:

{
  "connectionString": "Server=localhost;Database=AdventureWorks;Integrated Security=true;TrustServerCertificate=true;",
  "schema": "dbo"
}

get_routine_定义

获取存储过程或函数的源代码/定义。

参数:

  • connectionString (string,必填):SQL Server连接字符串
  • schema (字符串,必填):架构名称
  • routineName (string,必填):存储过程或函数的名称

例子:

{
  "connectionString": "Server=localhost;Database=AdventureWorks;Integrated Security=true;TrustServerCertificate=true;",
  "schema": "dbo",
  "routineName": "uspGetEmployeeManagers"
}

答复包括:

  • 例程类型(程序或功能)
  • 返回类型(用于函数)
  • 创建日期和最后更改日期
  • 完整的源代码定义

execute_nonquery

执行非查询SQL命令(INSERT、UPDATE、DELETE、CREATE等)。

参数:

  • connectionString (string,必填):SQL Server连接字符串
  • command (string,必填):要执行的SQL命令
  • timeoutSeconds (int,可选):命令超时时间(秒)(默认值:30)

例子:

{
  "connectionString": "Server=localhost;Database=MyDatabase;Integrated Security=true;TrustServerCertificate=true;",
  "command": "INSERT INTO Users (Name, Email) VALUES ('John Doe', 'john@example.com')"
}

响应格式

所有工具都以一致的格式返回JSON响应:

成功响应:

{
  "success": true,
  "data": [...],
  "rowCount": 5
}

错误响应:

{
  "success": false,
  "error": "Error message",
  "type": "SqlException"
}

安全注意事项

  • 始终使用安全连接字符串
  • 尽可能考虑使用Windows身份验证
  • 切勿在代码中硬编码密码
  • 对连接字符串使用环境变量或安全配置
  • 请谨慎使用execute_non_query,因为它可能会修改数据
  • 限制MCP服务器使用的SQL Server帐户的权限
  • SQL Server 2005:请注意,启用TLS 1.0是为了兼容性,但对于生产使用来说是不安全的

SQL Server版本兼容性

版本 状态 注释
SQL Server 2005 ✅ 完全支持 使用 Encrypt=false 在连接字符串中
SQL Server 2008/2008 R2 ✅ 完全支持 使用 TrustServerCertificate=true
SQL Server 2012+✅ 完全支持 使用 TrustServerCertificate=true
SQL Server 2016+✅ 完全支持 使用 TrustServerCertificate=true
SQL Server 2019+✅ 完全支持 使用 TrustServerCertificate=true
SQL Server 2022 ✅ 完全支持 使用 TrustServerCertificate=true

服务器会自动检测SQL server 2005,并调整其查询以实现兼容性。

发展

项目结构

sqlserver-mcp/
├── Program.cs              # Main entry point
├── Tools/
│   └── SqlServerTools.cs  # MCP tool implementations
├── SqlServerMcp.csproj    # Project file
├── .github/
│   └── copilot-instructions.md
└── README.md              # This file

添加新工具

要添加新工具,请执行以下操作:

  1. 添加新方法 SqlServerTools.cs 随着 [McpServerTool] 属性
  2. 添加一个 [Description] 文档属性
  3. 使用描述性参数名称 [Description] 属性
  4. 返回JSON格式的结果

例子:

[McpServerTool(Name = "my_tool"), Description("Description of what the tool does")]
public static async Task<string> MyTool(
    [Description("Parameter description")] string parameter,
    CancellationToken cancellationToken = default)
{
    // Implementation
}

Visual Studio 2026中的调试

您可以直接在Visual Studio 2026中调试此MCP服务器:

  1. 在Visual Studio 2026中打开解决方案
  2. 在代码中设置断点
  3. 按F5开始调试
  4. Visual Studio将自动启动MCP服务器
  5. 使用GitHub Copilot或VS 2026中的其他AI功能连接到您的服务器
  6. 当AI调用您的SQL Server工具时,断点将被命中

许可证

本项目按原样提供,用于教育和发展目的。

资源