Skip to main content
Glama

Snowflake MCP Service

MIT License
2
  • Apple
  • Linux

Servicio MCP de copo de nieve

Un servidor de Protocolo de contexto de modelo (MCP) que proporciona acceso a las bases de datos de Snowflake para cualquier cliente compatible con MCP.

Repositorio de GitHubLicencia: MIT

Este servidor implementa el Protocolo de Contexto de Modelo para permitir que cualquier cliente MCP:

  • Ejecutar consultas SQL en bases de datos Snowflake
  • Manejar automáticamente el ciclo de vida de la conexión a la base de datos (conectar, reconectar al expirar el tiempo de espera, cerrar)
  • Manejar resultados de consultas y errores
  • Realizar operaciones de base de datos de forma segura
  • Conéctese usando autenticación mediante contraseña o par de claves

Descripción general de la arquitectura

¿Qué es MCP (Protocolo de Contexto Modelo)?

MCP es un protocolo estándar que permite a las aplicaciones comunicarse con modelos de IA y servicios externos. Permite a los modelos de IA acceder a herramientas y fuentes de datos más allá de sus datos de entrenamiento, ampliando así sus capacidades mediante una interfaz de comunicación estandarizada. Sus principales características incluyen:

  • Basado en la comunicación stdio (entrada/salida estándar)
  • Definición y descubrimiento de herramientas estructuradas
  • Mecanismo de llamada de herramientas estandarizado
  • Transmisión estructurada de resultados

Componentes del sistema

El servidor Snowflake-MCP consta de varios componentes clave:

  1. Servidor MCP : componente central que implementa el protocolo MCP y maneja las solicitudes de los clientes
  2. Snowflake Connection Manager : administra las conexiones de bases de datos, incluida la creación, el mantenimiento y la limpieza.
  3. Procesador de consultas : ejecuta consultas SQL en Snowflake y procesa los resultados.
  4. Administrador de autenticación : maneja diferentes métodos de autenticación (contraseña o clave privada)

texto alternativo

Flujo de comunicación

El sistema funciona mediante el siguiente flujo de comunicación:

  1. Un cliente MCP (como Claude u otra aplicación compatible con MCP) envía una solicitud al servidor MCP
  2. El servidor MCP se autentica con Snowflake utilizando las credenciales del archivo .env
  3. El servidor MCP ejecuta consultas SQL en Snowflake
  4. Snowflake devuelve resultados al servidor MCP
  5. El servidor MCP formatea y envía los resultados al cliente MCP

texto alternativo

Esta arquitectura permite una integración perfecta entre las aplicaciones de IA y las bases de datos de Snowflake, manteniendo al mismo tiempo la seguridad y una gestión eficiente de la conexión.

Instalación

  1. Clonar este repositorio
git clone https://github.com/davidamom/snowflake-mcp.git
  1. Instalar dependencias
pip install -r requirements.txt

Configuración

Ejemplo de configuración de cliente MCP

A continuación se muestra un ejemplo de configuración para Claude Desktop, pero este servidor funciona con cualquier cliente compatible con MCP. Cada cliente puede tener su propio método de configuración:

{ "mcpServers": { "snowflake": { "command": "C:\\Users\\YourUsername\\path\\to\\python.exe", "args": ["C:\\path\\to\\snowflake-mcp\\server.py"] } } }

Parámetros de configuración:

  • command : Ruta completa de su intérprete de Python. Modifíquela según la ubicación de su instalación de Python.
  • args : Ruta completa al script del servidor. Modifíquela según dónde clonó el repositorio.

Rutas de ejemplo para diferentes sistemas operativos:

Ventanas:

{ "mcpServers": { "snowflake": { "command": "C:\\Users\\YourUsername\\anaconda3\\python.exe", "args": ["C:\\Path\\To\\snowflake-mcp\\server.py"] } } }

MacOS/Linux:

{ "mcpServers": { "snowflake": { "command": "/usr/bin/python3", "args": ["/path/to/snowflake-mcp/server.py"] } } }

Configuración de copo de nieve

Cree un archivo .env en el directorio raíz del proyecto y agregue la siguiente configuración:

