Snowflake

Integração com banco de dados Snowflake com capacidades de leitura/escrita e rastreamento de insights

Documentação

MseeP.ai Security Assessment Badge

Servidor MCP Snowflake


Visão Geral

Uma implementação de servidor Model Context Protocol (MCP) que fornece interação com banco de dados Snowflake. Este servidor permite executar consultas SQL por meio de ferramentas e expõe insights de dados e contexto de esquema como recursos.


Componentes

Recursos

  • memo://insights
    Um memorando continuamente atualizado que agrega insights de dados descobertos.
    Atualizado automaticamente quando novos insights são adicionados por meio da ferramenta append_insight.

  • context://table/{table_name}
    (Se a pré-busca estiver habilitada) Resumos de esquema por tabela, incluindo colunas e comentários, expostos como recursos individuais.


Ferramentas

O servidor expõe as seguintes ferramentas:

Ferramentas de Consulta

  • read_query
    Executa consultas SELECT para ler dados do banco de dados.
    Entrada:

    • query (string): A consulta SQL SELECT a ser executada
      Retorna: Resultados da consulta como array de objetos
  • write_query (habilitada apenas com --allow-write)
    Executa consultas INSERT, UPDATE ou DELETE.
    Entrada:

    • query (string): A consulta de modificação SQL
      Retorna: Número de linhas afetadas ou confirmação
  • create_table (habilitada apenas com --allow-write)
    Cria novas tabelas no banco de dados.
    Entrada:

    • query (string): Instrução SQL CREATE TABLE
      Retorna: Confirmação da criação da tabela

Ferramentas de Esquema

  • list_databases
    Lista todos os bancos de dados na instância Snowflake.
    Retorna: Array de nomes de bancos de dados

  • list_schemas
    Lista todos os esquemas dentro de um banco de dados específico.
    Entrada:

    • database (string): Nome do banco de dados
      Retorna: Array de nomes de esquemas
  • list_tables
    Lista todas as tabelas dentro de um banco de dados e esquema específicos.
    Entrada:

    • database (string): Nome do banco de dados
    • schema (string): Nome do esquema
      Retorna: Array de metadados de tabelas
  • describe_table
    Visualiza informações de colunas para uma tabela específica.
    Entrada:

    • table_name (string): Nome totalmente qualificado da tabela (database.schema.table)
      Retorna: Array de definições de colunas com nomes, tipos, nulidade, padrões e comentários

Ferramentas de Análise

  • append_insight
    Adiciona novos insights de dados ao recurso de memorando.
    Entrada:
    • insight (string): Insight de dados descoberto a partir da análise
      Retorna: Confirmação da adição do insight
      Efeito: Aciona a atualização do recurso memo://insights

Uso com Claude Desktop

Instalação via Smithery

Para instalar o Snowflake Server para Claude Desktop automaticamente via Smithery:

npx -y @smithery/cli install mcp_snowflake_server --client claude

Instalação via UVX

Configuração Tradicional (Parâmetros Individuais)

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

Configuração TOML (Recomendada)

"mcpServers": {
  "snowflake_production": {
    "command": "uvx",
    "args": [
      "--python=3.12",
      "mcp_snowflake_server",
      "--connections-file", "/path/to/snowflake_connections.toml",
      "--connection-name", "production"
      // Optionally: "--allow_write"
      // Optionally: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  },
  "snowflake_staging": {
    "command": "uvx",
    "args": [
      "--python=3.12",
      "mcp_snowflake_server",
      "--connections-file", "/path/to/snowflake_connections.toml",
      "--connection-name", "staging"
    ]
  }
}

Instalação Local

  1. Instale o Claude AI Desktop App

  2. Instale o uv:

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. Crie um arquivo .env com suas credenciais do 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"
SNOWFLAKE_PASSWORD="xxx"
SNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
  1. [Opcional] Modifique o runtime_config.json para definir padrões de exclusão para bancos de dados, esquemas ou tabelas.

  2. Teste localmente:

uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
  1. Adicione o servidor ao seu claude_desktop_config.json:

Configuração Tradicional (Usando Variáveis de Ambiente)

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

Configuração TOML (Recomendada)

"mcpServers": {
  "snowflake_local": {
    "command": "/absolute/path/to/uv",
    "args": [
      "--python=3.12",
      "--directory", "/absolute/path/to/mcp_snowflake_server",
      "run", "mcp_snowflake_server",
      "--connections-file", "/absolute/path/to/snowflake_connections.toml",
      "--connection-name", "development"
      // Optionally: "--allow_write"
      // Optionally: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

Notas

  • Por padrão, operações de escrita estão desabilitadas. Habilite-as explicitamente com --allow-write.
  • O servidor suporta filtragem de bancos de dados, esquemas ou tabelas específicos via padrões de exclusão.
  • O servidor expõe recursos adicionais de contexto por tabela se a pré-busca estiver habilitada.
  • A ferramenta append_insight atualiza o recurso memo://insights dinamicamente.

Licença

MIT