Skip to main content

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.

PyPI version Python 3.10+ License: Apache-2.0

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

pymssql_mcp-0.4.2.tar.gz (82.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymssql_mcp-0.4.2-py3-none-any.whl (64.2 kB view details)

Uploaded Python 3

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

Hashes for pymssql_mcp-0.4.2.tar.gz
Algorithm Hash digest
SHA256 ad4de7dbc815479f739b2ac7ff87b7b4a435bfdbf83c300f1a285a2a1cded6e1
MD5 fb69f5a59578054e01f7ca86d2771994
BLAKE2b-256 17a72a8727d8f543f41ec80460d45b5ee269d7d550793bf732ecb2845480809a

See more details on using hashes here.

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

Hashes for pymssql_mcp-0.4.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f3241a86badaca968640e5e80639255721698ae6b5d82ba5f6fa6253dc7c4777
MD5 f9edefc7d3dbaac2ddb70f27f6905210
BLAKE2b-256 6b85b0a8941e46e555064b65087dae3f15cc9fbf4aaccb920c41e896dad6615c

See more details on using hashes here.

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