MSSQL MCP Server
This MCP server enables AI assistants to interact with both local SQL Server and Azure SQL Database through natural language queries and database operations.
Data Operations:
Query Data - Execute SELECT queries to retrieve data with built-in security to prevent destructive operations
Insert Data - Add single or multiple records using parameterized queries
Update Data - Modify existing records with required WHERE clauses for security
Schema Management:
Create Tables - Define new tables with custom column specifications and constraints
Drop Tables - Remove tables from the database
Create Indexes - Add clustered or non-clustered, unique or non-unique indexes for performance optimization
List Tables - View all tables or filter by specific schemas
Describe Table Schema - Inspect table structure including column names, data types, and constraints
Security Features:
SQL injection prevention through parameterized queries
Query validation and sanitization
Required WHERE clauses for update operations
Read-only mode support
Connection Support:
Local SQL Server (username/password or Windows authentication)
Azure SQL Database (Azure AD authentication)
Self-signed certificate support for local development
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MSSQL MCP Server show me the top 10 customers by total purchase amount"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MSSQL MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to interact with both local SQL Server and Azure SQL Database through natural language.
π What Makes This Special?
This MCP server solves a critical limitation of existing solutions by supporting both local SQL Server and Azure SQL Database connections. While the original Azure-Samples implementation only works with Azure SQL Database, this enhanced version enables:
π Local Development: Connect to local SQL Server instances using username/password authentication
βοΈ Azure Cloud: Full Azure SQL Database support with Azure AD authentication
π Seamless Switching: Use the same tools for both environments
Quick Example:
You: "Show me all customers from New York"
AI: *securely queries your database and returns results in plain English*
You: "Create a table for storing product reviews"
AI: *generates and executes the appropriate CREATE TABLE statement*π¦ Quick Start
Prerequisites
Node.js 18+
SQL Server (local) or Azure SQL Database
AI Assistant: Claude Desktop or VS Code Agent
Installation
git clone https://github.com/Nirmal123K/mssql-mcp.git
cd mssql-mcp-server
npm install && npm run buildConfiguration
Local SQL Server:
export SERVER_NAME="localhost"
export DATABASE_NAME="your_database"
export SQL_USER="your_username"
export SQL_PASSWORD="your_password"
export TRUST_SERVER_CERTIFICATE="true"Azure SQL Database:
export SERVER_NAME="your-server.database.windows.net"
export DATABASE_NAME="your_database"
# Uses Azure AD authentication (run 'az login' first)βοΈ AI Assistant Setup
Claude Desktop
Add to claude_desktop_config.json:
Local SQL Server:
{
"mcpServers": {
"mssql": {
"command": "node",
"args": ["/path/to/mssql-mcp-server/dist/index.js"],
"env": {
"SERVER_NAME": "localhost",
"DATABASE_NAME": "your_database",
"SQL_USER": "your_username",
"SQL_PASSWORD": "your_password",
"TRUST_SERVER_CERTIFICATE": "true"
}
}
}
}Azure SQL Database:
{
"mcpServers": {
"mssql": {
"command": "node",
"args": ["/path/to/mssql-mcp-server/dist/index.js"],
"env": {
"SERVER_NAME": "your-server.database.windows.net",
"DATABASE_NAME": "your_database",
"READONLY": "true"
}
}
}
}VS Code Agent
Create .vscode/mcp.json with similar configuration using "type": "stdio".
Config Locations:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
π Environment Variables
Variable | Required | Description | Example |
| β | SQL Server hostname |
|
| β | Target database name |
|
| π | Username (local SQL Server only) |
|
| π | Password (local SQL Server only) |
|
| β | Restrict to read-only operations |
|
| β | Trust self-signed certificates |
|
π = Required for local SQL Server, not needed for Azure SQL Database
β Verification
# Test the MCP server
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node dist/index.jsπ οΈ Available Tools
Tool | Purpose | Example |
| Query data with SELECT | "Show customers from New York" |
| Add new records | "Insert new product with price $99" |
| Modify existing data | "Update order status to shipped" |
| Create new tables | "Create table for reviews" |
| Add database indexes | "Create index on customer email" |
| Remove tables | "Drop temporary table" |
| Show all tables | "What tables exist?" |
| Show table structure | "Describe customers table" |
Security Features:
β SQL injection prevention
β Query validation and sanitization
β Required WHERE clauses for updates
β Read-only mode support
π Documentation
For detailed information, see our comprehensive guides:
Usage Examples - Practical examples and real-world scenarios
Advanced Configuration - Complex setups and enterprise deployment
Best Practices - Performance optimization and security guidance
Troubleshooting - Common issues and solutions
Platform Notes - Windows, macOS, Linux, and Docker specifics
οΏ½ Credits and Attribution
Original Work
This project is a fork of the Azure-Samples/SQL-AI-samples repository, specifically building upon the MssqlMcp implementation created by Microsoft and the Azure team.
Original Repository: Azure-Samples/SQL-AI-samples
Original Authors: Microsoft Corporation and the Azure team
Original License: MIT License
Original Focus: Azure SQL Database with Azure AD authentication
Key Enhancement
This fork extends the original Azure-only MCP server to support local SQL Server databases with username/password authentication, making it accessible for:
π Local Development: Connect to local SQL Server instances
π’ On-Premises Deployments: Support enterprise SQL Server installations
π Hybrid Environments: Seamlessly switch between local and Azure databases
π Broader Accessibility: Remove Azure dependency for local development
What We Added
Feature | Original Repository | This Fork |
Azure SQL Database | β Azure AD only | β Azure AD support |
Local SQL Server | β Not supported | β Username/password auth |
Authentication Methods | 1 (Azure AD) | 3 (Azure AD, SQL Server, Windows) |
Target Audience | Azure users only | Local + Azure + On-premises |
Development Setup | Requires Azure account | Works with local SQL Server |
Acknowledgments
We are deeply grateful to Microsoft and the Azure team for creating the foundational architecture, security implementation, and tool design that made this enhanced version possible.
This enhanced version would not exist without their excellent foundational work.
License: MIT License - see LICENSE file for details.
Available Tools
8 toolscreate_indexC
Creates an index on a specified column or columns in an MSSQL Database table
Inputs: columns (required), indexName (required), tableName (required), isClustered, +2 more.
create_tableC
Creates a new table in the MSSQL Database with the specified columns.
Inputs: columns (required), tableName (required).
describe_tableA
Describes the schema (columns and types) of a specified MSSQL Database table.
Inputs: tableName (required).
drop_tableC
Drops a table from the MSSQL Database.
Inputs: tableName (required).
insert_dataA
Inserts data into an MSSQL Database table. Supports both single record insertion and multiple record insertion using standard SQL INSERT with VALUES clause. FORMAT EXAMPLES: Single Record Insert: { "tableName": "Users", "data": { "name": "John Doe", "email": "john@example.com", "age": 30, "isActive": true, "createdDate": "2023-01-15" } } Multiple Records Insert: { "tableName": "Users", "data": [ { "name": "John Doe", "email": "john@example.com", "age": 30, "isActive": true, "createdDate": "2023-01-15" }, { "name": "Jane Smith", "email": "jane@example.com", "age": 25, "isActive": false, "createdDate": "2023-01-16" } ] } GENERATED SQL FORMAT:
Single: INSERT INTO table (col1, col2) VALUES (@param1, @param2)
Multiple: INSERT INTO table (col1, col2) VALUES (@param1, @param2), (@param3, @param4), ... IMPORTANT RULES:
For single record: Use a single object for the 'data' field
For multiple records: Use an array of objects for the 'data' field
All objects in array must have identical column names
Column names must match the actual database table columns exactly
Values should match the expected data types (string, number, boolean, date)
Use proper date format for date columns (YYYY-MM-DD or ISO format)
Inputs: data (required), tableName (required).
list_tableC
Lists tables in an MSSQL Database, or list tables in specific schemas
Inputs: parameters.
read_dataA
Executes a SELECT query on an MSSQL Database table. The query must start with SELECT and cannot contain any destructive SQL operations for security reasons.
Inputs: query (required).
update_dataB
Updates data in an MSSQL Database table using a WHERE clause. The WHERE clause must be provided for security.
Inputs: tableName (required), updates (required), whereClause (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose with no ambiguity: create_index (index creation), create_table (table creation), describe_table (schema inspection), drop_table (table deletion), insert_data (data insertion), list_table (table listing), read_data (data querying), and update_data (data modification). The tools cover different aspects of database operations without overlap.
All tools follow a consistent verb_noun pattern (e.g., create_table, describe_table, drop_table, insert_data, list_table, read_data, update_data). The naming is uniform and predictable, making it easy for agents to understand the action and target resource.
With 8 tools, this server is well-scoped for MSSQL database operations. Each tool serves a specific and necessary function in the domain, such as table management, data manipulation, and schema inspection, without being overly sparse or bloated.
The tool set provides strong coverage for core database operations, including table lifecycle (create, describe, list, drop), data CRUD (insert, read, update), and index creation. A minor gap exists with no explicit tool for deleting data (e.g., delete_data) or managing indexes beyond creation, but agents can work around this using update_data or other methods.
Related MCP Connectors
Hosted SQL Server MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Text-to-SQL MCP server: read-only queries on PostgreSQL, MySQL and SQL Server with your real schema
Official Microsoft MCP Server to query Microsoft Entra data using natural language