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.10+
  • 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.2.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.2-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: sql_mcp_server-0.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 0da7cf33da691c6e322a112968252380ee5a345c97006b854a6ca27a88341828
MD5 75457770068c867d61570ff0e7a39843
BLAKE2b-256 b297d7a0b53d804cdb6f7d62415ae8b6377b6379c23a0dc8f0792a2b7438456e

See more details on using hashes here.

Provenance

The following attestation bundles were made for sql_mcp_server-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: sql_mcp_server-0.1.2-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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 0ffed3d25192d6259d290b9cb1b2404b848106c55e87799f2566ffad8376f7dc
MD5 ed55e9af5a360680c78ffed97e744ffd
BLAKE2b-256 e62a7e0237f8e56eafd7ab321bef77376e6ed6cf6aa59660b74d869b387233c0

See more details on using hashes here.

Provenance

The following attestation bundles were made for sql_mcp_server-0.1.2-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