mcpField
M
mssql

mssql

github.com/billpeet数据与数据库136 次安装13 周前更新
代码仓库

关于 mssql

这项技能通过 `mssql` 命令行工具检查和查询 Microsoft SQL Server 数据库。它优先使用只读查询和结构检查,并要求执行不受限制的写入命令前获得用户明确批准。

主要功能

  1. 01管理已保存的数据库连接
  2. 02执行只读 SQL 查询
  3. 03检查表结构和索引
  4. 04输出 JSON 或文本
  5. 05修改 SQL 前要求批准

适用场景

  1. 01查询前检查数据表
  2. 02运行只读报表和计数
  3. 03检查数据库连通性
  4. 04执行已获批准的数据修复

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/billpeet/agent-skills --skill mssql

安装后在 Claude Code 中输入/mssql确认已加载。

详细介绍

Microsoft SQL Server

使用 mssql CLI 与 Microsoft SQL Server 数据库交互。所有命令默认输出 JSON,便于可靠解析。

重要 — Agent 安全规则:

  1. 未经用户明确批准,绝不要运行 mssql sql-dangerous。 执行前,务必向用户展示完整的 SQL 查询,并解释其作用。此命令可能会修改或销毁数据(INSERT、UPDATE、DELETE、DROP 等)。
  2. 读取数据时优先使用 mssql sql。 SELECT 查询请使用只读命令 mssql sql。它会自动拦截危险语句。
  3. 需要了解表结构时,优先使用 mssql schema,而不是原始查询。
  4. 如果不确定数据库架构,请先使用 mssql schema 检查,不要猜测列名或表名。

设置

添加服务器连接
mssql server add --name mydb --server localhost --database MyDatabase --user sa --password "secret" --format json
mssql server add --name mydb --server db.example.com --database MyDatabase --windows-auth --trust-cert --format json

第一个添加的服务器会自动设为默认服务器。配置保存在 ~/.config/mssql-cli/config.json。

环境变量

环境变量会创建临时连接,其优先级高于配置文件:

export MSSQL_SERVER=localhost
export MSSQL_DATABASE=MyDatabase
export MSSQL_USER=sa
export MSSQL_PASSWORD=secret
export MSSQL_PORT=1433          # optional, default 1433
export MSSQL_ENCRYPT=true       # optional
export MSSQL_TRUST_CERT=true    # optional
export MSSQL_WINDOWS_AUTH=true  # optional, use instead of user/password

服务器管理

列出已配置的服务器
mssql server list --format json --pretty
设置默认服务器
mssql server default --name mydb --format json
测试连接
mssql server test --format json
mssql server test --name mydb --format json
移除服务器
mssql server remove --name mydb --format json
查看或更新全局设置
mssql server config --format json
mssql server config --max-rows 500 --format json

maxRows 设置(默认值:100)限制查询返回的行数。达到上限时,结果中会附带截断警告。

查询(只读)

SELECT 查询请使用 mssql sql。此命令会拦截任何可能修改数据的语句(INSERT、UPDATE、DELETE、DROP、CREATE、ALTER、TRUNCATE、MERGE、EXEC 等),并提示你改用 sql-dangerous。

mssql sql --query "SELECT TOP 10 * FROM Users" --format json --pretty
mssql sql --query "SELECT COUNT(*) AS total FROM Orders WHERE Status = 'Pending'" --format json
mssql sql --query "SELECT u.Name, COUNT(o.Id) AS OrderCount FROM Users u JOIN Orders o ON u.Id = o.UserId GROUP BY u.Name" --server mydb --format json --pretty
mssql sql --file report.sql --format json --pretty

使用 --query 执行内联 SQL,或使用 --file 从 .sql 文件读取 SQL。这两个选项不能同时使用。

结果数量受已配置的 maxRows 限制(默认值:100)。如果行数超过此限制,输出中会包含截断警告。

查询(危险 — 修改数据)

Agent:未经用户明确批准,绝不要运行此命令。执行前,务必先向用户展示查询。

需要修改数据或架构的语句请使用 mssql sql-dangerous。此命令没有安全限制。

mssql sql-dangerous --query "INSERT INTO Users (Name, Email) VALUES ('Alice', '[email protected]')" --format json
mssql sql-dangerous --query "UPDATE Orders SET Status = 'Shipped' WHERE Id = 42" --format json
mssql sql-dangerous --query "DELETE FROM Sessions WHERE ExpiresAt < GETDATE()" --format json
mssql sql-dangerous --query "CREATE INDEX IX_Users_Email ON Users(Email)" --format json
mssql sql-dangerous --file migration.sql --format json

与 mssql sql 一样,使用 --query 执行内联 SQL,或使用 --file 从文件读取(两者不能同时使用)。

除结果行外,输出还会包含 rowsAffected 计数。

架构检查

获取一个或多个表的完整架构详情,包括列、数据类型、主键、外键(两个方向)和索引。

mssql schema Users --format json --pretty
mssql schema Users Orders --format json --pretty
mssql schema dbo.Users sales.Orders --format json --pretty

如果未指定架构,表默认使用 dbo 架构。其他架构请使用 schema.table 表示法。

输出格式

所有命令都支持 --format json(紧凑格式,默认)或 --format text(便于阅读的表格)。添加 --pretty 可输出缩进的 JSON。

退出代码:0 = 成功,1 = 错误。错误会以 JSON 格式写入 stderr。

常见工作流

查询前先查看表:

mssql schema Users --format json --pretty
mssql sql --query "SELECT TOP 5 * FROM Users" --format json --pretty

检查多个表的行数:

mssql sql --query "SELECT 'Users' AS TableName, COUNT(*) AS Rows FROM Users UNION ALL SELECT 'Orders', COUNT(*) FROM Orders" --format json --pretty

安全修复数据(务必先与用户确认):

# 1. Check current state
mssql sql --query "SELECT Id, Email FROM Users WHERE Id = 42" --format json --pretty
# 2. After user approval, apply the fix
mssql sql-dangerous --query "UPDATE Users SET Email = '[email protected]' WHERE Id = 42" --format json
# 3. Verify the change
mssql sql --query "SELECT Id, Email FROM Users WHERE Id = 42" --format json --pretty

评论

支持 Markdown