Mssql

sanjay3290/ai-skills/skills/mssql

by sanjay3290281d88df199357e3091a3be5c743a0fca9a9ae1bApache-2.0Listed Oct 9, 2026Updated Oct 9, 2026

Execute read-only SQL queries against multiple Microsoft SQL Server databases. Use when: (1) querying MSSQL/SQL Server databases, (2) exploring database schemas/tables, (3) running SELECT queries for data analysis, (4) checking database contents. Supports multiple database connections with descriptions for intelligent auto-selection. Blocks all write operations (INSERT, UPDATE, DELETE, DROP, etc.) for safety.

Includes scriptsData & Analytics
AI-generated overview

Runs read-only SQL queries against configured Microsoft SQL Server databases, with schema exploration and multi-connection selection.

What it does
This skill executes safe, read-only queries against one or more configured Microsoft SQL Server databases. It provides a Python script that can list configured databases, list tables, show schema, and run SELECT queries with an optional row limit. Write operations are blocked by query validation, and results are capped for readability and memory safety.
When to use it
Use it when you need to query MSSQL/SQL Server databases, explore database schemas or tables, run SELECT queries for data analysis, or check database contents. It is also useful when multiple database connections exist and the correct one must be selected based on descriptions.
Requirements
Python 3.8+ and the pymssql package (install via requirements.txt). A connections.json file with database credentials is required, placed in the skill directory or at ~/.config/claude/mssql-connections.json. Network access to the database host is needed. The skill ships an executable script (scripts/query.py).

MSSQL Read-Only Query Skill

Execute safe, read-only queries against configured Microsoft SQL Server databases.

Requirements

  • Python 3.8+
  • pymssql: pip install -r requirements.txt

Setup

Create connections.json in the skill directory or ~/.config/claude/mssql-connections.json.

Security: Set file permissions to 600 since it contains credentials:

bash
chmod 600 connections.json
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"    }  ]}

Config Fields

FieldRequiredDescription
nameYesIdentifier for the database (case-insensitive)
descriptionYesWhat data this database contains (used for auto-selection)
hostYesDatabase hostname
portNoPort number (default: 1433)
databaseYesDatabase name
userYesUsername
passwordYesPassword
encryptNoEnable TLS encryption (default: false)
tds_versionNoTDS protocol version: 7.0, 7.1, 7.2, 7.3, 7.4 (default: auto)

Usage

List configured databases

bash
python3 scripts/query.py --list

Query a database

bash
python3 scripts/query.py --db production --query "SELECT TOP 10 * FROM users"

List tables

bash
python3 scripts/query.py --db production --tables

Show schema

bash
python3 scripts/query.py --db production --schema

Limit results

bash
python3 scripts/query.py --db production --query "SELECT * FROM orders" --limit 100

Note: MSSQL uses TOP N instead of LIMIT. The --limit flag automatically inserts TOP N after SELECT.

Database Selection

Match user intent to database description:

User asks aboutLook for description containing
users, accountsusers, accounts, customers
orders, salesorders, transactions, sales
analytics, metricsanalytics, metrics, reports
logs, eventslogs, events, audit

If unclear, run --list and ask user which database.

Safety Features

  • Read-only enforcement: Query validation blocks write operations (use a db_datareader role user for server-side protection)
  • Query validation: Only SELECT, SHOW, EXPLAIN, WITH, SP_HELP queries allowed
  • Single statement: Multiple statements per query rejected
  • TLS support: Configurable encryption for secure connections
  • Query timeout: 30-second timeout enforced via pymssql
  • Connection timeout: 10-second login timeout
  • Memory protection: Max 10,000 rows per query to prevent OOM
  • Column width cap: 100 char max per column for readable output
  • Credential sanitization: Error messages don't leak passwords

Troubleshooting

ErrorSolution
Config not foundCreate connections.json in skill directory
Authentication failedCheck username/password in config
Connection timeoutVerify host/port, check firewall/VPN
TDS version errorTry "tds_version": "7.3" or "7.4"
Encryption errorSet "encrypt": true for Azure SQL
Permission warningRun chmod 600 connections.json

Exit Codes

  • 0: Success
  • 1: Error (config missing, auth failed, invalid query, database error)

Workflow

  1. Run --list to show available databases
  2. Match user intent to database description
  3. Run --tables or --schema to explore structure
  4. Execute query with appropriate --limit (auto-converts to TOP N)

Source and attribution

Source:sanjay3290/ai-skillsinskills/mssqlat commit281d88d

License: Apache-2.0

Content belongs to its original authors. SourceWeft indexes it from a public repository.

Report or request removal