w2pwinlinux/mcp-server-presupuesto-mysql1
If you are the rightful owner of mcp-server-presupuesto-mysql1 and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This MCP server provides an interface for managing and querying departmental budget information through a MySQL database.
MySQL MCP Server v2
Este servidor MCP (Message Control Protocol) proporciona una interfaz para gestionar y consultar información de presupuestos departamentales a través de una base de datos MySQL.
Características
- Conexión segura a base de datos MySQL
- Gestión de presupuestos departamentales
- Consultas por código de departamento
- Búsqueda por nombre de departamento
- Registro de solicitudes de presupuesto
- Manejo robusto de errores y conexiones
Requisitos
- Python 3.6 o superior
- MySQL Server (XAMPP o similar)
- Paquetes Python requeridos:
- mcp
- mysql-connector-python
Instalación
- Clonar el repositorio
- Instalar las dependencias:
pip install mcp mysql-connector-python
Configuración
El servidor está configurado para conectarse a una base de datos MySQL con los siguientes parámetros por defecto:
db_config = {
'host': 'localhost',
'port': 3306,
'user': 'reporte',
'password': 'reporte',
'database': '_REPORTE',
'raise_on_warnings': True
}
Ajusta estos parámetros según tu configuración de base de datos.
Funcionalidades
1. Consulta de Estado Completo
get_estado_completo(codigo: int)
Retorna la información completa de un departamento por su código, incluyendo:
- Código
- Nombre
- Presupuesto inicial
- Monto solicitado
- Saldo disponible
- Monto pagado
2. Registro de Solicitudes
registrar_solicitud(codigo: int, monto: float)
Registra una nueva solicitud de presupuesto para un departamento:
- Actualiza el monto solicitado
- Recalcula el saldo disponible
- Maneja transacciones de forma segura
3. Búsqueda por Nombre
buscar_por_nombre(nombre: str)
Busca departamentos por nombre:
- Búsqueda parcial (usando LIKE)
- Retorna múltiples resultados
- Incluye información completa de cada departamento encontrado
Pruebas
El proyecto incluye scripts de prueba para verificar la funcionalidad:
test_buscar_nombre.py
: Prueba la funcionalidad de búsqueda por nombre- Ejecuta las pruebas con:
python test_buscar_nombre.py
Manejo de Errores
El servidor implementa un manejo robusto de errores:
- Errores de conexión a la base de datos
- Errores de consulta
- Validación de datos
- Rollback automático en caso de errores en transacciones
Estructura de la Base de Datos
La tabla principal departamentos
contiene los siguientes campos:
codigo
(int): Identificador único del departamentonombre
(varchar): Nombre del departamentoinicial
(decimal): Presupuesto inicialsolicitado
(decimal): Monto solicitadosaldo
(decimal): Saldo disponiblepagado
(decimal): Monto pagado
Ejecución
Para iniciar el servidor:
python mysql_mcp_server_v2.py
Notas de Seguridad
- Las credenciales de la base de datos están hardcodeadas en el código. En un entorno de producción, se recomienda usar variables de entorno o un archivo de configuración seguro.
- Se implementa manejo de conexiones seguro usando el patrón context manager.
- Las transacciones se manejan con commit/rollback apropiados.
Contribución
- Fork el repositorio
- Crea una rama para tu feature (
git checkout -b feature/AmazingFeature
) - Commit tus cambios (
git commit -m 'Add some AmazingFeature'
) - Push a la rama (
git push origin feature/AmazingFeature
) - Abre un Pull Request
Licencia
Este proyecto está bajo la Licencia MIT. Ver el archivo LICENSE
para más detalles.