Skip to main content

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)

PyPI License: MIT Python

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=default           # Encryption: 'default', 'off', 'require' (or true/false for compatibility)

🛠️ Available Tools

1. execute_query

Execute SELECT queries on the database.

Parameters:

  • query (string): SQL SELECT statement
  • parameters (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 table
  • limit (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

  1. Python Version Error

    ERROR: Requires-Python >=3.11
    

    Solution: Upgrade to Python 3.11 or higher

    brew install python@3.12  # macOS
    
  2. FreeTDS Not Found

    error: Microsoft SQL Server Native Client
    

    Solution: Install FreeTDS

    brew install freetds  # macOS
    
  3. Connection Issues

    • Verify your connection string format
    • Check firewall settings
    • Ensure SQL Server allows remote connections
    • Try adding trustServerCertificate=true for 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

📈 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

mssql_mcp_server_ishaan-0.1.5.tar.gz (40.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mssql_mcp_server_ishaan-0.1.5-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

Details for the file mssql_mcp_server_ishaan-0.1.5.tar.gz.

File metadata

  • Download URL: mssql_mcp_server_ishaan-0.1.5.tar.gz
  • Upload date:
  • Size: 40.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for mssql_mcp_server_ishaan-0.1.5.tar.gz
Algorithm Hash digest
SHA256 cdec4acbae48c619ad44cb6eb57aa8dcdbb5c8f00d9470e718ce4532e21e0ea1
MD5 0dd0a5554df517886bc150a37d6d1162
BLAKE2b-256 7594f3ca7fdf7e130d8cfe2f2262c3b35ad482c0c1af4e8053a0108002aa96f4

See more details on using hashes here.

File details

Details for the file mssql_mcp_server_ishaan-0.1.5-py3-none-any.whl.

File metadata

File hashes

Hashes for mssql_mcp_server_ishaan-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 6a41851e17990a5644f56af685808547a458b2af9bcbea920e00b69fc14fbdee
MD5 a184c4c15e305412150094f45c9e727f
BLAKE2b-256 d94acd9766ec4f43ff92bf719cae6d58979e6ae94edd8d9471eacf89f9a93d9d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page