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.0.tar.gz (82.6 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.0-py3-none-any.whl (64.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pymssql_mcp-0.4.0.tar.gz
  • Upload date:
  • Size: 82.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pymssql_mcp-0.4.0.tar.gz
Algorithm Hash digest
SHA256 fffb2602d6a43a5415fbfe41e4752ca0aef1e3ef1a15074aaa0e88f93f2c2f8c
MD5 7906d85734b5a307faab3bb1380d5e82
BLAKE2b-256 8af8baf4ae16cdf536ecf29c1b055e785164557d13d53ad8c1e9b8d0f29453d1

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymssql_mcp-0.4.0.tar.gz:

Publisher: publish.yml on bpamiri/pymssql-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: pymssql_mcp-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 64.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pymssql_mcp-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6fa77ca9a73d20572f3f8091895ef3c6ba8762bbbca156df180dbd728390a448
MD5 5497a0ddaf2e9bb9ea6d7aadd8fd5853
BLAKE2b-256 cf265c642c654458e19063ebb1daa788f71a3d74b459ffd4245163ba06215404

See more details on using hashes here.

Provenance

The following attestation bundles were made for pymssql_mcp-0.4.0-py3-none-any.whl:

Publisher: publish.yml on bpamiri/pymssql-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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