Python MSSQL MCP Server

by amornpan

Not rated
GitHub

About

A Python MCP server for Microsoft SQL Server, enabling schema inspection and SQL query execution.

Details

Author
amornpan
Categories
Database

Setup

Install Python MSSQL MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/amornpan/py-mcp-mssql

Follow the installation instructions in the repository README, then restart your MCP client.

A Model Context Protocol server implementation in Python that provides access to Microsoft SQL Server databases. This server enables Language Models to inspect table schemas and execute SQL queries through a standardized interface.

- Asynchronous operation using Python'sasyncio
- Environment-based configuration usingpython-dotenv
- Comprehensive logging system
- Connection pooling and management via pyodbc
- Error handling and recovery
- FastAPI integration for API endpoints
- Pydantic models for data validation
- MSSQL connection handling with ODBC Driver

- Python 3.x
- Required Python packages:

- pyodbc
- pydantic
- python-dotenv
- mcp-server

git clone https://github.com/amornpan/py-mcp-mssql.git cd py-mcp-mssql pip install -r requirements.txt

The screenshot above demonstrates the server being used with Claude to analyze and visualize SQL data.

PY-MCP-MSSQL/ ├── src/ │ └── mssql/ │ ├── __init__.py │ └── server.py ├── tests/ │ ├── __init__.py │ ├── test_mssql.py │ └── test_packages.py ├── .env ├── .env.example ├── .gitignore ├── README.md └── requirements.txt

- src/mssql/- Main source code directory

- __init__.py- Package initialization
- server.py- Main server implementation

- __init__.py- Test package initialization
- test_mssql.py- MSSQL functionality tests
- test_packages.py- Package dependency tests

MSSQL_SERVER=your_server MSSQL_DATABASE=your_database MSSQL_USER=your_username MSSQL_PASSWORD=your_password MSSQL_DRIVER={ODBC Driver 17 for SQL Server}
@app.list_resources() async def list_resources() -> list[Resource]

- Lists all available tables in the database
- Returns table names with URIs in the formatmssql://<table_name>/data
- Includes table descriptions and MIME types

@app.read_resource() async def read_resource(uri: AnyUrl) -> str

- Reads data from specified table
- Accepts URIs in the formatmssql://<table_name>/data
- Returns first 100 rows in CSV format
- Includes column headers

@app.call_tool() async def call_tool(name: str, arguments: dict) -> list[TextContent]

- Executes SQL queries
- Supports both SELECT and modification queries
- Returns results in CSV format for SELECT queries
- Returns affected row count for modification queries

Add to your Claude Desktop configuration:

On MacOS:~/Library/Application Support/Claude/claude_desktop_config.jsonOn Windows:%APPDATA%/Claude/claude_desktop_config.json

{ "mcpServers": { "mssql": { "command": "python", "args": [ "server.py" ], "env": { "MSSQL_SERVER": "your_server", "MSSQL_DATABASE": "your_database", "MSSQL_USER": "your_username", "MSSQL_PASSWORD": "your_password", "MSSQL_DRIVER": "{ODBC Driver 17 for SQL Server}" } } } }

The server implements comprehensive error handling for:

- Database connection failures
- Invalid SQL queries
- Resource access errors
- URI validation
- Tool execution errors

All errors are logged and returned with appropriate error messages.

- Environment variable based configuration
- Connection string security
- Result set size limits
- Input validation through Pydantic
- Proper SQL query handling

Feel free to reach out to me if you have any questions about this project or would like to collaborate!

Made with ❤️ by Amornpan Phornchaicharoen

This project is licensed under the MIT License - see theLICENSEfile for details.
- Fork the repository
- Create your feature branch (git checkout -b feature/amazing-feature)
- Commit your changes (git commit -m 'Add some amazing feature')
- Push to the branch (git push origin feature/amazing-feature)
- Open a Pull Request

fastapi>=0.104.1 pydantic>=2.10.6 uvicorn>=0.34.0 python-dotenv>=1.0.1 pyodbc>=4.0.35 anyio>=4.5.0 mcp==1.2.0

These versions have been tested and verified to work together. The key components are:

- fastapianduvicornfor the API server
- pydanticfor data validation
- pyodbcfor SQL Server connectivity
- mcpfor Model Context Protocol implementation
- python-dotenvfor environment configuration
- anyiofor asynchronous I/O support

- Microsoft SQL Server team for ODBC drivers
- Python pyodbc maintainers
- Model Context Protocol community
- Contributors to the python-dotenv project

Official Airtable MCP server and skills for working with bases, records, workflows, and business operations from AI agents.

MCP Server For Apache Doris, an MPP-based real-time data warehouse.

Official MCP Server from Atlan which enables you to bring the power of metadata to your AI tools

Query Onchain data, like ERC20 tokens, transaction history, smart contract state.

Read and write access to your Baserow tables.

Introspect and query your apps deployed to Convex.

Interact with the data stored in Couchbase clusters using natural language.

Maritime intelligence for tracking vessels, analysing ports, and exploring ship data.

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.