SQL Server 查询工具

MCP SQL Server 是一个允许 Claude AI 安全地以只读方式连接和查询任何 SQL Server 数据库的服务。

  • by Aron-Valenzuela
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Juan-Valenzuela3/MCP-SqlServer

使用说明

MCP SQL Server

英文版

MCP服务器(模型上下文协议),允许Claude AI以安全和只读的方式连接和查询任何SQL Server数据库。


特征

  • 动态连接 -从与Claude的对话中连接到任何SQLServer
  • 9种可用工具 -从列出数据库到查看存储过程的代码
  • 只读 --不允许插入、更新和删除;单独领事选择/与
  • 灵活认证 --soporta Windows身份验证和SQL Server身份验证
  • 自选连接 -配置环境变量以在打开Claude Desktop时自动连接
  • 安全验证 -针对SQL注入验证的连接参数

可用的工具

Conexion的管理

工具 描述
conectar 连接到SQL Server(Windows或SQL Auth)
estado_conexion 显示当前连接的状态
desconectar 断开活动会话

数据查询(只读)

工具 描述
list_databases 列出服务器上的所有数据库
list_tables 列出表和视图,并按架构选择筛选器
describe_table 显示表的列、类型、无效性、默认值和PKS
query 执行SELECT/WITH查询(最多500行)
search_column 搜索按名称显示列的表
get_sp_definition 显示存储过程的源代码

先决条件

  • Python 3.10+
  • SQL Server的ODBC驱动程序17 (下载)
  • 克劳德桌面版 (下载)

瞬间。

1.克隆存储库

git clone https://github.com/Juan-Valenzuela3/MCP-SqlServer.git
cd mcp-sqlserver

2.安装依赖项

pip install mcp pyodbc anyio

克劳德桌面上的设置

基本设置

打开克劳德桌面,转到 设置>开发人员>编辑配置 并在中添加以下内容 claude_desktop_config.json:

{
  "mcpServers": {
    "mcp-sqlserver": {
      "command": "python",
      "args": ["C:/ruta/completa/a/sqlserver-mcp/server.py"]
    }
  }
}

用实际位置替换路径 server.py 那就去吧。

具有自动连接的配置(可选)

如果您希望克劳德在启动时自动连接到数据库:

{
  "mcpServers": {
    "mcp-sqlserver": {
      "command": "python",
      "args": ["C:/ruta/completa/a/sqlserver-mcp/server.py"],
      "env": {
        "DB_SERVER": "mi-servidor\\Instancia",
        "DB_NAME": "MiBaseDeDatos",
        "DB_AUTH_TYPE": "windows"
      }
    }
  }
}

帕拉 使用用户名和密码,他还补充说:

"DB_USER": "mi_usuario",
"DB_PASSWORD": "mi_password"

保存后, reinicia克劳德桌面 这是我的梦想。


使用

一旦配置好,它将在Claude Desktop上打开一个对话,并键入以下指示:

Conectame al servidor mi-servidor\Instancia, base de datos MiDB
Muestra las tablas del esquema dbo
Ejecuta: SELECT TOP 10 * FROM dbo.Clientes
Muestrame el codigo del Stored Procedure GetDataToSend
Busca en que tablas aparece la columna "Price"

克劳德将自动使用MCP工具做出回应。


CLI工具:列资源管理器

El脚本 buscar_campos.py 允许从终端浏览任何SQLServer数据库的列。

基本用途

# Listar todas las columnas de una base de datos
python sqlserver-mcp/buscar_campos.py --server "mi-servidor\Instancia" --database "MiDB"

# Filtrar columnas por nombre
python sqlserver-mcp/buscar_campos.py --server "mi-servidor\Instancia" --database "MiDB" --search "Price"

# Exportar resultados a archivo
python sqlserver-mcp/buscar_campos.py --server "mi-servidor\Instancia" --database "MiDB" --output resultado.txt

# Usar SQL Server Authentication
python sqlserver-mcp/buscar_campos.py --server "mi-servidor\Instancia" --database "MiDB" --auth sql --user sa --password 1234

安全

  • 只读:服务器只允许查询 SELECT y WITH (CTES)。无法执行 INSERT, UPDATE, DELETE 或其他DML命令。
  • 参数验证:连接参数经过验证,以防止注入危险字符(;, {, }).
  • 没有硬编码的凭据:凭据通过对话或本地环境变量传递。

项目结构

mcp-sqlserver/
├── sqlserver-mcp/
│   ├── server.py            # Servidor MCP principal
│   └── buscar_campos.py     # CLI para explorar columnas
├── CLAUDE.md                # Instrucciones para Claude Code
└── README.md

许可证

麻省理工学院