Home
Login
ClickHouse/mcp-clickhouse

Servidor MCP de ClickHouse que proporciona capacidades seguras de consulta de bases de datos ClickHouse para asistentes de IA a través del protocolo Model Context Protocol

Apache-2.0Python 371ClickHouse Last Updated: 2025-06-12
https://github.com/ClickHouse/mcp-clickhouse

Introducción Detallada al Proyecto del Servidor MCP de ClickHouse

Resumen

El servidor MCP de ClickHouse es una implementación del Model Context Protocol (MCP) desarrollada oficialmente por ClickHouse, específicamente para proporcionar a los asistentes de IA (como Claude) una conexión segura y la capacidad de interactuar con la base de datos ClickHouse. Este proyecto, a través del protocolo MCP estandarizado, permite a los asistentes de IA ejecutar consultas SQL, administrar la estructura de la base de datos y realizar análisis de datos en tiempo real.

MCP (Model Context Protocol) es un estándar abierto diseñado para proporcionar a las aplicaciones de IA una forma segura y estandarizada de integrar servicios externos. A través de este servidor, los usuarios pueden permitir que los asistentes de IA accedan directamente a sus bases de datos ClickHouse, logrando consultas y análisis de datos inteligentes.

Funcionalidades Principales

1. Ejecución de Consultas SQL (run_select_query)

  • Descripción de la Función: Ejecuta consultas SQL en el clúster de ClickHouse.
  • Mecanismo de Seguridad: Todas las consultas se ejecutan en modo readonly = 1, garantizando la seguridad de los datos.
  • Parámetros de Entrada:
    • sql (cadena de texto): La sentencia SQL a ejecutar.
  • Casos de Uso: Recuperación de datos, análisis estadístico, generación de informes.

2. Administración de Bases de Datos (list_databases)

  • Descripción de la Función: Lista todas las bases de datos en el clúster de ClickHouse.
  • Propósito: Exploración de la estructura de la base de datos, verificación de permisos.
  • Contenido de Retorno: Lista de bases de datos accesibles.

3. Administración de Tablas (list_tables)

  • Descripción de la Función: Lista todas las tablas en la base de datos especificada.
  • Parámetros de Entrada:
    • database (cadena de texto): Nombre de la base de datos.
  • Propósito: Exploración de la estructura de la tabla, comprensión del modelo de datos.

Configuración y Despliegue

Integración con Claude Desktop

Ruta de Configuración en macOS

~/Library/Application Support/Claude/claude_desktop_config.json

Ruta de Configuración en Windows

%APPDATA%/Claude/claude_desktop_config.json

Ejemplo de Configuración Básica

{
  "mcpServers": {
    "mcp-clickhouse": {
      "command": "uv",
      "args": [
        "run",
        "--with",
        "mcp-clickhouse",
        "--python",
        "3.13",
        "mcp-clickhouse"
      ],
      "env": {
        "CLICKHOUSE_HOST": "<clickhouse-host>",
        "CLICKHOUSE_PORT": "<clickhouse-port>",
        "CLICKHOUSE_USER": "<clickhouse-user>",
        "CLICKHOUSE_PASSWORD": "<clickhouse-password>",
        "CLICKHOUSE_SECURE": "true",
        "CLICKHOUSE_VERIFY": "true",
        "CLICKHOUSE_CONNECT_TIMEOUT": "30",
        "CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "30"
      }
    }
  }
}

Configuración de Variables de Entorno

Variables Obligatorias

  • CLICKHOUSE_HOST: Nombre de host del servidor ClickHouse.
  • CLICKHOUSE_USER: Nombre de usuario para la autenticación.
  • CLICKHOUSE_PASSWORD: Contraseña para la autenticación.

Variables Opcionales

  • CLICKHOUSE_PORT: Número de puerto.
    • Predeterminado: 8443 si HTTPS está habilitado, 8123 si está deshabilitado.
  • CLICKHOUSE_SECURE: Habilita/deshabilita la conexión HTTPS.
    • Predeterminado: "true"
  • CLICKHOUSE_VERIFY: Habilita/deshabilita la verificación del certificado SSL.
    • Predeterminado: "true"
  • CLICKHOUSE_CONNECT_TIMEOUT: Tiempo de espera de conexión (segundos).
    • Predeterminado: "30"
  • CLICKHOUSE_SEND_RECEIVE_TIMEOUT: Tiempo de espera de envío/recepción (segundos).
    • Predeterminado: "300"
  • CLICKHOUSE_DATABASE: Base de datos predeterminada para la conexión.
    • Predeterminado: Ninguna (usa la predeterminada del servidor).

