MCP → Local MSSQL Server
Exposes SQL Server stored procedures as tools for LLM clients (Claude Desktop, VS Code, Cursor, etc.) enabling direct database interaction through natural language.
README
MCP → Local MSSQL Server
A local MCP server that exposes SQL Server stored procedures as tools for LLM clients (Claude Desktop, VS Code, Cursor, etc.).
Files in this project
| File | Purpose |
|---|---|
mssql_server.py |
The MCP server — all tools live here |
usp_SalesReport.sql |
Sample table + stored procedure to run in SQL Server |
requirements.txt |
Python dependencies |
.env.example |
Template for your connection credentials |
claude_desktop_config.json |
Drop-in config snippet for Claude Desktop |
Prerequisites
1 — Python 3.10+
python --version
2 — Microsoft ODBC Driver 18 for SQL Server
Windows: Download from https://aka.ms/odbc18
macOS:
brew install msodbcsql18
Linux (Ubuntu/Debian):
curl https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add -
curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list \
| sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo ACCEPT_EULA=Y apt-get install -y msodbcsql18
Setup
Step 1 — Install Python packages
# with uv (recommended)
uv add "mcp[cli]" pyodbc
# or with pip
pip install -r requirements.txt
Step 2 — Create your .env file
cp .env.example .env
# Edit .env and fill in your SQL Server credentials
Step 3 — Create the sample stored procedure (optional)
Open SSMS or Azure Data Studio, switch to your target database,
and run usp_SalesReport.sql. This creates a demo Sales table
and the usp_SalesReport procedure.
Step 4 — Test the server with MCP Inspector
# Load .env first
export $(cat .env | xargs) # macOS/Linux
# On Windows PowerShell: use $env:VAR = "value" for each line
mcp dev mssql_server.py
This opens a browser-based inspector. Call test_connection first
to verify the DB link, then try run_sales_report.
Connecting to Claude Desktop
-
Open (or create)
claude_desktop_config.json:- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Merge the contents of the provided
claude_desktop_config.jsoninto it, replacing/ABSOLUTE/PATH/TO/with the real path tomssql_server.py. -
Restart Claude Desktop. The tools appear in the tools panel.
Tools exposed by the server
test_connection
Verifies the database connection. Returns server version, database name, and server time. Run this first to confirm everything is wired up.
list_procedures
Lists all stored procedures in the connected database.
run_sales_report(start_date, end_date)
Calls dbo.usp_SalesReport. Returns two result sets:
- Row-level sale detail for the date range
- Revenue summary grouped by region
Dates must be in YYYY-MM-DD format.
Adding your own procedures
- Add a new
@mcp.tool()function inmssql_server.py. - Hardcode the procedure name in the
cursor.execute()call — never accept a proc name as a parameter (can't be bound with?). - Bind all user-supplied values with
?placeholders, never f-strings.
@mcp.tool()
def get_customer_orders(customer_id: int) -> dict:
"""Fetch all orders for a customer from dbo.usp_GetCustomerOrders."""
conn = get_connection()
try:
cursor = conn.cursor()
cursor.execute("EXEC dbo.usp_GetCustomerOrders @CustomerID = ?", customer_id)
data = _rows_from_cursor(cursor)
return {"row_count": len(data), "data": data}
except pyodbc.Error as e:
return {"error": str(e)}
finally:
conn.close()
Security notes
- stdio transport runs with the same OS permissions as the host app.
Use a least-privilege SQL login, not
sa. - Store credentials in environment variables or
.env, never in code. - Never commit
.env— add it to.gitignore. TrustServerCertificate=yesis fine for local dev; remove it in production and use a proper TLS certificate.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.