mssql-mcp
Microsoft SQL Server MCP Skill
Query and manage SQL Server databases through natural language interface with built-in safety features.
Configuration
Required Environment Variables
SERVER_NAME=myserver.database.windows.net
DATABASE_NAME=MyDatabase
Optional Environment Variables
READONLY=true # Enable read-only mode
CONNECTION_TIMEOUT=30 # Connection timeout (seconds)
TRUST_SERVER_CERTIFICATE=true # Accept self-signed certificates
Authentication Options
SQL Authentication:
USER=dbusername
PASSWORD=dbpassword
Windows/Azure AD: Use integrated authentication (no explicit credentials needed)
Core Capabilities
1. Query Execution
Execute SQL queries through natural language requests.
Examples:
- "Get all users from California"
- "Show top 100 orders by date"
- "Calculate total revenue by month"
- "Find products with price > $50"
Security: Requires WHERE clauses for safety.
2. Data Modification
Create, update, and delete records.
Insert:
- "Add new user: John Doe, john@example.com"
- "Create product: Laptop, $999"
Update:
- "Update user ID 123 email to new@example.com"
- "Change order status to 'shipped' for order 456"
Delete:
- "Delete orders older than 1 year"
- "Remove user with ID 789"
Security: UPDATE and DELETE require WHERE clauses.
3. Schema Management
Create and modify database structures.
Create Tables:
- "Create users table with id, name, email"
- "Add products table with id, name, price, category"
Modify Schema:
- "Add phone column to customers table"
- "Create index on email in users"
- "Add foreign key from orders to customers"
Drop Objects:
- "Drop table temp_data"
- "Remove index idx_email from users"
4. Database Inspection
Explore database structure and metadata.
Tables:
- "List all tables"
- "Show tables in database"
Schema:
- "Describe users table"
- "Show structure of orders table"
- "What columns are in products table?"
Relationships:
- "List foreign keys"
- "Show table relationships"
- "Display indexes on orders table"
Common Query Patterns
Filtering
"WHERE" conditions for targeting specific records:
- "users from New York"
- "orders created this month"
- "products with price between $10 and $50"
- "customers who signed up in 2024"
Aggregations
Calculations across datasets:
- "count of users by state"
- "total revenue by quarter"
- "average order value"
- "maximum price in each category"
Sorting & Limiting
Ordering and constraining results:
- "top 10 orders by amount"
- "latest 50 users"
- "highest grossing products"
- "most recent transactions"
Joins & Relationships
Combining data from multiple tables:
- "orders with customer names"
- "products with their category names"
- "users with their order counts"
- "customers and their total spend"
Safety Features
Mandatory WHERE Clauses
SELECT Queries: Must include filtering conditions to prevent full table scans.
Good: "Get users where state = 'CA'" Bad: "Get all users" (blocked)
UPDATE Statements: Must specify which records to update.
Good: "Update email for user ID 123" Bad: "Update all emails" (blocked)
DELETE Statements: Must specify which records to delete.
Good: "Delete orders older than 2 years" Bad: "Delete all orders" (blocked)
Read-Only Mode
Set READONLY=true to:
- Disable INSERT, UPDATE, DELETE
- Allow only SELECT and schema inspection
- Safe for production database exploration
- Prevent accidental data changes
SQL Server Data Types
Numeric
INT,BIGINT,SMALLINT,TINYINTDECIMAL(p,s),NUMERIC(p,s)FLOAT,REALMONEY,SMALLMONEY
String
VARCHAR(n),NVARCHAR(n)CHAR(n),NCHAR(n)TEXT,NTEXT(deprecated)
Date/Time
DATE,TIMEDATETIME,DATETIME2SMALLDATETIMEDATETIMEOFFSET
Binary
BINARY(n),VARBINARY(n)IMAGE(deprecated)
Other
BIT(boolean)UNIQUEIDENTIFIER(GUID)XMLJSON(via NVARCHAR)
Common Schema Patterns
Users Table
CREATE TABLE users (
id INT IDENTITY(1,1) PRIMARY KEY,
username NVARCHAR(50) UNIQUE NOT NULL,
email NVARCHAR(255) UNIQUE NOT NULL,
password_hash VARCHAR(255) NOT NULL,
created_at DATETIME2 DEFAULT GETUTCDATE(),
updated_at DATETIME2 DEFAULT GETUTCDATE(),
is_active BIT DEFAULT 1
);
Orders Table
CREATE TABLE orders (
id INT IDENTITY(1,1) PRIMARY KEY,
customer_id INT NOT NULL FOREIGN KEY REFERENCES customers(id),
order_date DATETIME2 DEFAULT GETUTCDATE(),
total_amount DECIMAL(10,2) NOT NULL,
status VARCHAR(20) DEFAULT 'pending',
created_at DATETIME2 DEFAULT GETUTCDATE()
);
Products Table
CREATE TABLE products (
id INT IDENTITY(1,1) PRIMARY KEY,
name NVARCHAR(100) NOT NULL,
description NVARCHAR(MAX),
price DECIMAL(10,2) NOT NULL,
category_id INT FOREIGN KEY REFERENCES categories(id),
stock_quantity INT DEFAULT 0,
created_at DATETIME2 DEFAULT GETUTCDATE()
);
Best Practices
1. Query Optimization
- Limit result sets: "top N records"
- Include time ranges: "in the last 30 days"
- Use specific filters: "where status = 'active'"
- Aggregate when possible: "count by category"
2. Data Safety
- Query before modifying: verify target records
- Use transactions: for related changes
- Backup before schema changes
- Test in development first
3. Performance
- Add indexes on frequently queried columns
- Filter early with WHERE clauses
- Avoid SELECT * patterns
- Use appropriate data types
4. Security
- Use read-only mode for analysis
- Minimum privilege accounts
- Never hardcode credentials
- Audit all modifications
- Review generated queries
Troubleshooting
Connection Failures
- Verify SERVER_NAME format
- Check network/firewall
- Confirm SQL Server is running
- Validate credentials
- Set TRUST_SERVER_CERTIFICATE if needed
Query Errors
- Add WHERE clauses for filtering
- Reduce result set size
- Check syntax in generated SQL
- Verify column names exist
Permission Denied
- Check account permissions
- Verify READONLY mode isn't blocking writes
- Confirm database user roles
- Review table-level permissions
Timeout Issues
- Increase CONNECTION_TIMEOUT
- Optimize queries with indexes
- Reduce data volume with filters
- Check server performance
T-SQL Quick Reference
Common Functions
-- String functions
LEN(column), SUBSTRING(col, start, length), CONCAT(a, b)
UPPER(col), LOWER(col), TRIM(col), REPLACE(col, old, new)
-- Date functions
GETDATE(), GETUTCDATE(), DATEADD(day, 7, date)
DATEDIFF(day, start, end), YEAR(date), MONTH(date)
FORMAT(date, 'yyyy-MM-dd')
-- Aggregate functions
COUNT(*), SUM(col), AVG(col), MIN(col), MAX(col)
COUNT(DISTINCT col)
-- NULL handling
ISNULL(col, default), COALESCE(col1, col2, default)
NULLIF(a, b)
Window Functions
-- Ranking
ROW_NUMBER() OVER (ORDER BY col)
RANK() OVER (PARTITION BY cat ORDER BY col)
DENSE_RANK() OVER (ORDER BY col DESC)
-- Aggregates
SUM(amount) OVER (ORDER BY date)
AVG(price) OVER (PARTITION BY category)
LAG(col, 1) OVER (ORDER BY date)
LEAD(col, 1) OVER (ORDER BY date)
Common Table Expressions
WITH cte AS (
SELECT column1, column2
FROM table
WHERE condition
)
SELECT * FROM cte;
Additional Resources
More from housegarofalo/claude-code-base
mqtt-iot
Configure MQTT brokers (Mosquitto, EMQX) for IoT messaging, device communication, and smart home integration. Manage topics, QoS levels, authentication, and bridging. Use when setting up IoT messaging, smart home communication, or device-to-cloud connectivity. (project)
22devops-engineer-agent
Infrastructure and DevOps specialist. Manages Docker, Kubernetes, CI/CD pipelines, and cloud deployments. Expert in GitHub Actions, Azure DevOps, Terraform, and container orchestration. Use for deployment automation, infrastructure setup, or CI/CD optimization.
6postgresql
Design, optimize, and manage PostgreSQL databases. Covers indexing, pgvector for AI embeddings, JSON operations, full-text search, and query optimization. Use when working with PostgreSQL, database design, or building data-intensive applications.
6home-assistant
Ultimate Home Assistant skill - complete administration, wireless protocols (Zigbee/ZHA/Z2M, Z-Wave JS, Thread, Matter), ESPHome device building, advanced troubleshooting, performance optimization, security hardening, custom integration development, and professional dashboard design. Covers configuration, REST API, automation debugging, database optimization, SSL/TLS, Jinja2 templating, and HACS custom cards. Use for any HA task.
6testing
Comprehensive testing skill covering unit, integration, and E2E testing with pytest, Jest, Cypress, and Playwright. Use for writing tests, improving coverage, debugging test failures, and setting up testing infrastructure.
5react-typescript
Build modern React applications with TypeScript. Covers React 18+ patterns, hooks, component architecture, state management (Zustand, Redux Toolkit), server components, and best practices. Use for React development, TypeScript integration, component design, and frontend architecture.
5