mcpField
M
mssql

mssql

github.com/billpeetデータ・データベース136 回インストール13 週間前に更新
リポジトリ

mssql について

`mssql` コマンドラインツールで Microsoft SQL Server データベースを調査・クエリするスキルです。読み取り専用クエリとスキーマ確認を優先し、制限のない変更コマンドには事前の明示的な承認を求めます。

主な機能

  1. 01保存済み接続の管理
  2. 02読み取り専用 SQL の実行
  3. 03テーブル構造とインデックスの確認
  4. 04JSON またはテキスト出力
  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 を出力します。

重要 — エージェントの安全ルール:

  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

インライン SQL には --query を、.sql ファイルから SQL を読み込むには --file を使用します。これらのオプションは同時に指定できません。

結果は設定済みの maxRows(デフォルト:100)までに制限されます。行数がそれを超える場合、出力に切り捨て警告が含まれます。

クエリ(危険 — 変更を伴う)

エージェント:クエリをユーザーに提示し、明示的な承認を得る前に、このコマンドを絶対に実行しないでください。

データまたはスキーマを変更するステートメントには 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 と同様に、インライン SQL には --query を、ファイルから読み込むには --file を使用します(同時に指定できません)。

出力には、結果行に加えて rowsAffected の件数が含まれます。

スキーマの確認

1 つ以上のテーブルについて、列、データ型、主キー、外部キー(両方向)、インデックスなどのスキーマ詳細を取得します。

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(人が読みやすい表形式)を指定できます。インデント付き JSON にするには --pretty を追加します。

終了コード: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

コメント