Casos de Uso

1. Configuración del Entorno de Pruebas SQL de ClickHouse

{
  "env": {
    "CLICKHOUSE_HOST": "sql-clickhouse.clickhouse.com",
    "CLICKHOUSE_PORT": "8443",
    "CLICKHOUSE_USER": "demo",
    "CLICKHOUSE_PASSWORD": "",
    "CLICKHOUSE_SECURE": "true",
    "CLICKHOUSE_VERIFY": "true"
  }
}

2. Configuración del Entorno de Desarrollo Local

# Configuración del archivo .env
CLICKHOUSE_HOST=localhost
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
CLICKHOUSE_SECURE=false
CLICKHOUSE_VERIFY=false

3. Configuración de ClickHouse Cloud

CLICKHOUSE_HOST=your-instance.clickhouse.cloud
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=your-password
# Usar la configuración de seguridad predeterminada

Desarrollo y Pruebas

Preparación del Entorno

# Instalar dependencias
uv sync

# Activar el entorno virtual
source .venv/bin/activate

# Iniciar el servidor de desarrollo
mcp dev mcp_clickhouse/mcp_server.py

Proceso de Pruebas

# Instalar dependencias de desarrollo
uv sync --all-extras --dev

# Revisión de código
uv run ruff check .

# Iniciar servicios de prueba
docker compose up -d test_services

# Ejecutar pruebas
uv run pytest tests

Consideraciones de Seguridad

Gestión de Permisos de la Base de Datos

  • Principio de Mínimo Privilegio: El usuario de la base de datos MCP solo debe tener los permisos mínimos necesarios.
  • Evitar Cuentas de Administrador: Prohibido el uso de usuarios predeterminados o de administrador.
  • Modo de Solo Lectura: Todas las consultas se ejecutan en modo de solo lectura, evitando la modificación de datos.

Seguridad de la Red

  • Conexión HTTPS: Se recomienda habilitar HTTPS en entornos de producción.
  • Verificación de Certificados: Habilitar la verificación de certificados SSL para garantizar la seguridad de la conexión.
  • Configuración de Tiempo de Espera: Configurar tiempos de espera de conexión y consulta razonables para evitar el consumo de recursos.

Características Técnicas

Compatibilidad

  • Versión de Python: Soporta Python 3.13.
  • Gestión de Dependencias: Utiliza uv para la gestión de paquetes.
  • Contenedorización: Soporta el despliegue con Docker.
  • Multiplataforma: Soporta macOS, Windows, Linux.

Optimización del Rendimiento

  • Pool de Conexiones: Gestión eficiente de las conexiones a la base de datos.
  • Control de Tiempo de Espera: Tiempos de espera de conexión y consulta configurables.
  • Soporte Asíncrono: Soporte para la ejecución asíncrona de consultas.

Resumen

El proyecto del servidor MCP de ClickHouse construye un puente seguro y eficiente entre los asistentes de IA y las bases de datos ClickHouse. A través del protocolo MCP estandarizado, permite a los asistentes de IA comprender y operar estructuras de bases de datos complejas, ejecutar consultas SQL sofisticadas y proporcionar información de datos en tiempo real.

Principales Ventajas

  1. Soporte Oficial: Mantenido oficialmente por ClickHouse, garantizando compatibilidad y estabilidad.
  2. Diseño Seguro: Modo de solo lectura y control de permisos incorporados, protegiendo la seguridad de los datos.
  3. Fácil Integración: Protocolo MCP estandarizado, simplificando la integración de aplicaciones de IA.
  4. Configuración Flexible: Soporta múltiples escenarios de despliegue, desde el desarrollo local hasta la producción en la nube.
  5. Amigable para el Desarrollo: Cadena de herramientas de desarrollo y marco de pruebas completos.

Escenarios de Aplicación

  • Análisis de Datos: Permitir que los asistentes de IA ayuden con tareas complejas de análisis de datos.
  • Inteligencia de Negocios: Generación automatizada de informes e información de datos.
  • Monitorización en Tiempo Real: Combinar la IA para la monitorización de sistemas e indicadores de negocio.
  • Exploración de Datos: Explorar la estructura y el contenido de la base de datos a través de consultas en lenguaje natural.

Este proyecto representa una nueva dirección en la integración de la IA y las bases de datos, proporcionando a los desarrolladores una herramienta poderosa y segura, permitiendo que los asistentes de IA comprendan y operen realmente los recursos de datos de nivel empresarial.