Skip to main content

MCP server that connects Claude to a Microsoft SQL Server database

Project description

SQL Assistant MCP Server

Connects Claude to a Microsoft SQL Server database over stdio. Ask Claude to query your database, inspect table structures, or preview execution plans — without leaving the chat.


Installation

pip install sql-mcp-server

You also need the ODBC Driver for SQL Server:
https://learn.microsoft.com/en-us/sql/connect/odbc/download-odbc-driver-for-sql-server


Tools

list_tables : Lists all user-created tables, grouped by schema.

describe_table : Shows columns, data types, nullability, and defaults for a table.

run_query : Runs a SELECT query and returns results. Write operations (INSERT, UPDATE, DELETE, DROP, etc.) are blocked.

explain_query : Returns SQL Server's estimated execution plan via SET SHOWPLAN_TEXT. Good to run before a slow or unfamiliar query.

get_table_sample : Returns the first N rows from a table (max 20, default 5). Pass rows=10 for more.


Project Structure

sql-mcp-server/
├── server.py          # MCP server and tool definitions
├── db.py              # SQL Server connection helper (loads .env)
├── pyproject.toml     # Project metadata and dependencies
├── uv.lock            # Locked dependency versions (uv)
├── .env               # Connection config (not committed)
└── README.md

Setup

1. Configure the database connection

Create a .env file in the project root:

Windows Authentication:

DB_DRIVER=ODBC Driver 17 for SQL Server
DB_SERVER=YOUR_SERVER_NAME\SQLEXPRESS
DB_NAME=your_database_name

SQL Server Authentication:

DB_DRIVER=ODBC Driver 17 for SQL Server
DB_SERVER=YOUR_SERVER_NAME\SQLEXPRESS
DB_NAME=your_database_name
DB_USER=your_username
DB_PASSWORD=your_password

If you're using the Claude Desktop config below, put credentials in the env block — no .env file needed.


2. Register with Claude Desktop

Add this to claude_desktop_config.json — usually at %APPDATA%\Claude\claude_desktop_config.json on Windows.

Method 1 — Installed from PyPI (Recommended)

Windows Authentication:

{
  "mcpServers": {
    "sql-assistant": {
      "command": "sql-mcp-server",
      "args": [],
      "env": {
        "DB_SERVER": "YOUR_SERVER_NAME\\\\SQLEXPRESS",
        "DB_NAME": "your_database_name",
        "DB_DRIVER": "ODBC Driver 17 for SQL Server"
      }
    }
  }
}

SQL Server Authentication:

{
  "mcpServers": {
    "sql-assistant": {
      "command": "sql-mcp-server",
      "args": [],
      "env": {
        "DB_SERVER": "YOUR_SERVER_NAME\\\\SQLEXPRESS",
        "DB_NAME": "your_database_name",
        "DB_DRIVER": "ODBC Driver 17 for SQL Server",
        "DB_USER": "your_username",
        "DB_PASSWORD": "your_password"
      }
    }
  }
}

Method 2 — Run with uvx (no install)

{
  "mcpServers": {
    "sql-assistant": {
      "command": "uvx",
      "args": ["sql-mcp-server"],
      "env": {
        "DB_SERVER": "YOUR_SERVER_NAME\\\\SQLEXPRESS",
        "DB_NAME": "your_database_name",
        "DB_DRIVER": "ODBC Driver 17 for SQL Server",
        "DB_USER": "your_username",
        "DB_PASSWORD": "your_password"
      }
    }
  }
}

Method 3 — Local Installation (For Development)

If you cloned the repository and want to run it from source, use uv and specify the absolute path to your project directory.

Windows Authentication:

{
  "mcpServers": {
    "sql-assistant": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/path/to/sql-mcp-server",
        "run",
        "server.py"
      ],
      "env": {
        "DB_SERVER": "YOUR_SERVER_NAME\\\\SQLEXPRESS",
        "DB_NAME": "your_database_name",
        "DB_DRIVER": "ODBC Driver 17 for SQL Server"
      }
    }
  }
}

SQL Server Authentication:

{
  "mcpServers": {
    "sql-assistant": {
      "command": "uv",
      "args": [
        "--directory",
        "C:/path/to/sql-mcp-server",
        "run",
        "server.py"
      ],
      "env": {
        "DB_SERVER": "YOUR_SERVER_NAME\\\\SQLEXPRESS",
        "DB_NAME": "your_database_name",
        "DB_DRIVER": "ODBC Driver 17 for SQL Server",
        "DB_USER": "your_username",
        "DB_PASSWORD": "your_password"
      }
    }
  }
}

Replace C:/path/to/sql-mcp-server with the actual path to your cloned repo.

Replace all placeholder values with your actual credentials. Restart Claude Desktop after saving.


Usage

With the server connected, try asking Claude:

  • "What tables are in the database?"
  • "Describe the Orders table."
  • "Show me 10 rows from Customers."
  • "Run: SELECT TOP 5 * FROM Sales.Orders WHERE Status = 'Pending'"
  • "Explain this query: SELECT * FROM Products WHERE Price > 100"

Safety

Only SELECT queries run. These keywords are blocked before reaching the database:

INSERT UPDATE DELETE DROP TRUNCATE ALTER CREATE EXEC

Table and schema names are validated against injection patterns. Results are capped at 200 rows.

⚠️ Don't commit your .env file — it contains your connection credentials.


Requirements

  • Python 3.12+
  • SQL Server with ODBC Driver 17 or 18
  • Claude Desktop with MCP support

License

MIT

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

sql_mcp_server-0.1.1.tar.gz (44.5 kB view details)

Uploaded Source

Built Distribution

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

sql_mcp_server-0.1.1-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file sql_mcp_server-0.1.1.tar.gz.

File metadata

  • Download URL: sql_mcp_server-0.1.1.tar.gz
  • Upload date:
  • Size: 44.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sql_mcp_server-0.1.1.tar.gz
Algorithm Hash digest
SHA256 a6e77d18c2490b7d0cb3b626cc353aa2ae358935cd1a606089534da6ea978cba
MD5 8e15fa5f0d7e0999b2857788d3a67a96
BLAKE2b-256 5586fff6f344e4970c6ccb3d3db14f150005ad740da145777fc3e4f3d9f62eac

See more details on using hashes here.

Provenance

The following attestation bundles were made for sql_mcp_server-0.1.1.tar.gz:

Publisher: publish.yml on snehangshu2002/sql-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file sql_mcp_server-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sql_mcp_server-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for sql_mcp_server-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 aca0666515b624b03fbc4a721bec6985e21a8c4aa73b4247bd9c54c776e4dbb8
MD5 51d8e03d027c167e85360fecc2c26b41
BLAKE2b-256 378e16286edcf84695f32e0f5a240f678a33c9e2021cab41c698466cd5267cc5

See more details on using hashes here.

Provenance

The following attestation bundles were made for sql_mcp_server-0.1.1-py3-none-any.whl:

Publisher: publish.yml on snehangshu2002/sql-mcp-server

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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