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=true              # Enable encryption (true/false)

🛠️ 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.7.tar.gz (39.9 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.7-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

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

Hashes for mssql_mcp_server_ishaan-0.1.7.tar.gz
Algorithm Hash digest
SHA256 7b9b60aa5ad685c8ba5794cc637855ccfab3f6b6c0013325b5e987e178094ec8
MD5 35264d4ed94462c2e16742c50f43ec86
BLAKE2b-256 5d3c631dad0a04cdc42be91c0357b294aa6384d5c3169b1a714b40f6fc18da9b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for mssql_mcp_server_ishaan-0.1.7-py3-none-any.whl
Algorithm Hash digest
SHA256 368fa4de7365db5b817802ce7e568b336799b4f5d9b6360c8ea6f1757c025893
MD5 f6695bd4fce99be0af1e8c90739d7745
BLAKE2b-256 f35de8ae71dda90501f9470e9d045572489ba84a53253560f658b973c3679376

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