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.6.tar.gz (39.8 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.6-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: mssql_mcp_server_ishaan-0.1.6.tar.gz
  • Upload date:
  • Size: 39.8 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.6.tar.gz
Algorithm Hash digest
SHA256 cc15e62b26de76acd0910cc61713faa356b54b63d5edf2f285c2226b8850225a
MD5 5eb08064a263d173cc57d0cdbecccef4
BLAKE2b-256 d1bd50b90a27e244a9a28267072d9e9cc5765733e982a7b973ab0740509a489a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mssql_mcp_server_ishaan-0.1.6-py3-none-any.whl
Algorithm Hash digest
SHA256 6a139eb8ba0abfb9b0261a5a145700f5108a58e9c9a06f333a94971ce88ed64e
MD5 6a4af1ca5db4746acd2afea5b234e858
BLAKE2b-256 32fe257fdfab9a6b18f984308524dab6a19ed616d8033d44f6ce236a55c0aa19

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