A Model Context Protocol (MCP) server that enables secure interaction with Microsoft SQL Server databases.
Project description
Microsoft SQL Server MCP Server (Ishaan's Version)
A Model Context Protocol (MCP) server for secure SQL Server database access through Claude Desktop.
🚀 Quick Start
Prerequisites
- Python 3.11 or higher (Python 3.12 recommended)
- FreeTDS (for SQL Server connectivity)
Install FreeTDS
# macOS
brew install freetds
# Ubuntu/Debian
sudo apt-get install freetds-dev
# RHEL/CentOS
sudo yum install freetds-devel
Install the Package
pip install mssql-mcp-server-ishaan
Configure Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"mssql": {
"command": "python",
"args": ["-m", "mssql_mcp_server_ishaan"],
"env": {
"MSSQL_CONNECTION_STRING": "server=your-server;database=your-db;uid=your-user;pwd=your-password;encrypt=true;trustServerCertificate=true"
}
}
}
}
📋 Features
- Secure SQL Server connectivity with encrypted connections
- Read-only operations for safety (SELECT queries only)
- Table schema inspection and metadata retrieval
- SQL injection protection with parameterized queries
- Connection validation and error handling
- Comprehensive logging for debugging
🔧 Configuration Options
Environment Variables
# Basic connection (choose one method)
MSSQL_CONNECTION_STRING="server=localhost;database=mydb;uid=user;pwd=pass"
# OR individual components:
MSSQL_SERVER=localhost
MSSQL_DATABASE=mydb
MSSQL_USERNAME=your_user
MSSQL_PASSWORD=your_password
# Optional settings
MSSQL_PORT=1433 # Custom port (default: 1433)
MSSQL_ENCRYPT=true # Enable encryption (true/false)
🛠️ Available Tools
1. execute_query
Execute SELECT queries on the database.
Parameters:
query(string): SQL SELECT statementparameters(array, optional): Query parameters for safe parameterization
Example:
SELECT TOP 10 * FROM Users WHERE Department = ?
2. list_tables
List all tables in the database with their schemas.
3. describe_table
Get detailed schema information for a specific table.
Parameters:
table_name(string): Name of the table to describe
4. get_table_sample
Retrieve a sample of data from a table.
Parameters:
table_name(string): Name of the tablelimit(integer, optional): Number of rows to return (default: 10)
🔒 Security Features
- Read-only access: Only SELECT operations are allowed
- SQL injection protection: All queries use parameterized statements
- Input validation: Table names and queries are validated
- Connection encryption: Supports encrypted connections
- Error sanitization: Database errors are sanitized before returning
📦 Installation Methods
Method 1: PyPI (Recommended)
pip install mssql-mcp-server-ishaan
Method 2: From Source
git clone https://github.com/ishaan119/mssql_mcp_server.git
cd mssql_mcp_server
pip install -e .
🧪 Testing the Installation
# Test import
python -c "import mssql_mcp_server_ishaan; print('✅ Package imported successfully!')"
# Run the server (requires connection string)
python -m mssql_mcp_server_ishaan
# Or use the command-line script
mssql_mcp_server_ishaan
🐛 Troubleshooting
Common Issues
-
Python Version Error
ERROR: Requires-Python >=3.11Solution: Upgrade to Python 3.11 or higher
brew install python@3.12 # macOS
-
FreeTDS Not Found
error: Microsoft SQL Server Native ClientSolution: Install FreeTDS
brew install freetds # macOS
-
Connection Issues
- Verify your connection string format
- Check firewall settings
- Ensure SQL Server allows remote connections
- Try adding
trustServerCertificate=truefor self-signed certificates
Debug Mode
Enable detailed logging by setting the log level:
export PYTHONPATH=.
python -c "
import logging
logging.basicConfig(level=logging.DEBUG)
import mssql_mcp_server_ishaan
"
📚 Example Usage
Basic Query
{
"tool": "execute_query",
"arguments": {
"query": "SELECT TOP 5 CustomerID, CompanyName FROM Customers"
}
}
Parameterized Query
{
"tool": "execute_query",
"arguments": {
"query": "SELECT * FROM Orders WHERE CustomerID = ? AND OrderDate > ?",
"parameters": ["ALFKI", "2023-01-01"]
}
}
Table Information
{
"tool": "describe_table",
"arguments": {
"table_name": "Customers"
}
}
🤝 Contributing
This is a fork of the original mssql_mcp_server by Richard Han.
Development Setup
git clone https://github.com/ishaan119/mssql_mcp_server.git
cd mssql_mcp_server
pip install -e ".[dev]"
Running Tests
pytest
📄 License
MIT License - see LICENSE file for details.
🔗 Links
- PyPI Package: https://pypi.org/project/mssql-mcp-server-ishaan/
- Original Repository: https://github.com/RichardHan/mssql_mcp_server
- Model Context Protocol: https://modelcontextprotocol.io/
📈 Version History
- v0.1.3: Current stable version with Python 3.11+ support
- v0.1.2: Attempted Python 3.10+ support
- v0.1.1: Attempted Python 3.9+ support
- v0.1.0: Initial release with Python 3.11+ requirement
Note: This package requires Python 3.11+ due to the Model Context Protocol (MCP) library dependency. For the best experience, use Python 3.12.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mssql_mcp_server_ishaan-0.1.7.tar.gz.
File metadata
- Download URL: mssql_mcp_server_ishaan-0.1.7.tar.gz
- Upload date:
- Size: 39.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b9b60aa5ad685c8ba5794cc637855ccfab3f6b6c0013325b5e987e178094ec8
|
|
| MD5 |
35264d4ed94462c2e16742c50f43ec86
|
|
| BLAKE2b-256 |
5d3c631dad0a04cdc42be91c0357b294aa6384d5c3169b1a714b40f6fc18da9b
|
File details
Details for the file mssql_mcp_server_ishaan-0.1.7-py3-none-any.whl.
File metadata
- Download URL: mssql_mcp_server_ishaan-0.1.7-py3-none-any.whl
- Upload date:
- Size: 8.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
368fa4de7365db5b817802ce7e568b336799b4f5d9b6360c8ea6f1757c025893
|
|
| MD5 |
f6695bd4fce99be0af1e8c90739d7745
|
|
| BLAKE2b-256 |
f35de8ae71dda90501f9470e9d045572489ba84a53253560f658b973c3679376
|