Servidor Snowflake Cortex AI Model Context Protocol (MCP)
Este servidor Snowflake MCP proporciona herramientas para las funciones de Snowflake Cortex AI, aportando estas capacidades al ecosistema MCP. Cuando se conecta a un cliente MCP (por ejemplo, Claude for Desktop, fast-agent, Agentic Orchestration Framework), los usuarios pueden aprovechar estas funciones de Cortex AI.
Actualmente, el servidor MCP admite las siguientes funciones de Cortex AI:
- Búsqueda Cortex: Consulta de datos no estructurados en Snowflake, como se utiliza habitualmente en las aplicaciones de Generación Aumentada de Recuperación (RAG).
- Cortex Analyst: Consulta de datos estructurados en Snowflake a través de un rico modelado semántico.
- Cortex Agent:(próximamente) orquestador agenético para la recuperación de datos estructurados y no estructurados
Primeros pasos
Configuración del servicio
Se utiliza un sencillo archivo de configuración para crear herramientas para las distintas funciones de Cortex AI. Puede ver un ejemplo en services/tools_config.yaml y una plantilla a continuación. Se pueden añadir muchos servicios Cortex Search y Cortex Analyst. Las descripciones ideales son altamente descriptivas y mutuamente excluyentes. La ruta a este archivo de configuración se pasará al servidor y su contenido se utilizará para crear las herramientas del servidor MCP al iniciarse.
search_services: # Lista todos los servicios de búsqueda Cortex - service_name: "<service_name>" description: > # Debe empezar por "Servicio de búsqueda que ..." "<Servicios de búsqueda que ...>" database_name: "<database_name>" schema_name: "<schema_name>" columns: [] # Opcional: Lista de columnas a devolver por cada resultado relevante (por defecto: []) limit: 10 # Opcional: Límite del número de resultados a devolver (por defecto: 10) - service_name: "<service_name>" description: > # Debe empezar por "Servicio de búsqueda que..." "<Servicios de búsqueda que...>" database_name: "<database_name>" schema_name: "<schema_name>" columns: [] # Opcional: Lista de columnas a devolver por cada resultado relevante (por defecto: []) limit: 10 # Opcional: Límite en el número de resultados a devolver (por defecto: 10) analyst_services: # Lista todos los modelos/vistas semánticas de Cortex Analyst - service_name: "<service_name>" # Crear nombre descriptivo para el servicio semantic_model: "<semantic_yaml_or_view>" # Descripción del modelo semántico YAML o de la vista semántica: > # Debe empezar por "Servicio de analista que..." "<Servicio de analista que...>" - service_name: "<nombre_del_servicio>" # Crear nombre descriptivo para el servicio semantic_model: "<semantic_yaml_or_view>" # Calificar completamente el modelo YAML semántico o la descripción de la vista semántica: > # Debe empezar por "Servicio de analista que..." "<Servicio de analista que...>"
Conexión a Snowflake
El servidor MCP utiliza el Snowflake Python Connector para todos los métodos de autenticación y conexión. Consulte la documentación oficial de Snowflake para conocer todas las opciones de autenticación y las mejores prácticas.
Los parámetros de conexión pueden pasarse como argumentos CLI y/o variables de entorno. El servidor soporta todos los métodos de autenticación disponibles en el Snowflake Python Connector, incluyendo:
- Autenticación por nombre de usuario/contraseña
- Autenticación por par de claves
- Autenticación OAuth
- Inicio de sesión único (SSO)
- Autenticación multifactor (MFA)
Parámetros de conexión
Los parámetros de conexión pueden pasarse como argumentos CLI y/o variables de entorno:
Parámetro | Argumentos CLI | Variable de entorno | Descripción |
---|---|---|---|
Cuenta | --cuenta | COPO_NIEVE_CUENTA | Identificador de la cuenta (por ejemplo, xy12345.us-east-1) |
Host | --host | SNOWFLAKE_HOST | URL del host de Snowflake |
Usuario | --usuario, --username | SNOWFLAKE_USUARIO | Nombre de usuario para la autenticación |
Contraseña | --contraseña | SNOWFLAKE_PASSWORD | Contraseña o token de acceso programático |
Rol | --role | SNOWFLAKE_ROLE | Rol a utilizar para la conexión |
Almacén | --almacén | COPO_NIEVE_ALMACÉN | Almacén que se utilizará para las consultas |
Código de acceso en contraseña | --Código de acceso en la contraseña | - | Si el código de acceso está incrustado en la contraseña |
Código de acceso | --passcode | SNOWFLAKE_PASSCODE | Código de acceso MFA para la autenticación |
Clave privada | --clave privada | COPO_NIEVE_CLAVE_PRIVADA | Clave privada para la autenticación de pares de claves |
Archivo de clave privada | --Archivo de claves privadas | COPO_NIEVE_ARCHIVO_CLAVE_PRIVADA | Ruta al archivo de clave privada |
Contraseña de clave privada | --private-key-pwd | COPO_NIEVE_CLAVE_PRIVADA_PWD | Contraseña para la clave privada cifrada |
Autenticador | --Autenticador | - | Tipo de autenticación (por defecto: snowflake) |
Nombre de la conexión | --nombre de la conexión | - | Nombre de la conexión del archivo connections.toml (o config.toml) |
[Aviso de obsoleto: Los argumentos CLI
--account-identifier
y--pat
, así como la variable de entornoSNOWFLAKE_PAT
, están obsoletos y serán eliminados en una futura versión. Utilice--account
y--password
(oSNOWFLAKE_ACCOUNT
ySNOWFLAKE_PASSWORD
) en su lugar.
Uso con clientes MCP
El servidor MCP es independiente del cliente y funcionará con la mayoría de los clientes MCP que admitan la funcionalidad básica de las herramientas MCP y (opcionalmente) los recursos. A continuación se muestran algunos ejemplos.
Claude Desktop
Para integrar este servidor con Claude Desktop como cliente MCP, añada lo siguiente a la configuración del servidor de su aplicación. Por defecto, se encuentra en
- macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
- Windows: %APPDATA%\Claude\claude_desktop_config.json
Establezca la ruta al archivo de configuración del servicio y configure su método de conexión.
{ "mcpServers": { "mcp-server-snowflake": { "command": "uvx", "args": [ "--from", "git+https://github.com/Snowflake-Labs/mcp", "mcp-server-snowflake", "--service-config-file", "<ruta al fichero>/tools_config.yaml", "--connection-name", "default" ] } }
Cursor
Registre el servidor MCP en cursor abriendo Cursor y navegando a Configuración -> Configuración de Cursor -> MCP. Añada lo siguiente
{ "mcpServers": { "mcp-server-snowflake": { "command": "uvx", "args": [ "--from", "git+https://github.com/Snowflake-Labs/mcp", "mcp-server-snowflake", "--service-config-file", "<ruta al archivo>/tools_config.yaml", "--connection-name", "default" ] } }
Añada el servidor MCP como contexto en el chat.
Para solucionar problemas del servidor Cursor, vea los registros abriendo el panel de Salida y seleccionando Cursor MCP en el menú desplegable.
fast-agent
Actualice la sección del servidor mcp de fastagent.config.yaml
con la ruta del archivo de configuración y el nombre de la conexión.
# Servidores MCP mcp: servers: mcp-server-snowflake: command: "uvx" args: ["--from", "git+https://github.com/Snowflake-Labs/mcp", "mcp-server-snowflake", "--service-config-file", "<ruta al archivo>/tools_config.yaml", "--connection-name", "default"]
Microsoft Visual Studio Code + GitHub Copilot
Para conocer los requisitos previos, la configuración del entorno, la guía paso a paso y las instrucciones, consulta este blog.
Solución de problemas
Ejecución del Inspector MCP
El Inspector M CP se sugiere para la solución de problemas del servidor MCP. Ejecute lo siguiente para iniciar el inspector.
npx @modelcontextprotocol/inspector uvx --from "git+https://github.com/Snowflake-Labs/mcp" mcp-server-snowflake --service-config-file "<path_to_file>/tools_config.yaml" --connection-name "default"
Preguntas frecuentes
¿Cómo me conecto a Snowflake?
- El servidor MCP admite todos los métodos de conexión admitidos por el conector Python de Snowflake. Consulte Conexión a Snowflake con el conector Python para obtener más información.
¿Puedo utilizar un Token de Acceso Programático (PAT) en lugar de una contraseña?
- Sí. Pásalo a la bandera CLI --password o establécelo como variable de entorno SNOWFLAKE_PASSWORD.
¿Cómo puedo probarlo?
- El servidor MCP está pensado para ser utilizado como una parte del ecosistema MCP. Piense en él como una colección de herramientas. Necesitarás un cliente MCP para actuar como orquestador. Consulte la Introducción a MCP para obtener más información.
¿Dónde se despliega? ¿Está en Snowpark Container Services?
- Todas las herramientas de este servidor MCP son servicios gestionados, accesibles a través de la API REST. No es necesario desplegar servicios remotos por separado. En su lugar, la versión actual del servidor está pensada para ser iniciada por el cliente MCP, como Claude Desktop, Cursor, fast-agent, etc. Al configurar estos clientes MCP con el servidor, la aplicación arrancará el servicio del servidor por ti. Las futuras versiones del servidor MCP podrán desplegarse como un servicio remoto en el futuro.
Recibo errores de permiso de mis llamadas a herramientas.
- Si utiliza tokens de acceso programático, tenga en cuenta que no evalúan funciones secundarias. Al crearlos, seleccione un único rol que tenga acceso a todos los servicios y sus objetos subyacentes O seleccione cualquier rol. Será necesario crear un nuevo PAT para modificar esta propiedad.
¿Cuántos Cortex Search o Cortex Analysts puedo añadir?
- Puede añadir múltiples instancias de ambos servicios. El Cliente MCP determinará el(los) apropiado(s) a utilizar basándose en la solicitud del usuario.
Ayuda ¿Recibo un error SSLError?
- Si el nombre de su cuenta contiene guiones bajos, intente utilizar la versión con guiones de la URL
- Identificador de cuenta con guiones bajos:
acme-marketing_test_account
- Identificador de cuenta con guiones:
acme-marketing-test-account
- Identificador de cuenta con guiones bajos:
Informes de errores, comentarios u otras preguntas
Por favor, añada problemas al repositorio de GitHub.