Snowflake数据库查询服务器

一个实现Model Context Protocol(MCP)的服务器,提供与Snowflake数据库的交互功能,支持SQL查询、数据洞察和模式上下文访问。

  • by sgriffin-magnoliacap
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 sgriffin-magnoliacap/mcp-snowflake-server-readonly

使用说明

雪花MCP服务器

略有变化https://github.com/isaacwasserman/mcp-snowflake-server


概述

一种模型上下文协议(MCP)服务器实现,提供与Snowflake的数据库交互。此服务器允许通过工具运行SQL查询,并将数据洞察和模式上下文作为资源公开。不包括执行写操作的能力,并包括系统提示。


组件

资源

  • memo://insights
    一份不断更新的备忘录,汇总了发现的数据见解。
    通过添加新见解时自动更新 append_insight 工具。

  • context://table/{table_name}
    (如果启用了预取)每个表的架构摘要,包括列和注释,作为单独的资源公开。


工具

服务器公开了以下工具:

查询工具

  • read_query
    执行 SELECT 从数据库读取数据的查询。
    输入:
    • query (string):The SELECT 要执行的SQL查询
      退货: 查询结果为对象数组

架构工具

  • list_databases
    列出Snowflake实例中的所有数据库。
    退货: 数据库名称数组

  • list_schemas
    列出特定数据库中的所有模式。
    输入:

    • database (string):数据库的名称
      退货: 架构名称数组
  • list_tables
    列出特定数据库和架构中的所有表。
    输入:

    • database (string):数据库的名称
    • schema (string):架构的名称
      退货: 表元数据数组
  • describe_table
    查看特定表的列信息。
    输入:

    • table_name (string):完全限定的表名(database.schema.table)
      退货: 包含名称、类型、可空性、默认值和注释的列定义数组

分析工具

  • append_insight
    向备忘录资源添加新的数据见解。
    输入:
    • insight (string):从分析中发现的数据洞察力
      退货: 确认洞察力添加
      效果: 触发器更新 memo://insights 资源

使用Claude Desktop

通过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}"]
    ]
  }
}

本地安装

  1. 安装 Claude AI桌面应用程序

  2. 安装 uv:

curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 创建一个 .env 使用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. [可选]修改 runtime_config.json 为数据库、模式或表设置排除模式。

  2. 本地测试:

uv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server
  1. 将服务器添加到您的 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}"]
    ]
  }
}

备注

  • 服务器支持通过排除模式过滤特定的数据库、模式或表。
  • 如果启用了预取,服务器将公开额外的每表上下文资源。
  • 这 append_insight 工具更新 memo://insights 资源动态。

许可证

麻省理工学院