# Snowflake Configuration - Basic Info SNOWFLAKE_USER=your_username # Your Snowflake username SNOWFLAKE_ACCOUNT=YourAccount.Region # Example: MyOrg.US-WEST-2 SNOWFLAKE_DATABASE=your_database # Your database SNOWFLAKE_WAREHOUSE=your_warehouse # Your warehouse # Authentication - Choose one method
Opciones de autenticación

Este servidor MCP admite dos métodos de autenticación:

  1. Autenticación de contraseña
    SNOWFLAKE_PASSWORD=your_password # Your Snowflake password
  2. Autenticación de par de claves
    SNOWFLAKE_PRIVATE_KEY_FILE=/path/to/rsa_key.p8 # Path to private key file SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=your_passphrase # Optional: passphrase if key is encrypted
    Para la autenticación de par de claves, primero debe configurar la autenticación de par de claves con Snowflake:
    • Genere un par de claves y registre la clave pública con Snowflake
    • Guarde el archivo de clave privada de forma segura en su máquina
    • Proporcione la ruta completa al archivo de clave privada en la configuración

    Para obtener instrucciones sobre cómo configurar la autenticación de pares de claves, consulte la documentación de Snowflake sobre autenticación de pares de claves .

Si se configuran ambos métodos de autenticación, el servidor priorizará la autenticación del par de claves.

Gestión de conexiones

El servidor proporciona funciones de gestión automática de la conexión:

  • Inicialización automática de la conexión
    • Crea una conexión cuando se recibe la primera consulta
    • Valida los parámetros de conexión
  • Mantenimiento de la conexión
    • Realiza un seguimiento del estado de la conexión
    • Maneja los tiempos de espera de conexión
    • Se reconecta automáticamente si se pierde la conexión
  • Limpieza de la conexión
    • Cierra correctamente las conexiones cuando el servidor se detiene
    • Libera recursos apropiadamente

Uso

Uso estándar

El servidor se iniciará automáticamente al configurarlo con su cliente MCP. No es necesario iniciarlo manualmente durante el funcionamiento normal. Una vez que el servidor esté en funcionamiento, su cliente MCP podrá ejecutar consultas de Snowflake.

Para realizar pruebas de desarrollo, puede iniciar el servidor manualmente usando:

python server.py

Nota: El inicio manual del servidor no es necesario para el uso normal. El cliente MCP normalmente gestionará el inicio y el apagado del servidor según la configuración.

Uso de Docker

También puedes ejecutar el servidor con Docker. Este método se recomienda para entornos de producción y garantiza una ejecución consistente en diferentes plataformas.

  1. Construya la imagen de Docker:
docker build -t snowflake-mcp .
  1. Configura tu cliente MCP para usar Docker. Ejemplo de configuración:
{ "mcpServers": { "snowflake-docker": { "command": "docker", "args": [ "run", "-i", "snowflake-mcp" ], "env": { "SNOWFLAKE_USER": "your_username", "SNOWFLAKE_ACCOUNT": "your_account", "SNOWFLAKE_DATABASE": "your_database", "SNOWFLAKE_WAREHOUSE": "your_warehouse", "SNOWFLAKE_PASSWORD": "your_password" } } } }

Nota: La implementación de Docker utiliza stdio para la comunicación, por lo que no es necesario exponer ningún puerto.

Si usa la autenticación de par de claves con Docker, necesitará montar su archivo de clave privada:

docker run -i -v /path/to/your/key.p8:/app/rsa_key.p8:ro snowflake-mcp

Y actualice su configuración según corresponda:

