Skip to main content
Glama
GarfieldHuang

mssql-mcp-server-python

mssql-mcp-server-python

A read-only MCP (Model Context Protocol) server for MS SQL Server, written in Python. Lets AI agents query your database safely — no writes, no stored procedures, no shell access.

Features

  • Read-only — only SELECT queries allowed

  • Two modes — stdio (local) or HTTP + JWT (remote)

  • Official driver — uses pyodbc with system ODBC driver

  • No third-party auth libraries — JWT verified with Python built-in hmac + hashlib

  • Query safety — blocks dangerous keywords, requires TOP or WHERE

Related MCP server: MSSQL MCP Python Server

Tools exposed to AI agents

Tool

Description

list_tables

List all tables in the database

describe_table

Show columns and types for a table

query

Run a read-only SELECT query

Requirements

  • Python >= 3.11

  • ODBC Driver for SQL Server installed on the machine

Check available ODBC drivers:

python -c "import pyodbc; print(pyodbc.drivers())"

If none installed, download from: https://learn.microsoft.com/sql/connect/odbc/download-odbc-driver-for-sql-server

Installation

Step 1 — Clone the repo:

git clone https://github.com/GarfieldHuang/mssql-mcp-server-python.git
cd mssql-mcp-server-python

Step 2 — Install Python dependencies:

pip install -r requirements.txt

Step 3 — Set up environment variables:

copy .env.example .env

Open .env and fill in your DB credentials and API_KEY.

Step 4 — Generate API_KEY:

python -c "import secrets; print(secrets.token_hex(32))"

Paste the output into .env as API_KEY=....

Usage

Stdio mode — 本機 AI agent 使用

Stdio 模式不需要手動啟動 server。AI agent(如 Claude Code)會在需要時自動啟動 server.py,透過 stdin/stdout 溝通,用完自動關閉。

claude_desktop_config.json 登記一次即可:

{
  "mcpServers": {
    "mssql": {
      "command": "python",
      "args": ["C:\\path\\to\\server.py"]
    }
  }
}

登記後重啟 Claude Code,即可直接用自然語言查詢資料庫,無需手動執行任何指令。

HTTP mode — 遠端 AI agent 使用

如果 AI agent 在其他機器上,需要改用 HTTP 模式。在能連到 MSSQL 的機器上執行:

python server.py --http

Server 會持續在背景執行(保持 cmd 視窗開著),監聽 HTTP_PORT(預設 3000)。
遠端 agent 透過 HTTPS + JWT token 連線:

POST http://your-server:3000/mcp
Authorization: Bearer <jwt-token>

Testing

Three test JSON files are included. Before running, edit each file and replace your-api-key with the value from your .env.

Step 1 — Check server starts and lists tools:

python server.py < test-list-tools.json

Expected output: JSON with query, list_tables, describe_table.

Step 2 — List tables in your database:

python server.py < test-list-tables.json

Expected output: JSON array of table names.

Step 3 — Run a query:

Edit test-query.json and replace your_table with a real table name, then:

python server.py < test-query.json

Expected output: JSON array of rows.

Windows tip: If < redirection doesn't work in cmd, use PowerShell:

Get-Content test-query.json | python server.py

Environment variables

Variable

Required

Description

DB_SERVER

Yes

MSSQL hostname or IP

DB_PORT

No

Default: 1433

DB_DATABASE

Yes

Database name

DB_USER

Yes

DB username (use a read-only account)

DB_PASSWORD

Yes

DB password

DB_DRIVER

No

ODBC driver name, default: ODBC Driver 18 for SQL Server

API_KEY

Yes

Secret key agents must pass in tool calls

HTTP_PORT

No

HTTP mode port, default: 3000

JWT_SECRET

HTTP only

Secret for JWT verification

Create a read-only DB user (MSSQL)

CREATE LOGIN mcp_agent WITH PASSWORD = 'strong-password';
CREATE USER mcp_agent FOR LOGIN mcp_agent;
EXEC sp_addrolemember 'db_datareader', 'mcp_agent';

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Read-only MCP server for querying PostgreSQL, MySQL, and SQLite from AI agents — multi-database, safe by default.
    4
    17 npm
    1
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that provides safe, read-only SQL access for AI agents to query databases (PostgreSQL, MySQL, SQLite) with schema awareness and guardrails.
    5 npm
    MIT