Universal Database MCP
by Jorge-240
README.md
# Universal Database MCP
MCP remoto para Google ADK y otros clientes MCP. Permite conectar dinámicamente MySQL, MariaDB y PostgreSQL mediante una URL y administrar bases de datos, tablas y registros.
## 1. Requisitos
- Python 3.13 recomendado.
- Una base de datos MySQL/MariaDB/PostgreSQL accesible desde el equipo donde corre el MCP.
- Para Render: la base de datos debe aceptar conexiones desde Internet o desde la red autorizada.
## 2. Ejecutar localmente
Windows PowerShell:
```powershell
py -3.13 -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
```
Edita `.env` y cambia `MCP_API_KEY` por un secreto largo.
Ejecuta:
```powershell
uvicorn server:app --host 0.0.0.0 --port 8000 --reload
```
Health:
`http://127.0.0.1:8000/health`
MCP:
`http://127.0.0.1:8000/mcp`
## 3. Probar con MCP Inspector
En otra terminal:
```powershell
npx -y @modelcontextprotocol/inspector
```
Conecta a:
`http://127.0.0.1:8000/mcp`
En el cliente, agrega el header:
`Authorization: Bearer TU_MCP_API_KEY`
## 4. Primera conexión
Con la tool `crear_conexion`, envía por ejemplo:
`mysql+pymysql://usuario:password@host:3306/Tareas_sena`
El servidor devuelve un `connection_id`. Usa ese ID en todas las demás tools.
## 5. Importante sobre MySQL local
Un MCP desplegado en Render NO puede usar `127.0.0.1` o `localhost` para llegar al MySQL de tu PC. Desde Render, localhost significa el propio servidor de Render.
Para una BD local necesitas ejecutar un conector local que haga de puente seguro. Esta primera versión deja preparada la API remota; el Local Connector es una segunda pieza del proyecto.
## 6. Google ADK
Configura:
```powershell
$env:MCP_URL="https://TU-SERVICIO.onrender.com/mcp"
$env:MCP_API_KEY="TU_TOKEN"
```
Y usa `examples/adk_agent.py` como base.
## 7. Render
Puedes conectar este repo a Render como Web Service.
Build:
```text
pip install -r requirements.txt
```
Start:
```text
uvicorn server:app --host 0.0.0.0 --port $PORT
```
Variables:
```text
MCP_API_KEY=<tu-secreto>
MCP_REQUIRE_AUTH=true
PYTHON_VERSION=3.13.5
```
El endpoint será:
`https://TU-SERVICIO.onrender.com/mcp`
## 8. Seguridad
Esta versión usa un bearer token estático para proteger el endpoint remoto. Las URL de bases de datos se mantienen únicamente en memoria del proceso y se muestran redactadas en respuestas.
Las credenciales de la BD determinan realmente qué acciones son posibles. `ejecutar_sql_admin` puede ejecutar SQL arbitrario con los permisos de esa cuenta y por eso exige `confirmar=true`.
Para producción con múltiples usuarios/agentes se recomienda sustituir el token global por OAuth 2.1/JWT y aislar las conexiones por identidad del usuario.
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues