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.1.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.1-py3-none-any.whl (64.2 kB view details)

Uploaded Python 3

File details

Details for the file pymssql_mcp-0.4.1.tar.gz.

File metadata

  • Download URL: pymssql_mcp-0.4.1.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.1.tar.gz
Algorithm Hash digest
SHA256 88384ecfdd4b735c525883018095aeb7e1024f57fafd04d1e10a77819feaa1a6
MD5 43b912631acd6443bf8bd9a6c79bc4ac
BLAKE2b-256 e09ada648273adbac1f79aa38a8206331a7ffd9f297ff20b1e8511372c313df8

See more details on using hashes here.

File details

Details for the file pymssql_mcp-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: pymssql_mcp-0.4.1-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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 d59aa100eccb9d90915d8b54db7df896dc447fc6d367d96ed06bf9de248432cf
MD5 3ff34311be8c102c0152807ad37615b6
BLAKE2b-256 011b43135497cc2a2a17aa02cda7a88bf329f331560e8b6c77401a7be1efbb22

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