SQL Server数据库访问服务

一个基于.NET 8的MCP服务器实现,为Claude Code等MCP兼容AI助手提供SQL Server数据库访问功能。

  • by Hroerkr
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 hroerkr/mssqlmcp

使用说明

SQL Server MCP(模型上下文协议)服务器

A.NET 8实现的MCP服务器,提供SQL server数据库访问MCP兼容的AI助手,如Claude Code。

特性

  • 执行SQL查询(SELECT、INSERT、UPDATE、DELETE等)
  • 获取SQL Server实例和数据库信息
  • 列出表及其模式
  • 检索特定表的列信息
  • 同时支持Windows身份验证和SQL Server身份验证
  • 建在。NET 8,采用现代异步/等待模式

先决条件

  • .NET 8.0 SDK
  • SQL Server实例(本地或远程)
  • MCP兼容客户端(如Claude Code)

安装

  1. 克隆存储库:

    git clone <your-repo-url>
    cd SqlServerMCP
    
  2. 构建项目:

    dotnet build
    
  3. 测试构建:

    # Use the provided test scripts
    build.bat           # Basic build with package check
    full_test.bat       # Complete build and runtime test
    test_direct.bat     # Direct MCP server test
    

配置

环境变量

使用以下环境变量配置SQL Server连接:

  • MSSQL_SERVER:SQL Server实例(默认值:localhost)
  • MSSQL_DATABASE:数据库名称(默认:master)
  • MSSQL_USER:SQL Server用户名(可选-如果未提供,则使用Windows身份验证)
  • MSSQL_PASSWORD:SQL Server密码(可选-如果未提供,则使用Windows身份验证)

配置示例

Windows身份验证:

set MSSQL_SERVER=localhost
set MSSQL_DATABASE=MyDatabase

SQL Server身份验证:

set MSSQL_SERVER=localhost
set MSSQL_DATABASE=MyDatabase
set MSSQL_USER=sa
set MSSQL_PASSWORD=YourPassword

Claude代码集成

要将此MCP服务器与Claude Code一起使用,请将以下配置添加到您的 ~/.claude.json 文件:

{
  "projects": {
    "your-project-path": {
      "mcpServers": {
        "sqlserver": {
          "command": "dotnet",
          "args": [
            "run",
            "--project",
            "/path/to/SqlServerMCP/SqlServerMCP.csproj",
            "--no-build"
          ],
          "env": {
            "MSSQL_SERVER": "localhost",
            "MSSQL_DATABASE": "YourDatabase",
            "MSSQL_USER": "sa",
            "MSSQL_PASSWORD": "YourPassword"
          }
        }
      }
    }
  }
}

注: 替换 /path/to/SqlServerMCP/SqlServerMCP.csproj 使用项目文件的实际路径。

可用的MCP工具

连接后,您的AI助手将可以使用以下工具:

执行SQL

执行任何SQL查询(SELECT、INSERT、UPDATE、DELETE等)

  • 参数: query -要执行的SQL查询
  • 退货: SELECT查询的查询结果或修改查询的执行状态

GetServerInfo

获取有关SQL Server实例和当前数据库的信息

  • 退货: 服务器版本、当前数据库、当前用户、服务器名称和当前日期/时间

列表表格

列出当前数据库中的所有表

  • 退货: 表架构名称、表名称和表类型

GetTableSchema

获取特定表的列信息

  • 参数: tableName -要检查的表的名称
  • 退货: 列详细信息,包括名称、数据类型、可空性、默认值和约束

使用示例

使用Claude Code设置MCP服务器后,您可以使用以下自然语言命令:

  • “显示数据库中的所有表”
  • “Users表的架构是什么?”
  • “执行此查询:从价格>100的产品中选择*”
  • “获取有关此SQL Server实例的信息”

发展

项目结构

  • Program.cs:入口点和MCP服务器设置
  • SqlServerService.cs:核心SQL Server连接和查询执行逻辑
  • SqlServerTools.cs:MCP工具定义和实现
  • SqlServerMCP.csproj:项目配置和依赖关系

建造和测试

# Clean and build
dotnet clean
dotnet build

# Run the MCP server directly
dotnet run

# Test with provided batch files
full_test.bat

依赖项

  • ModelContextProtocol (0.2.0-preview.1):MCP服务器框架
  • Microsoft.Extensions.Hosting (8.0.1):依赖注入和托管
  • Microsoft.Extensions.Logging.Console (8.0.1):日志记录支持
  • Microsoft.Data.SqlClient (5.2.2):SQL Server连接

安全考虑

  • 连接字符串是根据环境变量动态构建的
  • TrustServerCertificate=true 已为开发场景启用
  • 敏感信息应存储在环境变量中,而不是硬编码
  • 考虑在生产环境中使用更安全的身份验证方法

故障排除

  1. 连接问题:验证SQL Server是否正在运行并且可以访问
  2. 身份验证失败:检查用户名/密码或Windows身份验证设置
  3. 港口问题:确保SQL Server正在侦听预期端口(默认1433)
  4. 防火墙:验证防火墙是否允许连接到SQL Server

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 彻底测试
  5. 提交拉取请求

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。