Snowflake MCP Server

Um servidor somente leitura para interagir com bancos de dados Snowflake, permitindo consultas SELECT e acesso ao contexto do esquema.

Documentação

Snowflake MCP Server

Ligeiramente alterado de https://github.com/isaacwasserman/mcp-snowflake-server


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. Não inclui a capacidade de executar operações de escrita e inclui um prompt de sistema.


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
    Execute 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

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 tabela
  • 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 UVX

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

Instalação Local

  1. Instale o Claude AI Desktop App

  2. Instale 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"
# Alternatively, use external browser authentication:
# SNOWFLAKE_AUTHENTICATOR="externalbrowser"
  1. [Opcional] Modifique 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:
"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: "--log_dir", "/absolute/path/to/logs"
      // Optionally: "--log_level", "DEBUG"/"INFO"/"WARNING"/"ERROR"/"CRITICAL"
      // Optionally: "--exclude_tools", "{tool_name}", ["{other_tool_name}"]
    ]
  }
}

Notas

  • O servidor suporta a filtragem de bancos de dados, esquemas ou tabelas específicos por meio de padrões de exclusão.
  • O servidor expõe recursos de contexto adicionais por tabela se a pré-busca estiver habilitada.
  • A ferramenta append_insight atualiza o recurso memo://insights dinamicamente.

Licença

MIT