Skip to main content
Glama

mcp-dbutils

MIT License
81
  • Linux
  • Apple
architecture.md8.15 kB
# Arquitectura *[English](../../en/technical/architecture.md) | [中文](../../zh/technical/architecture.md) | [Français](../../fr/technical/architecture.md) | Español | [العربية](../../ar/technical/architecture.md) | [Русский](../../ru/technical/architecture.md)* Este documento describe la arquitectura técnica de MCP Database Utilities, explicando cómo los diferentes componentes interactúan para proporcionar acceso seguro a bases de datos para asistentes de IA. ## Visión General de la Arquitectura MCP Database Utilities está diseñado con una arquitectura modular que prioriza la seguridad, el aislamiento y la flexibilidad. El sistema está compuesto por varias capas distintas que trabajan juntas para proporcionar acceso seguro de solo lectura a bases de datos. ## Concepto Fundamental: Diseño de Capas de Abstracción ```mermaid graph TD Client[Cliente] --> DatabaseServer[Servidor de Base de Datos] subgraph Servidor MCP DatabaseServer DatabaseHandler[Gestor de Base de Datos] PostgresHandler[Gestor PostgreSQL] SQLiteHandler[Gestor SQLite] MySQLHandler[Gestor MySQL] DatabaseServer --> DatabaseHandler DatabaseHandler --> PostgresHandler DatabaseHandler --> SQLiteHandler DatabaseHandler --> MySQLHandler end PostgresHandler --> PostgreSQL[(PostgreSQL)] SQLiteHandler --> SQLite[(SQLite)] MySQLHandler --> MySQL[(MySQL)] ``` El diseño de capas de abstracción es un concepto fundamental en la arquitectura de MCP Database Utilities. Al igual que un mando a distancia universal puede controlar diferentes dispositivos, el usuario solo necesita conocer las operaciones básicas, sin entender la complejidad subyacente. ## Componentes Principales ### 1. Gestor MCP (API Tools) Este componente es responsable de implementar el protocolo MCP y exponer las herramientas que la IA puede utilizar. **Responsabilidades:** - Implementar la interfaz MCP para la integración con clientes IA - Exponer las herramientas disponibles (list-tables, run-query, etc.) - Gestionar el ciclo de vida de las solicitudes MCP - Validar entradas y formatear salidas **Herramientas expuestas:** - `dbutils-list-connections`: Lista las conexiones disponibles - `dbutils-list-tables`: Lista las tablas en una base de datos - `dbutils-run-query`: Ejecuta una consulta SQL (solo SELECT) - `dbutils-get-stats`: Obtiene estadísticas sobre una tabla - `dbutils-list-constraints`: Lista las restricciones de una tabla - `dbutils-explain-query`: Obtiene el plan de ejecución de una consulta - `dbutils-get-performance`: Obtiene métricas de rendimiento - `dbutils-analyze-query`: Analiza consultas para optimización ### 2. Gestor de Consultas Este componente procesa las consultas entrantes, las valida y las enruta a los adaptadores de base de datos apropiados. **Responsabilidades:** - Analizar y validar consultas SQL - Aplicar restricciones de seguridad (solo SELECT) - Limitar la complejidad de las consultas y el tamaño de los resultados - Gestionar tiempos de espera y cancelaciones de consultas - Optimizar consultas cuando sea posible ### 3. Gestor SQL Este componente es responsable del análisis sintáctico y semántico de las consultas SQL. **Responsabilidades:** - Analizar la sintaxis SQL - Validar la semántica de las consultas - Detectar y bloquear operaciones no autorizadas (INSERT, UPDATE, DELETE, etc.) - Identificar tablas y columnas referenciadas - Optimizar consultas cuando sea posible ### 4. Gestor de Conexiones Este componente gestiona las conexiones a bases de datos según la configuración. **Responsabilidades:** - Leer y validar la configuración de conexiones - Establecer y mantener pools de conexiones - Gestionar el ciclo de vida de las conexiones - Aplicar parámetros de seguridad (SSL, timeout, etc.) - Monitorear el estado de las conexiones ### 5. Gestor de Caché Este componente almacena en caché los resultados de consultas frecuentes para mejorar el rendimiento. **Responsabilidades:** - Almacenar en caché los resultados de las consultas - Invalidar la caché cuando sea necesario - Gestionar el tamaño y la vida útil de la caché - Optimizar el rendimiento para consultas repetidas ### 6. Adaptadores de Base de Datos Estos componentes proporcionan una interfaz unificada para diferentes tipos de bases de datos. **Adaptadores soportados:** - SQLite - PostgreSQL - MySQL **Responsabilidades:** - Traducir consultas genéricas a consultas específicas de la base de datos - Gestionar las peculiaridades de cada tipo de base de datos - Optimizar consultas para cada motor de base de datos - Gestionar errores específicos de cada base de datos ## Flujo de Datos 1. **Inicialización:** - El servicio lee el archivo de configuración YAML - Las conexiones a bases de datos se configuran pero no se establecen - Las herramientas MCP se registran y exponen 2. **Procesamiento de Consultas:** - La IA envía una solicitud a través del protocolo MCP - El Gestor MCP recibe la solicitud y la pasa al Gestor de Consultas - El Gestor de Consultas valida la consulta y la pasa al adaptador apropiado - El adaptador establece una conexión (o usa una conexión existente del pool) - La consulta se ejecuta y los resultados se devuelven - Los resultados se formatean y se devuelven a la IA 3. **Gestión de Errores:** - Los errores se capturan en cada nivel - Los mensajes de error se normalizan y se hacen comprensibles - Los errores de seguridad se registran y bloquean - Los tiempos de espera se gestionan para evitar consultas infinitas ## Consideraciones de Seguridad La seguridad es una prioridad absoluta en la arquitectura de MCP Database Utilities: 1. **Acceso de Solo Lectura:** - Todas las consultas se analizan para garantizar que son de solo lectura - Las operaciones de modificación (INSERT, UPDATE, DELETE, etc.) se bloquean - Los comandos DDL (CREATE, ALTER, DROP, etc.) se bloquean 2. **Aislamiento:** - Cada conexión está aislada - Las transacciones son de solo lectura - Las conexiones se establecen bajo demanda y se cierran después de su uso 3. **Autenticación y Autorización:** - Las credenciales se almacenan de forma segura - Soporte para SSL/TLS para conexiones cifradas - Posibilidad de usar cuentas de base de datos de solo lectura 4. **Protección contra Inyecciones SQL:** - Todas las entradas se validan y escapan - Uso de consultas parametrizadas - Análisis sintáctico completo de las consultas SQL 5. **Limitación de Recursos:** - Tiempos de espera para todas las consultas - Limitación del tamaño de los resultados - Limitación de la complejidad de las consultas ## Extensibilidad La arquitectura está diseñada para ser extensible: 1. **Nuevos Adaptadores:** - Se puede añadir soporte para otros tipos de bases de datos - Interfaz común para todos los adaptadores 2. **Nuevas Herramientas:** - Se pueden añadir nuevas herramientas MCP fácilmente - Interfaz coherente para todas las herramientas 3. **Funcionalidades Avanzadas:** - Soporte para vistas materializadas - Optimización automática de consultas - Análisis avanzado de rendimiento ## Dependencias Externas MCP Database Utilities depende de las siguientes bibliotecas: - **SQLAlchemy**: ORM y toolkit SQL para la interacción con bases de datos - **PyYAML**: Parsing de archivos YAML para la configuración - **Psycopg2**: Adaptador PostgreSQL - **PyMySQL**: Adaptador MySQL - **Pydantic**: Validación de datos y serialización ## Limitaciones Conocidas - No hay soporte para procedimientos almacenados - No hay soporte para transacciones complejas - No hay soporte para bases de datos NoSQL (por ahora) - No hay soporte para consultas distribuidas entre múltiples bases de datos ## Evoluciones Futuras - Soporte para otros tipos de bases de datos (MongoDB, Oracle, SQL Server, etc.) - Mejora de las capacidades de análisis y optimización de consultas - Soporte para bases de datos federadas - Interfaz de administración para la gestión de conexiones - Métricas y monitoreo avanzados

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/donghao1393/mcp-dbutils'

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