Snowflake

Integración con base de datos Snowflake con capacidades de lectura/escritura y seguimiento de información.

Documentación

MseeP.ai Security Assessment Badge

Servidor MCP de Snowflake


Descripción general

Una implementación de servidor de Protocolo de Contexto de Modelo (MCP) que proporciona interacción con bases de datos Snowflake. Este servidor permite ejecutar consultas SQL mediante herramientas y expone información de datos y contexto de esquema como recursos.


Componentes

Recursos

  • memo://insights
    Un memo actualizado continuamente que agrega información de datos descubierta.
    Se actualiza automáticamente cuando se añaden nuevas perspectivas mediante la herramienta append_insight.

  • context://table/{table_name}
    (Si la precarga está habilitada) Resúmenes de esquema por tabla, incluyendo columnas y comentarios, expuestos como recursos individuales.


Herramientas

El servidor expone las siguientes herramientas:

Herramientas de consulta

  • read_query
    Ejecuta consultas SELECT para leer datos de la base de datos.
    Entrada:

    • query (cadena): La consulta SQL SELECT a ejecutar
      Devuelve: Resultados de la consulta como un array de objetos
  • write_query (habilitada solo con --allow-write)
    Ejecuta consultas INSERT, UPDATE o DELETE.
    Entrada:

    • query (cadena): La consulta de modificación SQL
      Devuelve: Número de filas afectadas o confirmación
  • create_table (habilitada solo con --allow-write)
    Crea nuevas tablas en la base de datos.
    Entrada:

    • query (cadena): Sentencia SQL CREATE TABLE
      Devuelve: Confirmación de creación de la tabla

Herramientas de esquema

  • list_databases
    Lista todas las bases de datos en la instancia de Snowflake.
    Devuelve: Array de nombres de bases de datos

  • list_schemas
    Lista todos los esquemas dentro de una base de datos específica.
    Entrada:

    • database (cadena): Nombre de la base de datos
      Devuelve: Array de nombres de esquemas
  • list_tables
    Lista todas las tablas dentro de una base de datos y esquema específicos.
    Entrada:

    • database (cadena): Nombre de la base de datos
    • schema (cadena): Nombre del esquema
      Devuelve: Array de metadatos de tablas
  • describe_table
    Muestra información de columnas para una tabla específica.
    Entrada:

    • table_name (cadena): Nombre de tabla completamente calificado (database.schema.table)
      Devuelve: Array de definiciones de columnas con nombres, tipos, nulabilidad, valores predeterminados y comentarios

Herramientas de análisis

  • append_insight
    Añade nuevas perspectivas de datos al recurso de memo.
    Entrada:
    • insight (cadena): Perspectiva de datos descubierta a partir del análisis
      Devuelve: Confirmación de adición de la perspectiva
      Efecto: Activa la actualización del recurso memo://insights

Uso con Claude Desktop

Instalación mediante Smithery

Para instalar Snowflake Server para Claude Desktop automáticamente mediante Smithery:

npx -y @smithery/cli install mcp_snowflake_server --client claude

Instalación mediante UVX

Configuración tradicional (parámetros individuales)

"mcpServers": {
  "snowflake_pip": {
    "command": "uvx",
    "args": [
      "--python=3.12",  // Optional: specify Python version <=3.12
      "mcp_snowflake_server",
      "--account", "your_account",
      "--warehouse", "your_warehouse",
      "--user", "your_user",
      "--password", "your_password",
      "--role", "your_role",
      "--database", "your_database",
      "--schema", "your_schema"
      // Optionally: "--private_key_path", "your_private_key_absolute_path"
      // Optionally: "--allow_write"
      // Optionally: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

Configuración TOML (recomendada)

"mcpServers": {
  "snowflake_production": {
    "command": "uvx",
    "args": [
      "--python=3.12",
      "mcp_snowflake_server",
      "--connections-file", "/path/to/snowflake_connections.toml",
      "--connection-name", "production"
      // Optionally: "--allow_write"
      // Optionally: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  },
  "snowflake_staging": {
    "command": "uvx",
    "args": [
      "--python=3.12",
      "mcp_snowflake_server",
      "--connections-file", "/path/to/snowflake_connections.toml",
      "--connection-name", "staging"
    ]
  }
}

Instalación local

  1. Instala Claude AI Desktop App

  2. Instala uv:

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Crea un archivo .env con tus credenciales de Snowflake:
SNOWFLAKE_USER="xxx@your_email.com"
SNOWFLAKE_ACCOUNT="xxx"
SNOWFLAKE_ROLE="xxx"
SNOWFLAKE_DATABASE="xxx"
SNOWFLAKE_SCHEMA="xxx"
SNOWFLAKE_WAREHOUSE="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
  1. [Opcional] Modifica runtime_config.json para establecer patrones de exclusión para bases de datos, esquemas o tablas.

  2. Prueba localmente:

uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
  1. Añade el servidor a tu claude_desktop_config.json:

Configuración tradicional (usando variables de entorno)

"mcpServers": {
  "snowflake_local": {
    "command": "/absolute/path/to/uv",
    "args": [
      "--python=3.12",  // Optional
      "--directory", "/absolute/path/to/mcp_snowflake_server",
      "run", "mcp_snowflake_server"
      // Optionally: "--allow_write"
      // Optionally: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

Configuración TOML (recomendada)

"mcpServers": {
  "snowflake_local": {
    "command": "/absolute/path/to/uv",
    "args": [
      "--python=3.12",
      "--directory", "/absolute/path/to/mcp_snowflake_server",
      "run", "mcp_snowflake_server",
      "--connections-file", "/absolute/path/to/snowflake_connections.toml",
      "--connection-name", "development"
      // Optionally: "--allow_write"
      // Optionally: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

Notas

  • De forma predeterminada, las operaciones de escritura están deshabilitadas. Habilítalas explícitamente con --allow-write.
  • El servidor admite el filtrado de bases de datos, esquemas o tablas específicas mediante patrones de exclusión.
  • El servidor expone recursos de contexto adicionales por tabla si la precarga está habilitada.
  • La herramienta append_insight actualiza dinámicamente el recurso memo://insights.

Licencia

MIT