Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Python MSSQL MCP Servershow me the schema for the customers table"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Python MSSQL MCP Server
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.
Features
Core Functionality
Asynchronous operation using Python's
asyncioEnvironment-based configuration using
python-dotenvComprehensive 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
Prerequisites
Python 3.x
Required Python packages:
pyodbc
pydantic
python-dotenv
mcp-server
ODBC Driver 17 for SQL Server
Installation
Screenshots

The screenshot above demonstrates the server being used with Claude to analyze and visualize SQL data.
Project Structure
Directory Structure Explanation
src/mssql/- Main source code directory__init__.py- Package initializationserver.py- Main server implementation
tests/- Test files directory__init__.py- Test package initializationtest_mssql.py- MSSQL functionality teststest_packages.py- Package dependency tests
.env- Environment configuration file (not in git).env.example- Example environment configuration.gitignore- Git ignore rulesREADME.md- Project documentationrequirements.txt- Project dependencies
Configuration
Create a .env file in the project root:
API Implementation Details
Resource Listing
Lists all available tables in the database
Returns table names with URIs in the format
mssql://<table_name>/dataIncludes table descriptions and MIME types
Resource Reading
Reads data from specified table
Accepts URIs in the format
mssql://<table_name>/dataReturns first 100 rows in CSV format
Includes column headers
SQL Execution
Executes SQL queries
Supports both SELECT and modification queries
Returns results in CSV format for SELECT queries
Returns affected row count for modification queries
Usage with Claude Desktop
Add to your Claude Desktop configuration:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
Error Handling
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.
Security Features
Environment variable based configuration
Connection string security
Result set size limits
Input validation through Pydantic
Proper SQL query handling
Contact Information
Amornpan Phornchaicharoen
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
License
This project is licensed under the MIT License - see the LICENSE file for details.
Author
Amornpan Phornchaicharoen
Contributing
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
Requirements
Create a requirements.txt file with:
These versions have been tested and verified to work together. The key components are:
fastapianduvicornfor the API serverpydanticfor data validationpyodbcfor SQL Server connectivitymcpfor Model Context Protocol implementationpython-dotenvfor environment configurationanyiofor asynchronous I/O support
Acknowledgments
Microsoft SQL Server team for ODBC drivers
Python pyodbc maintainers
Model Context Protocol community
Contributors to the python-dotenv project