mssql について
mssql は、設定済みの Microsoft SQL Server データベースを読み取り専用で照会するスキルです。データを調査・取得するユーザー向けで、クエリを検証し、テーブルやスキーマも表示できます。
主な機能
- 01設定済みデータベースの一覧表示
- 02行数制限付きの読み取り専用クエリ
- 03テーブルとデータベーススキーマの確認
- 04クエリ種別の検証と複数文の拒否
- 05TLS とクエリタイムアウトへの対応
活用シーン
- 01データベースのユーザーや注文データの確認
- 02分析指標やログ記録の照会
- 03クエリ前のテーブルとスキーマの確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ sanjay3290/ ai-skills --skill mssqlインストール後、Claude Code で/mssqlを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.gitignoreconnections.example.jsonREADME.mdrequirements.txtscripts/query.py詳細
MSSQL 読み取り専用クエリスキル
設定済みの Microsoft SQL Server データベースに対して、安全な読み取り専用クエリを実行します。
要件
- Python 3.8+
- pymssql:
pip install -r requirements.txt
セットアップ
スキルのディレクトリまたは ~/.config/claude/mssql-connections.json に connections.json を作成します。
セキュリティ:認証情報が含まれるため、ファイルのアクセス権を 600 に設定してください。
chmod 600 connections.json
{
"databases": [
{
"name": "production",
"description": "Main app database - users, orders, transactions",
"host": "db.example.com",
"port": 1433,
"database": "app_prod",
"user": "readonly_user",
"password": "your-password",
"encrypt": true,
"tds_version": "7.3"
}
]
}
設定フィールド
| フィールド | 必須 | 説明 |
|---|---|---|
| name | はい | データベースの識別子(大文字と小文字を区別しません) |
| description | はい | データベースに含まれるデータ(自動選択に使用) |
| host | はい | データベースのホスト名 |
| port | いいえ | ポート番号(デフォルト:1433) |
| database | はい | データベース名 |
| user | はい | ユーザー名 |
| password | はい | パスワード |
| encrypt | いいえ | TLS 暗号化を有効にします(デフォルト:false) |
| tds_version | いいえ | TDS プロトコルのバージョン:7.0、7.1、7.2、7.3、7.4(デフォルト:自動) |
使用方法
設定済みデータベースの一覧表示
python3 scripts/query.py --list
データベースへのクエリ
python3 scripts/query.py --db production --query "SELECT TOP 10 * FROM users"
テーブルの一覧表示
python3 scripts/query.py --db production --tables
スキーマの表示
python3 scripts/query.py --db production --schema
結果数の制限
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100
注:MSSQL では LIMIT の代わりに TOP N を使用します。--limit フラグは SELECT の後に TOP N を自動で挿入します。
データベースの選択
ユーザーの意図をデータベースの description に照らし合わせます。
| ユーザーの質問 | 説明に含まれる語句を確認 |
|---|---|
| ユーザー、アカウント | users、accounts、customers |
| 注文、売上 | orders、transactions、sales |
| 分析、指標 | analytics、metrics、reports |
| ログ、イベント | logs、events、audit |
不明な場合は --list を実行し、使用するデータベースをユーザーに確認します。
安全機能
- 読み取り専用の強制:クエリの検証により書き込み操作をブロックします(サーバー側で保護するには
db_datareaderロールのユーザーを使用してください) - クエリの検証:SELECT、SHOW、EXPLAIN、WITH、SP_HELP クエリのみ許可されます
- 単一ステートメント:複数のステートメントを含むクエリは拒否されます
- TLS サポート:安全な接続のために暗号化を設定できます
- クエリタイムアウト:pymssql によって 30 秒のタイムアウトが適用されます
- 接続タイムアウト:ログインタイムアウトは 10 秒です
- メモリ保護:メモリ不足を防ぐため、クエリあたりの最大行数は 10,000 行です
- 列幅の上限:読みやすい出力のため、各列の最大幅は 100 文字です
- 認証情報のサニタイズ:エラーメッセージにパスワードが漏えいしません
トラブルシューティング
| エラー | 解決策 |
|---|---|
| 設定ファイルが見つからない | スキルのディレクトリに connections.json を作成します |
| 認証に失敗した | 設定のユーザー名とパスワードを確認します |
| 接続タイムアウト | ホストとポートを確認し、ファイアウォール/VPN を確認します |
| TDS バージョンエラー | "tds_version": "7.3" または "7.4" を試します |
| 暗号化エラー | Azure SQL の場合は "encrypt": true を設定します |
| アクセス権限の警告 | chmod 600 connections.json を実行します |
終了コード
- 0:成功
- 1:エラー(設定ファイルがない、認証失敗、無効なクエリ、データベースエラー)
ワークフロー
--listを実行して、利用可能なデータベースを表示します- ユーザーの意図をデータベースの説明に照らし合わせます
--tablesまたは--schemaを実行して、構造を確認します- 適切な
--limitを指定してクエリを実行します(自動的に TOP N に変換されます)
コメント
Markdown 対応