返回市场
mssql MCP服务器

mssql MCP服务器

作者:Popplywop8 星标更新:2025-08-26

项目介绍

🚧 正在进行中 🚧

SQL Server MCP 服务器

这是一个提供与 SQL Server 数据库交互工具的模型上下文协议(MCP)服务器。该服务器允许大型语言模型(LLMs)通过标准化协议查询和检查 SQL Server 数据库。

特性

  • 数据库查询:执行 SQL 查询并获取结果
  • 模式检查:列出表、视图、存储过程,并检查表模式
  • 防止 SQL 注入:内置验证以防止 SQL 注入攻击
  • 资源缓存:元数据缓存以提高性能

快速开始

先决条件

  • .NET 8.0 SDK 或更高版本
  • SQL Server 实例(本地或远程)

安装

方案 1:作为 .NET 工具安装(推荐)

全局安装为 .NET 工具:

dotnet tool install --global tsql-mcp-server

更新到最新版本:

dotnet tool update --global tsql-mcp-server

方案 2:从源代码构建

# 克隆仓库
git clone https://github.com/Popplywop/tsql-mcp-server
cd tsql-mcp-server

# 构建项目
dotnet build

运行服务器

使用 .NET 工具

如果已作为 .NET 全局工具安装:

# 使用直接连接字符串
tsql-mcp-server --dsn "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"

# 使用环境变量
tsql-mcp-server --env-var "SQL_CONNECTION_STRING"

使用源代码

如果从源代码构建:

# 使用直接连接字符串
dotnet run --dsn "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"

# 使用环境变量
dotnet run --env-var "SQL_CONNECTION_STRING"

MCP 服务器配置

要使用此服务器与支持模型上下文协议的 Claude 或其他 LLM,您需要在您的 MCP 配置文件中对其进行配置。

如果作为 .NET 工具安装

{
  "servers": [
    {
      "name": "SqlServerMcp",
      "command": "tsql-mcp-server",
      "args": [
        "--dsn",
        "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
      ]
    }
  ]
}

如果从源代码构建

{
  "servers": [
    {
      "name": "SqlServerMcp",
      "command": "path/to/tsql-mcp-server.exe",
      "args": [
        "--dsn",
        "Server=your-server;Database=your-database;User Id=your-username;Password=your-password;TrustServerCertificate=True;"
      ]
    }
  ]
}

用实际值替换连接字符串。此配置可用于 Claude 的 MCP 集成或其他支持模型上下文协议的 LLM 平台。

使用环境变量存储敏感信息

为了更好的安全性,您可以使用环境变量存储连接字符串:

{
  "servers": [
    {
      "name": "SqlServerMcp",
      "command": "tsql-mcp-server",
      "args": [
        "--env-var",
        "SQL_CONNECTION_STRING"
      ]
    }
  ]
}

命令行选项

  • --dsn-d:SQL Server 连接字符串
  • --env-var-e:包含连接字符串的环境变量名称

可用的 MCP 工具

查询工具

  • ExecuteQuery:对数据库执行 SQL 查询并返回结果
    • 参数:
      • query:要执行的 SQL 查询
      • commandTimeout:可选命令超时时间(秒)
      • maxRows:可选最大返回行数

数据库资源

服务器通过基于资源的方法提供数据库模式信息。资源通过 URI 访问,并采用惰性加载和缓存以提高性能。

资源 URI描述加载行为
sqlserver://schemas/{schema_name}关于特定模式的信息首次请求时加载,缓存 10 分钟
sqlserver://schemas/{schema_name}/tables模式中的表列表首次请求时加载,缓存 10 分钟
sqlserver://schemas/{schema_name}/views模式中的视图列表首次请求时加载,缓存 10 分钟
sqlserver://schemas/{schema_name}/procedures模式中的存储过程列表首次请求时加载,缓存 10 分钟
sqlserver://schemas/{schema_name}/tables/{table_name}关于特定表的详细信息首次请求时加载,缓存 10 分钟
sqlserver://schemas/{schema_name}/views/{view_name}关于特定视图的详细信息首次请求时加载,缓存 10 分钟
sqlserver://schemas/{schema_name}/procedures/{procedure_name}关于特定过程的详细信息首次请求时加载,缓存 10 分钟

资源由 MCP 客户端自动发现,可以直接访问而无需调用特定工具。

安全注意事项

  • 使用具有适当权限的 SQL Server 账户(最小权限原则)
  • 安全存储连接字符串(不在源代码控制中)
  • 考虑使用环境变量存储连接字符串
  • 启用 TLS/SSL 对数据库连接进行加密
  • SQL 注入验证防止危险操作并保护常见攻击向量

示例用法

查询数据

ExecuteQuery:
  query: "SELECT TOP 10 * FROM MyTable"
  maxRows: 100

访问数据库资源

资源可以通过其 URI 直接访问:

# 列出所有模式
GET sqlserver://schemas

# 获取关于特定模式的信息
GET sqlserver://schemas/dbo

# 列出模式中的所有表
GET sqlserver://schemas/dbo/tables

# 获取关于特定表的详细信息
GET sqlserver://schemas/dbo/tables/Customers

基于资源的方法提供了以 RESTful 方式探索和与数据库模式交互的方式。

许可证

本项目根据 MIT 许可证发布 - 详情见 LICENSE.md 文件。

MIT 许可证是一种宽松许可证,允许在最少限制的情况下重复使用。它允许任何人使用、复制、修改、合并、发布、分发、再许可和/或出售软件副本,前提是原始版权通知和许可通知出现在所有副本中。