mssql-mcp-server-ishaan
0.1.7

A Model Context Protocol (MCP) server that enables secure interaction with Microsoft SQL Server databases.

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.