{ "mcpServers": { "Snowflake-Docker": { "command": "docker", "args": [ "run", "-i", "-v", "/path/to/your/key.p8:/app/rsa_key.p8:ro", //optional "-v", "/path/to/export/dir/:/export/" "snowflake-mcp" ], "env": { "SNOWFLAKE_USER": "your_username", "SNOWFLAKE_ACCOUNT": "your_account", "SNOWFLAKE_DATABASE": "your_database", "SNOWFLAKE_WAREHOUSE": "your_warehouse", "SNOWFLAKE_PRIVATE_KEY_FILE": "/app/rsa_key.p8" } } } }

Características

  • Acceso seguro a la base de datos de Snowflake
  • Autenticación flexible (autenticación mediante contraseña o par de claves)
  • Gestión y generación de informes de errores robustos
  • Gestión automática de conexiones
  • Ejecución de consultas y procesamiento de resultados
  • Compatible con cualquier cliente compatible con MCP

Detalles técnicos

Componentes principales

La implementación consta de varias clases y módulos clave:

  • server.py : el punto de entrada principal que contiene la implementación del servidor MCP.
  • SnowflakeConnection : clase que maneja todas las operaciones de la base de datos Snowflake, incluidas:
    • Establecimiento y reconexión de la conexión
    • Ejecución de consultas y gestión de transacciones
    • Mantenimiento y limpieza de la conexión
  • SnowflakeMCPServer : la clase de servidor principal que implementa el protocolo MCP:
    • Registra las herramientas disponibles con el marco MCP
    • Gestiona solicitudes de llamadas a herramientas de los clientes.
    • Gestiona el ciclo de vida de las conexiones.

Ciclo de vida de la conexión

El ciclo de vida de la conexión se gestiona cuidadosamente para garantizar la confiabilidad:

  1. Inicialización : las conexiones se crean de forma diferida cuando se recibe la primera consulta
  2. Validación : los parámetros de conexión se validan antes de intentar conectarse
  3. Monitoreo : Las conexiones se prueban periódicamente para verificar su validez.
  4. Recuperación : reconexión automática si se pierde o se agota el tiempo de conexión
  5. Limpieza : liberación adecuada de recursos cuando se apaga el servidor

Interfaz de la herramienta MCP

El servidor expone la siguiente herramienta a los clientes MCP:

  • execute_query : ejecuta una consulta SQL en Snowflake y devuelve los resultados.
    • Entrada: cadena de consulta SQL
    • Salida: Resultados de la consulta en un formato estructurado
  • export_to_csv : ejecuta una consulta SQL en Snowflake y devuelve los resultados
    • Entrada: cadena de consulta SQL
    • Salida: Número de filas exportadas. Ruta del archivo de salida.

Esta implementación sigue las mejores prácticas tanto para la implementación del protocolo MCP como para la interacción con la base de datos Snowflake.

Licencia

Este proyecto está licenciado bajo la Licencia MIT . Consulte el archivo de LICENCIA para más detalles.

Derechos de autor (c) 2025 David Amom

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Un servidor de protocolo de contexto de modelo que proporciona acceso a las bases de datos de Snowflake para cualquier cliente compatible con MCP, lo que permite la ejecución de consultas SQL con gestión automática de conexión.

  1. Descripción general de la arquitectura
    1. ¿Qué es MCP (Protocolo de Contexto Modelo)?
    2. Componentes del sistema
    3. Flujo de comunicación
  2. Instalación
    1. Configuración
      1. Ejemplo de configuración de cliente MCP
      2. Configuración de copo de nieve
    2. Gestión de conexiones
      1. Uso
        1. Uso estándar
        2. Uso de Docker
      2. Características
        1. Detalles técnicos
          1. Componentes principales
          2. Ciclo de vida de la conexión
          3. Interfaz de la herramienta MCP
        2. Licencia

          Related MCP Servers

          • -
            security
            A
            license
            -
            quality
            A Model Context Protocol server that enables Claude to execute SQL queries on Snowflake databases with automatic connection lifecycle management.
            Last updated -
            28
            Python
            MIT License
            • Apple
            • Linux
          • -
            security
            -
            license
            -
            quality
            A Model Context Protocol server that provides tools for connecting to and interacting with various database systems (SQLite, PostgreSQL, MySQL/MariaDB, SQL Server) through a unified interface.
            Last updated -
            Python
          • -
            security
            F
            license
            -
            quality
            A Model Context Protocol server that provides tools for interacting with databases, including PostgreSQL, DuckDB, and Google Cloud Storage Parquet files.
            Last updated -
            2
            TypeScript
            • Linux
            • Apple
          • A
            security
            F
            license
            A
            quality
            A Model Context Protocol server that provides a SQL interface for querying and managing Apache Iceberg tables through Claude desktop, allowing natural language interaction with Iceberg data lakes.
            Last updated -
            1
            2
            Python

          View all related MCP servers

          MCP directory API

          We provide all the information about MCP servers via our MCP API.

          curl -X GET 'https://glama.ai/api/mcp/v1/servers/davidamom/snowflake-mcp'

          If you have feedback or need assistance with the MCP directory API, please join our Discord server