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.
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:
- Servidor MCP : componente central que implementa el protocolo MCP y maneja las solicitudes de los clientes
- Snowflake Connection Manager : administra las conexiones de bases de datos, incluida la creación, el mantenimiento y la limpieza.
- Procesador de consultas : ejecuta consultas SQL en Snowflake y procesa los resultados.
- Administrador de autenticación : maneja diferentes métodos de autenticación (contraseña o clave privada)
Flujo de comunicación
El sistema funciona mediante el siguiente flujo de comunicación:
- Un cliente MCP (como Claude u otra aplicación compatible con MCP) envía una solicitud al servidor MCP
- El servidor MCP se autentica con Snowflake utilizando las credenciales del archivo
.env
- El servidor MCP ejecuta consultas SQL en Snowflake
- Snowflake devuelve resultados al servidor MCP
- El servidor MCP formatea y envía los resultados al cliente MCP
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
- Clonar este repositorio
- Instalar dependencias
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:
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:
MacOS/Linux:
Configuración de copo de nieve
Cree un archivo .env
en el directorio raíz del proyecto y agregue la siguiente configuración:
Opciones de autenticación
Este servidor MCP admite dos métodos de autenticación:
- Autenticación de contraseña
- Autenticación de par de clavesPara 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:
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.
- Construya la imagen de Docker:
- Configura tu cliente MCP para usar Docker. Ejemplo de configuración:
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:
Y actualice su configuración según corresponda:
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:
- Inicialización : las conexiones se crean de forma diferida cuando se recibe la primera consulta
- Validación : los parámetros de conexión se validan antes de intentar conectarse
- Monitoreo : Las conexiones se prueban periódicamente para verificar su validez.
- Recuperación : reconexión automática si se pierde o se agota el tiempo de conexión
- 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
This server cannot be installed
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.
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that enables Claude to execute SQL queries on Snowflake databases with automatic connection lifecycle management.Last updated -28PythonMIT License
- -security-license-qualityA 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
- -securityFlicense-qualityA Model Context Protocol server that provides tools for interacting with databases, including PostgreSQL, DuckDB, and Google Cloud Storage Parquet files.Last updated -2TypeScript
- AsecurityFlicenseAqualityA 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 -12Python