by amornpan
Provides access to Microsoft SQL Server databases via a Model Context Protocol server, enabling language models to inspect schemas and execute SQL queries through a standardized API.
A Python‑based MCP server that connects to Microsoft SQL Server, exposing table schemas and query execution as FastAPI endpoints. It allows language models (e.g., Claude, ChatGPT) to retrieve metadata, read sample data, and run arbitrary SQL statements in a controlled, asynchronous environment.
git clone https://github.com/amornpan/py-mcp-mssql.git
cd py-mcp-mssql
pip install -r requirements.txt
.env file (or copy .env.example) with your MSSQL credentials:
MSSQL_SERVER=your_server
MSSQL_DATABASE=your_database
MSSQL_USER=your_username
MSSQL_PASSWORD=your_password
MSSQL_DRIVER={ODBC Driver 17 for SQL Server}
python src/mssql/server.py
The server starts a FastAPI service (default http://127.0.0.1:8000).asyncio.python-dotenv.pyodbc and ODBC Driver 17.| Scenario | Benefit |
|---|---|
| LLM‑driven data analysis | Language models can query live MSSQL data without custom code. |
| Chat‑assistant database access | Provides a secure, standardized endpoint for chat bots to fetch or modify records. |
| Rapid prototyping | Developers can spin up a MCP server to expose existing databases to AI agents in minutes. |
| Data validation pipelines | Automated tools can call the server to validate schema constraints before ETL jobs. |
server.py to change this limit..env to version control.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.
asynciopython-dotenvgit 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 initializationserver.py - Main server implementationtests/ - 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 dependenciesCreate a .env file in the project root:
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]
mssql://<table_name>/data@app.read_resource()
async def read_resource(uri: AnyUrl) -> str
mssql://<table_name>/data@app.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]
Add to your Claude Desktop configuration:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On 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:
All errors are logged and returned with appropriate error messages.
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 the LICENSE file for details.
Amornpan Phornchaicharoen
git checkout -b feature/amazing-feature)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)Create a requirements.txt file with:
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:
fastapi and uvicorn for the API serverpydantic for data validationpyodbc for SQL Server connectivitymcp for Model Context Protocol implementationpython-dotenv for environment configurationanyio for asynchronous I/O supportPlease log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by googleapis
An MCP server that streamlines database tool development by handling connection pooling, authentication, observability, and secure access, allowing agents to interact with databases via natural language.
by bytebase
Provides a universal gateway that lets MCP‑compatible clients explore and query MySQL, PostgreSQL, SQL Server, MariaDB, and SQLite databases through a single standardized interface.
by designcomputer
Enables secure interaction with MySQL databases via the Model Context Protocol, allowing AI applications to list tables, read contents, and execute queries safely.
by benborla
Provides read‑only access to MySQL databases for large language models, allowing schema inspection and safe execution of SQL queries.
by neo4j-contrib
Enables natural‑language interaction with Neo4j databases, allowing large language models to query, modify, and manage graph data through multiple transport modes.
by mongodb-js
Provides a Model Context Protocol server that enables interaction with MongoDB databases and MongoDB Atlas clusters through a unified API.
by ClickHouse
Enables AI assistants to run read‑only ClickHouse queries, list databases and tables, and execute embedded chDB queries through an MCP interface.
by neondatabase
Interact with Neon Postgres databases using natural language commands through the Model Context Protocol, enabling conversational database creation, migration, and query execution.
by motherduckdb
Enables SQL analytics on DuckDB and MotherDuck databases via a Model Context Protocol server, allowing AI assistants and IDEs to query data directly.