MCP server for Microsoft SQL Server databases
Project description
pymssql-mcp
An MCP (Model Context Protocol) server for Microsoft SQL Server databases. Enables AI assistants like Claude to interact with SQL Server through a standardized protocol.
Features
- Natural Language Queries: Ask Claude about your data in plain English
- Schema Discovery: Explore tables, views, columns, and relationships
- CRUD Operations: Read, insert, update, and delete rows safely
- Stored Procedures: Execute stored procedures with parameters
- Multi-Database Support: List and switch between databases
- Data Export: Export query results to JSON or CSV files
- Transaction Support: Begin, commit, and rollback transactions
- Knowledge Persistence: Claude remembers what it learns about your database
- Safety Controls: Read-only mode, command blocking, row limits, schema restrictions
- Connection Watchdog: Automatic recovery from hung connections
- OAuth Integration: Deploy as a Claude.ai Custom Connector with SSO
Documentation
| Guide | Description |
|---|---|
| What is MCP? | Understanding MCP and pymssql-mcp |
| Installation | Complete installation guide |
| Quickstart | Get running in 10 minutes |
| Configuration | All configuration options |
| Tools Reference | Detailed tool documentation |
| Usage Examples | Common usage patterns |
| OAuth Setup | Claude.ai integration with SSO |
Quick Start
1. Install
pip install pymssql-mcp
2. Configure Claude Desktop
Edit your Claude Desktop config file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"mssql": {
"command": "pymssql-mcp",
"env": {
"MSSQL_HOST": "your-server.example.com",
"MSSQL_USER": "your-username",
"MSSQL_PASSWORD": "your-password",
"MSSQL_DATABASE": "your-database",
"MSSQL_READ_ONLY": "true"
}
}
}
}
3. Restart Claude Desktop
Quit and reopen Claude Desktop. You'll see a hammer icon indicating tools are available.
4. Start Chatting
Ask Claude about your database:
"What tables are available?"
"Describe the Customers table"
"Show me the top 10 orders by total amount"
"How many customers do we have in each state?"
Available Tools
Connection & Database
| Tool | Description |
|---|---|
connect |
Connect to the database |
disconnect |
Close all connections |
list_databases |
List available databases |
switch_database |
Switch database context |
Queries & Schema
| Tool | Description |
|---|---|
execute_query |
Run a SELECT query |
validate_query |
Check if a query is safe |
list_tables |
List tables and views |
describe_table |
Get column information |
CRUD Operations
| Tool | Description |
|---|---|
read_rows |
Read rows by ID or filter |
insert_row |
Insert a new row |
update_row |
Update an existing row |
delete_row |
Delete a row |
Stored Procedures
| Tool | Description |
|---|---|
list_stored_procs |
List available procedures |
describe_stored_proc |
Get procedure parameters |
call_stored_proc |
Execute a procedure |
Export & Transactions
| Tool | Description |
|---|---|
export_to_json |
Export results to JSON |
export_to_csv |
Export results to CSV |
begin_transaction |
Start a transaction |
commit_transaction |
Commit changes |
rollback_transaction |
Rollback changes |
Knowledge Persistence
| Tool | Description |
|---|---|
save_knowledge |
Save learned information |
get_all_knowledge |
Retrieve all knowledge |
search_knowledge |
Search saved knowledge |
Configuration
Required Variables
| Variable | Description |
|---|---|
MSSQL_HOST |
SQL Server hostname |
MSSQL_USER |
Database username |
MSSQL_PASSWORD |
Database password |
MSSQL_DATABASE |
Database name |
Safety Settings
| Variable | Default | Description |
|---|---|---|
MSSQL_READ_ONLY |
false |
Block all write operations |
MSSQL_MAX_ROWS |
1000 |
Maximum rows per query |
MSSQL_BLOCKED_COMMANDS |
DROP,TRUNCATE,... |
Commands to block |
MSSQL_ALLOWED_SCHEMAS |
(all) | Restrict to specific schemas |
MSSQL_BLOCKED_DATABASES |
(none) | Hide specific databases |
See Configuration Reference for all options.
Deployment Modes
Local (Default)
Run as a local process with Claude Desktop:
pymssql-mcp
HTTP/SSE Server
Run as a shared HTTP server for multiple users:
pymssql-mcp --http --host 0.0.0.0 --port 8080
Streamable HTTP (Claude.ai Integration)
Run with OAuth authentication for Claude.ai:
pymssql-mcp --streamable-http --host 0.0.0.0 --port 8080
See OAuth Setup for complete integration instructions.
Development
# Clone repository
git clone https://github.com/bpamiri/pymssql-mcp.git
cd pymssql-mcp
# Install with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Lint and format
ruff check .
ruff format .
# Type check
mypy src/
Security
pymssql-mcp includes multiple safety features:
- Read-only mode: Prevent all write operations
- Command blocking: Block dangerous SQL commands (DROP, TRUNCATE, etc.)
- Schema restrictions: Limit access to specific schemas
- Database blocklist: Hide sensitive databases
- Row limits: Cap query results to prevent memory issues
- Query validation: Analyze queries before execution
- Parameterized queries: Prevent SQL injection
See SECURITY.md for security policy and best practices.
Contributing
Contributions are welcome! See CONTRIBUTING.md for guidelines.
License
Apache-2.0. See LICENSE for details.
Links
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pymssql_mcp-0.4.2.tar.gz.
File metadata
- Download URL: pymssql_mcp-0.4.2.tar.gz
- Upload date:
- Size: 82.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ad4de7dbc815479f739b2ac7ff87b7b4a435bfdbf83c300f1a285a2a1cded6e1
|
|
| MD5 |
fb69f5a59578054e01f7ca86d2771994
|
|
| BLAKE2b-256 |
17a72a8727d8f543f41ec80460d45b5ee269d7d550793bf732ecb2845480809a
|
File details
Details for the file pymssql_mcp-0.4.2-py3-none-any.whl.
File metadata
- Download URL: pymssql_mcp-0.4.2-py3-none-any.whl
- Upload date:
- Size: 64.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f3241a86badaca968640e5e80639255721698ae6b5d82ba5f6fa6253dc7c4777
|
|
| MD5 |
f9edefc7d3dbaac2ddb70f27f6905210
|
|
| BLAKE2b-256 |
6b85b0a8941e46e555064b65087dae3f15cc9fbf4aaccb920c41e896dad6615c
|