mssql_mcp_server

DominikWoh/mssql_mcp_server

3.3

If you are the rightful owner of mssql_mcp_server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

The MSSQL MCP Server is a minimal, read-only MCP-compatible STDIO server designed for interacting with MS SQL databases.

Tools
4
Resources
0
Prompts
0

SQL MCP Openwebui

MSSQL MCP Server

Ein minimaler, rein lesender Server der das Model Context Protocol (MCP) über STDIO oder optional per HTTP bereitstellt. Das Projekt bietet eine kleine Sammlung von Tools, um Daten aus einer Microsoft SQL Server Datenbank abzufragen, ohne Schreibzugriff zu erlauben.

Features

  • Reiner Lesezugriff – nur SELECT-Statements sind erlaubt; DDL/DML/EXEC werden blockiert.
  • Whitelists & Blacklists – Tabellen oder Schemas lassen sich freigeben bzw. sperren; Spalten und Regex‑Muster können verboten werden.
  • Ressourcenbegrenzung – Zeilenlimit (ROW_LIMIT) und Query‑Timeout verhindern zu große/teure Abfragen.
  • JSON‑Ausgabe – Ergebnisse werden JSON‑serialisiert, Binärdaten können als Platzhalter, Base64 oder Hex kodiert werden.
  • Tools – u. a. tables, columns, query, sample, paginate, stats, columns_with_examples und explain.

Installation

git clone https://github.com/DominikWoh/mssql_mcp_server
cd mssql_mcp_server
./scripts/install.sh             # legt venv an und installiert Abhängigkeiten
cp .env.example .env             # Zugangsdaten & Limits anpassen
source .venv/bin/activate        # virtuelle Umgebung aktivieren
pip install --upgrade pip setuptools wheel
pip install -r requirements.txt 2>/dev/null || true
pip install fastapi 'uvicorn[standard]'

Konfiguration

Die Verbindung und Sicherheitsregeln werden über Umgebungsvariablen in .env gesteuert:

VariableBeschreibung
MSSQL_SERVERHost und Port, z. B. 192.168.0.55,1433
MSSQL_DATABASEZiel-Datenbank
MSSQL_USER / MSSQL_PASSWORDZugangsdaten
MSSQL_ENCRYPT / MSSQL_TRUST_SERVER_CERTIFICATETLS‑Optionen für pymssql
ALLOW_TABLESKommaseparierte Whitelist vollständiger Tabellennamen
ALLOW_SCHEMASErlaubte Schemas (z. B. dbo)
DENY_COLUMNSVerbotene Spaltennamen (schema.table.col, *.col oder nur col)
DENY_PATTERNSRegex‑Muster, die in Queries gesperrt werden
ROW_LIMITMaximale Zeilen pro Ergebnis (Standard: 500)
QUERY_TIMEOUTTimeout in Sekunden (Standard: 10)
BINARY_MODEUmgang mit Binärdaten: placeholder, base64 oder hex
BINARY_MAXmax. Bytes, die bei Binärdaten kodiert werden
LOG_LEVELINFO oder DEBUG

Server starten

STDIO

printf '{"action":"ping"}\n' | mssql-mcp

Der Prozess liest JSON‑Zeilen von stdin und gibt Antworten auf stdout aus.

HTTP

uvicorn mssql_mcp_server.http:app --host 0.0.0.0 --port 8000

Anfragen erfolgen als POST /mcp mit einem JSON‑Body der gleichen Form wie bei STDIO.

Unterstützte Aktionen

AktionParameterBeschreibung
pingHealth‑Check
toolsLiefert eine Übersicht aller Werkzeuge
tablesListe freigegebener Tabellen
columnstableSpalten-Metadaten einer Tabelle
columns_with_examplestable, n (opt.)Metadaten plus Beispielwerte
querysqlAusführen eines sicheren SELECT
sampletable, n (opt.)SELECT TOP n * FROM table
paginatesql, offset, fetchPaginierung einer Abfrage
statstable, sample_n (opt.)Zeilenanzahl + Sample
explainsqlHeuristische Analyse einer Query

Systemd Integration

Für einen dauerhaften Dienst steht eine Beispiel‑Unit zur Verfügung:

sudo cp scripts/mssql-mcp.service /etc/systemd/system/
sudo systemctl enable --now mssql-mcp

Der Service erwartet den Code und die virtuelle Umgebung unter /opt/mssql-mcp.

Entwicklung

Das Projekt nutzt pymssql, pydantic und python-dotenv. Mit pip install -e . werden alle Abhängigkeiten installiert.