Python MSSQL MCP Server
Un servidor MCP en Python para Microsoft SQL Server, que permite la inspección de esquemas y la ejecución de consultas SQL.
Documentación
Python MSSQL MCP Server
Una implementación de servidor del Model Context Protocol en Python que proporciona acceso a bases de datos de Microsoft SQL Server. Este servidor permite a los Modelos de Lenguaje inspeccionar esquemas de tablas y ejecutar consultas SQL a través de una interfaz estandarizada.
Características
Funcionalidad Principal
- Operación asíncrona usando
asynciode Python - Configuración basada en variables de entorno usando
python-dotenv - Sistema de registro (logging) integral
- Pooling y gestión de conexiones mediante pyodbc
- Manejo de errores y recuperación
- Integración con FastAPI para endpoints de API
- Modelos Pydantic para validación de datos
- Gestión de conexiones MSSQL con ODBC Driver
Requisitos Previos
- Python 3.x
- Paquetes de Python requeridos:
- pyodbc
- pydantic
- python-dotenv
- mcp-server
- ODBC Driver 17 para SQL Server
Instalación
git clone https://github.com/amornpan/py-mcp-mssql.git
cd py-mcp-mssql
pip install -r requirements.txt
Capturas de Pantalla

La captura de pantalla anterior muestra el servidor en uso con Claude para analizar y visualizar datos SQL.
Estructura del Proyecto
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
Explicación de la Estructura de Directorios
src/mssql/- Directorio principal del código fuente__init__.py- Inicialización del paqueteserver.py- Implementación principal del servidor
tests/- Directorio de archivos de prueba__init__.py- Inicialización del paquete de pruebastest_mssql.py- Pruebas de funcionalidad MSSQLtest_packages.py- Pruebas de dependencias del paquete
.env- Archivo de configuración de entorno (no en git).env.example- Ejemplo de configuración de entorno.gitignore- Reglas de ignorado de GitREADME.md- Documentación del proyectorequirements.txt- Dependencias del proyecto
Configuración
Cree un archivo .env en la raíz del proyecto:
MSSQL_SERVER=your_server
MSSQL_DATABASE=your_database
MSSQL_USER=your_username
MSSQL_PASSWORD=your_password
MSSQL_DRIVER={ODBC Driver 17 for SQL Server}
Detalles de Implementación de la API
Listado de Recursos
@app.list_resources()
async def list_resources() -> list[Resource]
- Lista todas las tablas disponibles en la base de datos
- Devuelve nombres de tablas con URIs en el formato
mssql://<table_name>/data - Incluye descripciones de tablas y tipos MIME
Lectura de Recursos
@app.read_resource()
async def read_resource(uri: AnyUrl) -> str
- Lee datos de la tabla especificada
- Acepta URIs en el formato
mssql://<table_name>/data - Devuelve las primeras 100 filas en formato CSV
- Incluye encabezados de columnas
Ejecución de SQL
@app.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]
- Ejecuta consultas SQL
- Admite consultas SELECT y de modificación
- Devuelve resultados en formato CSV para consultas SELECT
- Devuelve el número de filas afectadas para consultas de modificación
Uso con Claude Desktop
Agregue a su configuración de Claude Desktop:
En MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
En 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}"
}
}
}
}
Manejo de Errores
El servidor implementa un manejo integral de errores para:
- Fallos de conexión a la base de datos
- Consultas SQL inválidas
- Errores de acceso a recursos
- Validación de URIs
- Errores de ejecución de herramientas
Todos los errores se registran y se devuelven con mensajes de error apropiados.
Características de Seguridad
- Configuración basada en variables de entorno
- Seguridad de la cadena de conexión
- Límites de tamaño del conjunto de resultados
- Validación de entrada mediante Pydantic
- Manejo adecuado de consultas SQL
Información de Contacto
Amornpan Phornchaicharoen
No dude en contactarme si tiene alguna pregunta sobre este proyecto o desea colaborar.
Hecho con ❤️ por Amornpan Phornchaicharoen
Licencia
Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para más detalles.
Autor
Amornpan Phornchaicharoen
Contribuciones
- Haga un fork del repositorio
- Cree su rama de características (
git checkout -b feature/amazing-feature) - Haga commit de sus cambios (
git commit -m 'Add some amazing feature') - Haga push a la rama (
git push origin feature/amazing-feature) - Abra un Pull Request
Requisitos
Cree un archivo requirements.txt con:
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
Estas versiones han sido probadas y verificadas para funcionar juntas. Los componentes clave son:
fastapiyuvicornpara el servidor de APIpydanticpara validación de datospyodbcpara conectividad con SQL Servermcppara la implementación del Model Context Protocolpython-dotenvpara configuración de entornoanyiopara soporte de E/S asíncrona
Agradecimientos
- Equipo de Microsoft SQL Server por los controladores ODBC
- Mantenedores de pyodbc para Python
- Comunidad del Model Context Protocol
- Contribuyentes al proyecto python-dotenv