Snowflake MCP Server

Un servidor de solo lectura para interactuar con bases de datos Snowflake, que permite consultas SELECT y acceso al contexto del esquema.

Documentación

Servidor MCP de Snowflake

Ligeramente modificado de https://github.com/isaacwasserman/mcp-snowflake-server


Resumen

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. No incluye la capacidad de ejecutar operaciones de escritura e incluye un mensaje de sistema.


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

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 la adición de la perspectiva
      Efecto: Activa la actualización del recurso memo://insights

Uso con Claude Desktop

Instalación mediante UVX

"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: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

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"
# 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:
"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: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

Notas

  • 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