Snowflake Cortex AI

Un servidor MCP para Snowflake que proporciona herramientas para funciones de Cortex AI como Search, Analyst y Complete.

Documentación

Servidor de Protocolo de Contexto de Modelo (MCP) de Snowflake Cortex AI

image

Este servidor MCP de Snowflake proporciona herramientas para las funciones de Snowflake Cortex AI, llevando 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.

El servidor MCP actualmente admite las siguientes capacidades de Cortex AI:

  • Cortex Search: Consulta datos no estructurados en Snowflake, como se usa comúnmente en aplicaciones de Generación Aumentada por Recuperación (RAG).
  • Cortex Analyst: Consulta datos estructurados en Snowflake mediante un modelado semántico enriquecido.
  • Cortex Complete: Finalización de chat simple con parámetros opcionales utilizando varios LLM disponibles.
  • Cortex Agent: (Próximamente) Orquestador agéntico para la recuperación de datos estructurados y no estructurados.

Primeros pasos

Configuración del servicio

Se utiliza un archivo de configuración simple para crear herramientas para las diversas funciones de Cortex AI. Se puede ver un ejemplo en services/service_config.yaml y a continuación se muestra una plantilla. Se pueden agregar muchos servicios de 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 el contenido se utilizará para crear herramientas del servidor MCP al inicio.

cortex_complete: # Set default model if one is not specified by user in Cortex Copmlete tool
  default_model: "snowflake-llama-3.3-70b"
search_services: # List all Cortex Search services
  - service_name: "<service_name>"
    description: > # Should start with "Search service that ..."
      "<Search services that ...>"
    database_name: "<database_name>"
    schema_name: "<schema_name>"
  - service_name: "<service_name>"
    description: > # Should start with "Search service that ..."
      "<Search services that ...>"
    database_name: "<database_name>"
    schema_name: "<schema_name>"
analyst_services: # List all Cortex Analyst semantic models/views
  - service_name: "<service_name>" # Create descriptive name for the service
    semantic_model: "<semantic_yaml_or_view>" # Fully-qualify semantic YAML model or Semantic View
    description: > # Should start with "Analyst service that ..."
      "<Analyst service that ...>"
  - service_name: "<service_name>" # Create descriptive name for the service
    semantic_model: "<semantic_yaml_or_view>" # Fully-qualify semantic YAML model or Semantic View
    description: > # Should start with "Analyst service that ..."
      "<Analyst service that ...>"

Identificador de cuenta de Snowflake

Se necesitará un nombre de usuario y un identificador de cuenta de Snowflake para conectarse. Desde Snowsight, seleccione su nombre de usuario y Conecte una herramienta a Snowflake para obtener su identificador de cuenta de Snowflake. Esto se pasará al servidor al inicio.

Autenticación con token de acceso programático

El servidor MCP utiliza Token de acceso programático de Snowflake (PAT) para la autenticación. Siga las instrucciones para generar un nuevo PAT para un usuario determinado. Asegúrese de copiar el token; se pasará al servidor al inicio.

[!IMPORTANT] Los PAT no utilizan roles secundarios. Seleccione un rol específico que tenga acceso a todos los servicios deseados y sus objetos relacionados, O seleccione Cualquiera de mis roles.

Uso con clientes MCP

El servidor MCP es agnóstico respecto al cliente y funcionará con la mayoría de los clientes MCP que admitan funcionalidad básica para herramientas MCP y (opcionalmente) recursos. A continuación se muestran algunos ejemplos.

Claude Desktop

Para integrar este servidor con Claude Desktop como cliente MCP, agregue 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 los valores de las variables de entorno SNOWFLAKE_PAT, SNOWFLAKE_ACCOUNT y SNOWFLAKE_USER.

{
  "mcpServers": {
    "mcp-server-snowflake": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Snowflake-Labs/mcp",
        "mcp-server-snowflake",
        "--service-config-file",
        "<path to file>/service_config.yaml"
      ]
      "env": {
        "SNOWFLAKE_PAT": "<programmatic_access_token>",
        "SNOWFLAKE_ACCOUNT": "<account-identifier>",
        "SNOWFLAKE_USER": "<username>"
      }
    }
  }
}

Cursor

Registre el servidor MCP en Cursor abriendo Cursor y navegando a Configuración -> Configuración de Cursor -> MCP. Agregue lo siguiente.

{
  "mcpServers": {
    "mcp-server-snowflake": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/Snowflake-Labs/mcp",
        "mcp-server-snowflake",
        "--service-config-file",
        "<path to file>/service_config.yaml",
        "--account-identifier",
        "<account-identifier>",
        "--username",
        "<username>",
        "--pat",
        "<programmatic_access_token>"
      ]
    }
  }
}

Agregue el servidor MCP como contexto en el chat.

Para solucionar problemas del servidor de 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 fastagent.config.yaml con una ruta actualizada al archivo de configuración.

# MCP Servers
mcp:
    servers:
        mcp-server-snowflake:
            command: "uvx"
            args: ["--from", "git+https://github.com/Snowflake-Labs/mcp", "mcp-server-snowflake", "--service-config-file", "<path to file>/service_config.yaml"]

Actualice la sección del servidor mcp fastagent.secrets.yaml con variables de entorno.

mcp:
    servers:
        mcp-server-snowflake:
            env:
                SNOWFLAKE_PAT: <add-PAT>
                SNOWFLAKE_ACCOUNT: <add-snowflake-account-identifier>
                SNOWFLAKE_USER: <add-snowflake-username>

Solución de problemas

Ejecutar MCP Inspector

Se sugiere MCP Inspector para solucionar problemas del servidor MCP. Ejecute lo siguiente para lanzar el inspector. Asegúrese de establecer los valores del archivo de configuración del servicio, SNOWFLAKE_ACCOUNT, SNOWFLAKE_USER y SNOWFLAKE_PAT en consecuencia.

npx @modelcontextprotocol/inspector uvx --from "git+https://github.com/Snowflake-Labs/mcp" mcp-server-snowflake --service-config-file "<path_to_file>/service_config.yaml" --account-identifier $SNOWFLAKE_ACCOUNT --username $SNOWFLAKE_USER --pat $SNOWFLAKE_PAT

Preguntas frecuentes

¿Cómo pruebo esto?

  • El servidor MCP está diseñado para usarse como una parte del ecosistema MCP. Piense en él como una colección de herramientas. Necesitará un cliente MCP que actúe como orquestador. Consulte la Introducción a MCP para obtener más información.

¿Dónde se implementa esto? ¿Está en Snowpark Container Services?

  • Todas las herramientas de este servidor MCP son servicios administrados, accesibles a través de la API REST. No es necesario implementar un servicio remoto separado. En cambio, la versión actual del servidor está diseñada 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 iniciará el servicio del servidor por usted. Las versiones futuras del servidor MCP pueden implementarse como un servicio remoto en el futuro.

Estoy recibiendo errores de permisos de mis llamadas a herramientas.

  • Los tokens de acceso programático no evalúan roles secundarios. Al crearlos, seleccione un solo rol que tenga acceso a todos los servicios y sus objetos subyacentes O seleccione cualquier rol. Se deberá crear un nuevo PAT para modificar esta propiedad.

¿Cuántos Cortex Search o Cortex Analyst puedo agregar?

  • Puede agregar múltiples instancias de ambos servicios. El cliente MCP determinará cuál(es) usar según la solicitud del usuario.

Informes de errores, comentarios u otras preguntas

Por favor, agregue problemas al repositorio de GitHub.