by amornpan
Provides an asynchronous Model Context Protocol server for accessing Microsoft SQL Server databases via FastAPI, enabling language models to inspect table schemas and execute SQL queries.
An MCP server written in Python that connects to Microsoft SQL Server using pyodbc, exposing FastAPI endpoints for listing resources, reading table data, and executing arbitrary SQL statements. The service is designed for LLMs to interact with relational data in a standardized way.
git clone https://github.com/amornpan/py-mcp-mssql.git
cd py-mcp-mssql
pip install -r requirements.txt
.env
file (or set them in the runtime environment):
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
asyncio
.python-dotenv
.pyodbc
.list_resources
, read_resource
, call_tool
).Q: Which Python version is required? A: Python 3.8 or newer.
Q: Do I need to install ODBC drivers manually? A: Yes, install ODBC Driver 17 for SQL Server (or newer) on the host system.
Q: Can I limit the number of rows returned?
A: The server automatically caps read operations to the first 100 rows; this can be adjusted in server.py
.
Q: How are errors communicated to the client? A: Errors are logged server‑side and returned as structured MCP error messages with descriptive text.
Q: Is the server compatible with other databases? A: The core MCP implementation is generic, but this repository provides the MSSQL‑specific connector. A similar pattern can be used for other DBMS.
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.
asyncio
python-dotenv
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 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.
{ "mcpServers": { "mssql": { "command": "python", "args": [ "src/mssql/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}" } } } }
Discover more MCP servers with similar functionality and use cases
by googleapis
Provides a configurable MCP server that abstracts connection pooling, authentication, observability, and tool management to accelerate development of database‑backed AI tools.
by bytebase
DBHub is a universal database gateway that implements the Model Context Protocol (MCP) server interface, enabling MCP-compatible clients to interact with various databases.
by neo4j-contrib
Provides Model Context Protocol servers for interacting with Neo4j databases, managing Aura instances, and handling personal knowledge graph memory through natural‑language interfaces.
by mongodb-js
Provides a Model Context Protocol server that connects to MongoDB databases and Atlas clusters, exposing a rich set of tools for querying, managing, and administering data and infrastructure.
by benborla
A Model Context Protocol (MCP) server that provides read-only access to MySQL databases, enabling Large Language Models (LLMs) to inspect database schemas and execute read-only queries.
by ClickHouse
Provides tools that let AI assistants run read‑only SQL queries against ClickHouse clusters or the embedded chDB engine, plus a health‑check endpoint for service monitoring.
by elastic
Provides direct, natural‑language access to Elasticsearch indices via the Model Context Protocol, allowing AI agents to query and explore data without writing DSL.
by motherduckdb
Provides an MCP server that enables SQL analytics on DuckDB and MotherDuck databases, allowing AI assistants and IDEs to execute queries via a unified interface.
by redis
Provides a natural language interface for agentic applications to manage and search data in Redis efficiently.