Skip to main content
Glama

MCP SQL Server

by dennismartis

Servidor SQL MCP

Un servidor FastMCP que proporciona herramientas de interacción con bases de datos SQL a través de una interfaz de inteligencia artificial conversacional.

Descripción general

Este proyecto crea un servidor que expone las operaciones de MS SQL Server mediante una interfaz de IA conversacional. Utiliza el framework FastMCP para proporcionar herramientas de consulta y manipulación de datos SQL, permitiendo a los usuarios interactuar con bases de datos mediante lenguaje natural.

Características

  • Ejecutar consultas SQL y ver resultados
  • Lista de tablas disponibles en la base de datos
  • Describe la estructura de la tabla con información de columnas.
  • Ejecutar operaciones que no sean de consulta (INSERTAR, ACTUALIZAR, ELIMINAR)
  • Enumere los controladores ODBC disponibles en el sistema
  • Ver información de la base de datos y detalles del servidor

Requisitos

  • Python 3.7+
  • pyodbc
  • asincronía
  • Marco FastMCP
  • Microsoft SQL Server
  • Controlador ODBC 17 para SQL Server

Instalación

  1. Instalar dependencias de Python:
pip install pyodbc asyncio fastmcp
  1. Asegúrese de tener instalado Microsoft SQL Server y el controlador ODBC 17 para SQL Server.
  2. Configure los ajustes de conexión en el script:
# Connection parameters SERVER = "server\\instance" # Change to your SQL Server instance DATABASE = "db_name" # Change to your database name

Uso

Ejecutar el servidor:

python mcp_sql_server.py

El servidor se inicializará y establecerá una conexión con la base de datos SQL Server especificada.

Herramientas disponibles

consulta_sql

Ejecutar una consulta SQL y devolver los resultados.

query_sql(query: str = None) -> str
  • Si no se proporciona ninguna consulta, el valor predeterminado es SELECT * FROM [dbo].[Table_1]
  • Devuelve los resultados de la consulta como una cadena formateada

listas_de_tablas

Enumere todas las tablas disponibles en la base de datos.

list_tables() -> str
  • Devuelve una lista de nombres de tablas como una cadena

describe_tabla

Obtener la estructura de una tabla específica.

describe_table(table_name: str) -> str
  • table_name : Nombre de la tabla a describir
  • Devuelve información de la columna, incluidos nombres y tipos de datos.

ejecutar_no consulta

Ejecute INSERT, UPDATE, DELETE u otras sentencias SQL que no sean de consulta.

execute_nonquery(sql: str) -> str
  • sql : La sentencia SQL a ejecutar
  • Devuelve los resultados de la operación, incluido el número de filas afectadas
  • Maneja automáticamente transacciones (confirmación/reversión)

lista_de_controladores_ODBC

Enumere todos los controladores ODBC disponibles en el sistema.

list_odbc_drivers() -> str
  • Devuelve una lista separada por comas de controladores ODBC instalados

información de la base de datos

Obtenga información general sobre la base de datos conectada.

database_info() -> str
  • Devuelve el nombre del servidor, el nombre de la base de datos, la versión de SQL Server, la hora actual del servidor y el recuento de tablas

Arquitectura

El servidor utiliza una arquitectura asincrónica para evitar operaciones de bloqueo:

  1. Gestión del ciclo de vida : el administrador de contexto app_lifespan maneja la configuración y el desmontaje de la conexión a la base de datos.
  2. Operaciones sin bloqueo : las operaciones de base de datos se ejecutan en un hilo separado utilizando asyncio.get_event_loop().run_in_executor() para evitar el bloqueo del bucle de eventos principal.
  3. Manejo de errores : todas las operaciones incluyen un manejo de errores integral con mensajes de error útiles.

Manejo de errores

El servidor maneja varias condiciones de error:

  • Fallos de conexión a la base de datos
  • Errores de sintaxis de consultas SQL
  • Errores de tabla no encontrada
  • Problemas relacionados con los permisos

Se registran todos los errores y se devuelven los mensajes de error correspondientes al cliente.

Personalización

Para agregar nuevas herramientas de base de datos o modificar las existentes, siga el patrón utilizado en las herramientas existentes:

@mcp.tool() async def your_new_tool(ctx: Context, param1: str) -> str: """Documentation for your tool""" try: conn = ctx.request_context.lifespan_context["conn"] if conn is None: return "Database connection is not available." def your_db_operation(): # Your database operations here pass loop = asyncio.get_event_loop() result = await loop.run_in_executor(None, your_db_operation) # Process and return results return "Your result" except Exception as e: return f"Error: {str(e)}"

Consideraciones de seguridad

  • El servidor utiliza la autenticación de Windows ("Trusted_Connection=yes")
  • Considere implementar la validación de entrada para consultas SQL para evitar la inyección de SQL
  • Restringir los permisos de usuario de la base de datos según el principio del mínimo privilegio

Solución de problemas

Problemas comunes:

  1. Errores de conexión : Verifique el nombre de la instancia de SQL Server y asegúrese de que se esté ejecutando
  2. Errores del controlador ODBC : Confirme que el controlador ODBC 17 para SQL Server esté instalado
  3. Errores de permisos : compruebe que el usuario de Windows que ejecuta la aplicación tenga los permisos adecuados de SQL Server

Licencia

[Información de su licencia]

Contacto

[Su información de contacto]

-
security - not tested
F
license - not found
-
quality - not tested

local-only server

The server can only run on the client's local machine because it depends on local resources.

Un servidor FastMCP que proporciona interacción en lenguaje natural con bases de datos MS SQL, lo que permite a los usuarios consultar datos, enumerar tablas, describir estructuras y ejecutar operaciones de base de datos a través de una interfaz de IA conversacional.

  1. Descripción general
    1. Características
      1. Requisitos
        1. Instalación
          1. Uso
            1. Herramientas disponibles
              1. consulta\_sql
              2. listas\_de\_tablas
              3. describe\_tabla
              4. ejecutar\_no consulta
              5. lista\_de\_controladores\_ODBC
              6. información de la base de datos
            2. Arquitectura
              1. Manejo de errores
                1. Personalización
                  1. Consideraciones de seguridad
                    1. Solución de problemas
                      1. Licencia
                        1. Contacto

                          Related MCP Servers

                          • -
                            security
                            F
                            license
                            -
                            quality
                            A production-ready MCP server built with FastAPI, providing an enhanced tool registry for creating, managing, and documenting AI tools for Large Language Models (LLMs).
                            Last updated -
                            13
                            Python
                          • -
                            security
                            A
                            license
                            -
                            quality
                            A FastMCP server implementation for the Dixa API, enabling AI assistants to search, retrieve, and manage customer conversation data and tags.
                            Last updated -
                            TypeScript
                            MIT License
                          • A
                            security
                            F
                            license
                            A
                            quality
                            MCP server that allows Claude AI to interact directly with MySQL databases, enabling query execution and table information retrieval through natural language.
                            Last updated -
                            1
                            6
                            3
                            JavaScript
                          • -
                            security
                            -
                            license
                            -
                            quality
                            A FastMCP server that enables browser automation through natural language commands, allowing Language Models to browse the web, fill out forms, click buttons, and perform other web-based tasks via a simple API.
                            Last updated -
                            1
                            Python

                          View all related MCP servers

                          MCP directory API

                          We provide all the information about MCP servers via our MCP API.

                          curl -X GET 'https://glama.ai/api/mcp/v1/servers/dennismartis/sql_mcp_server'

                          If you have feedback or need assistance with the MCP directory API, please join our Discord server