Vertica MCP Server
Proporciona acceso de solo lectura a bases de datos Vertica.
Documentación
Vertica MCP Server
Un servidor de Model Context Protocol (MCP) para bases de datos Vertica. Permite a los asistentes de IA consultar y explorar bases de datos Vertica mediante lenguaje natural.
Diseño con seguridad primero: Modo de solo lectura por defecto. Las operaciones de escritura requieren configuración explícita.
Características
- 6 herramientas MCP: Ejecución de consultas, streaming, descubrimiento de esquema
- Protección de solo lectura: Solo consultas SELECT/SHOW/DESCRIBE/EXPLAIN/WITH por defecto
- Streaming de grandes conjuntos de datos: Procesamiento por lotes eficiente (hasta 1M de filas)
- Optimizado para Vertica: Conocimiento de proyecciones, soporte de consultas columnar
- Listo para producción: Pool de conexiones, soporte SSL, configuración de tiempo de espera
- Enlace de parámetros: Protección contra inyección SQL
- Conexión persistente: Reutiliza una única conexión con tiempo de espera de inactividad configurable
- Balanceo de carga: Redirección opcional al nodo Vertica óptimo al conectar
Inicio rápido
Claude Code
claude mcp add vertica --scope user -- npx -y @hechtcarmel/vertica-mcp@latest --env-file /path/to/your/.env
Crea tu archivo .env con los detalles de conexión:
VERTICA_HOST=your-vertica-host.com
VERTICA_PORT=5433
VERTICA_DATABASE=your_database
VERTICA_USER=your_username
VERTICA_PASSWORD=your_password
Cursor
- Crea el archivo de entorno
~/.cursor/vertica.env:
VERTICA_HOST=your-vertica-host.com
VERTICA_PORT=5433
VERTICA_DATABASE=your_database
VERTICA_USER=your_username
VERTICA_PASSWORD=your_password
- Configura
~/.cursor/mcp.json:
{
"mcpServers": {
"vertica-mcp": {
"command": "npx",
"args": [
"@hechtcarmel/vertica-mcp",
"--env-file",
"/Users/yourusername/.cursor/vertica.env"
]
}
}
}
- Reinicia Cursor
Claude Desktop
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"vertica-mcp": {
"command": "npx",
"args": [
"@hechtcarmel/vertica-mcp",
"--env-file",
"/path/to/your/.env"
]
}
}
}
Configuración
Variables requeridas
VERTICA_HOST # Database hostname
VERTICA_DATABASE # Database name
VERTICA_USER # Username
Variables opcionales
VERTICA_PORT=5433 # Default: 5433
VERTICA_PASSWORD # Password (optional)
VERTICA_READONLY_MODE=true # Default: true
VERTICA_QUERY_TIMEOUT=60000 # Default: 60000ms
VERTICA_IDLE_TIMEOUT=3600000 # Default: 3600000ms (1h), range: 60s-24h
VERTICA_SSL=false # Default: false
VERTICA_SSL_REJECT_UNAUTHORIZED=true # Default: true
VERTICA_DEFAULT_SCHEMA=public # Default: public
VERTICA_CONNECTION_LOAD_BALANCE=false # Default: false
Habilitar operaciones de escritura
Para permitir operaciones INSERT/UPDATE/DELETE/CREATE/DROP:
VERTICA_READONLY_MODE=false
Advertencia: Solo desactiva el modo de solo lectura si entiendes las implicaciones.
Conexión persistente y tiempo de espera de inactividad
El servidor reutiliza una única conexión entre llamadas a herramientas. Si permanece inactivo durante más de VERTICA_IDLE_TIMEOUT, se desconecta automáticamente y se reconecta en el siguiente uso.
VERTICA_IDLE_TIMEOUT=3600000 # 1 hour (default), min: 60000ms, max: 86400000ms
Balanceo de carga de conexión
Cuando está habilitado, el servidor consulta DESCRIBE_LOAD_BALANCE_DECISION de Vertica en la primera conexión y se reconecta de forma transparente al nodo óptimo si hay una redirección disponible, replicando el comportamiento de los controladores JDBC/ODBC de Vertica.
VERTICA_CONNECTION_LOAD_BALANCE=true
Nota: Requiere que la IP de redirección sea accesible desde el host del servidor MCP.
Herramientas disponibles
Ejecución de consultas
- execute_query: Ejecuta SQL con parámetros opcionales
- stream_query: Maneja grandes conjuntos de datos con lotes configurables
Descubrimiento de esquema
- get_table_structure: Columnas de tabla, tipos, restricciones
- list_tables: Todas las tablas en el esquema con metadatos
- list_views: Todas las vistas con definiciones
- list_indexes: Proyecciones de Vertica para optimización
Ejemplos de uso
Consultar datos
SELECT customer_state, COUNT(*) as count
FROM customer_dimension
GROUP BY customer_state
ORDER BY count DESC
LIMIT 10;
Explorar esquema
SHOW TABLES;
DESCRIBE customer_dimension;
Analizar rendimiento
EXPLAIN SELECT * FROM store_sales_fact
WHERE sale_date_key > '2023-01-01';
Transmitir resultados grandes
Al consultar grandes conjuntos de datos, usa la herramienta stream_query:
- Tamaño de lote predeterminado: 1000 filas
- Tamaño de lote configurable: 1-10,000 filas
- Máximo de filas: 1,000,000
Solución de problemas
Fallo de conexión
# Test connectivity directly
vsql -h localhost -p 5433 -d VMart -U dbadmin
Verifica:
- Que el host y el puerto sean accesibles
- Que las credenciales de la base de datos sean correctas
- Que el usuario tenga los permisos necesarios
Errores de permisos
- El usuario necesita permisos SELECT en las tablas
- El usuario necesita acceso a los catálogos del sistema (
v_catalog.*)
Tiempos de espera de consulta
Aumenta el tiempo de espera para consultas complejas:
VERTICA_QUERY_TIMEOUT=300000 # 5 minutes
Conjuntos de resultados grandes
Usa stream_query en lugar de execute_query para consultas que devuelvan más de 10,000 filas.
Fallo de redirección de balanceo de carga
Si VERTICA_CONNECTION_LOAD_BALANCE=true pero el enrutamiento falla, el servidor registra una advertencia y permanece en el host inicial; no se devuelve ningún error al cliente. Verifica que todos los nodos del clúster de Vertica sean accesibles desde el servidor MCP.
Requisitos
- Node.js >= 18.0.0
- Base de datos Vertica (cualquier versión reciente)
- Acceso de red al servidor Vertica
Soporte
- Problemas: GitHub Issues
- Lanzamientos: GitHub Releases
Licencia
Licencia MIT - consulta el archivo LICENSE.
Agradecimientos
La arquitectura y el diseño de herramientas de este proyecto se basan en mcp-vertica de @nolleh.
Versión actual: 1.4.0