Skip to main content
Glama
README.md3.94 kB
# MCP SQL - Arquitectura Modular Estructura modular del servidor MCP SQL organizada en componentes independientes. ## 📁 Estructura del Proyecto ``` mcp_sql/ ├── __init__.py # Exporta las clases principales del módulo ├── credentials.py # Gestión de credenciales (Credentials, CredentialsManager) ├── connection.py # Gestión de conexiones (ConnectionManager) ├── inspector.py # Inspección de base de datos (DatabaseInspector) ├── executor.py # Ejecución de queries (QueryExecutor) ├── server.py # Orquestador principal (MCPSQLServer) └── dependencies.py # Instalación automática de dependencias ``` ## 🔧 Componentes ### `credentials.py` **Clases:** - `Credentials` (dataclass): Estructura de datos para credenciales - `CredentialsManager`: Gestión de obtención de credenciales desde múltiples fuentes **Responsabilidad:** Manejo centralizado de credenciales con priorización de fuentes. ### `connection.py` **Clases:** - `ConnectionManager`: Creación y caché de engines SQLAlchemy **Responsabilidad:** Gestión del ciclo de vida de conexiones a bases de datos. ### `inspector.py` **Clases:** - `DatabaseInspector`: Operaciones de inspección de metadatos **Responsabilidad:** Obtención de información de esquemas, tablas y columnas. ### `executor.py` **Clases:** - `QueryExecutor`: Ejecución de consultas SQL **Responsabilidad:** Operaciones de lectura de datos (queries SELECT). ### `server.py` **Clases:** - `MCPSQLServer`: Orquestador principal del servidor MCP **Responsabilidad:** Inicialización y registro de herramientas MCP. ### `dependencies.py` **Funciones:** - `ensure_deps_once()`: Auto-instalación de dependencias **Responsabilidad:** Bootstrapping de dependencias faltantes. ## 🚀 Uso ### Importación básica ```python from mcp_sql import MCPSQLServer # Crear e iniciar servidor server = MCPSQLServer() server.run(port=3939) ``` ### Uso de componentes individuales ```python from mcp_sql import ConnectionManager, DatabaseInspector, Credentials # Crear gestor de conexiones conn_manager = ConnectionManager() # Crear inspector inspector = DatabaseInspector(conn_manager) # Usar credenciales creds = Credentials( user="myuser", password="mypass", server="localhost", database="mydb" ) # Obtener tablas tables = inspector.get_tables(creds) ``` ## 📦 Ventajas de esta Arquitectura 1. **Separación de Responsabilidades**: Cada clase tiene una única responsabilidad 2. **Testabilidad**: Componentes independientes fáciles de probar 3. **Mantenibilidad**: Cambios localizados en archivos específicos 4. **Reutilización**: Clases pueden usarse independientemente 5. **Escalabilidad**: Fácil agregar nuevos componentes 6. **Legibilidad**: Código organizado y fácil de navegar ## 🔄 Flujo de Ejecución ``` mcp_server.py (entry point) ↓ MCPSQLServer (server.py) ↓ ├── ConnectionManager (connection.py) ├── CredentialsManager (credentials.py) ├── DatabaseInspector (inspector.py) └── QueryExecutor (executor.py) ``` ## 🧪 Testing Cada módulo puede ser testeado de forma independiente: ```python # test_credentials.py from mcp_sql.credentials import CredentialsManager, Credentials def test_credentials_validation(): creds = Credentials(user="test", password="test", server="localhost") assert creds.is_valid() == True ``` ## 📝 Extensión Para agregar nuevas funcionalidades: 1. Crear nuevo archivo en `mcp_sql/` (ej: `analytics.py`) 2. Implementar la clase correspondiente 3. Importar en `__init__.py` 4. Usar en `server.py` si es necesario Ejemplo: ```python # mcp_sql/analytics.py class QueryAnalyzer: def __init__(self, connection_manager): self.conn_manager = connection_manager def analyze_query(self, sql: str): # Lógica de análisis pass ```

Latest Blog Posts

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/yuuues/mcp-sql'

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