项目简介

'mcp-server-snowflake' 是一个使用 TypeScript 开发的 MCP(Model Context Protocol)服务器实现。它旨在为大型语言模型(LLM)提供标准化的接口,使其能够安全、高效地连接并操作 Snowflake 数据库,从而将 Snowflake 的数据能力无缝集成到各种 LLM 应用中。

主要功能点

  • LLM 与 Snowflake 交互: 允许 LLM 通过预定义的工具直接向 Snowflake 数据库发送查询请求并获取结果。
  • 数据库结构探索: 提供查询和列出 Snowflake 账户中所有可用数据库、模式(Schema)和表格的功能。
  • 表格详情查看: 能够获取指定表格的详细结构信息,如列名、数据类型等。
  • 安全认证支持: 支持通过环境变量或密钥对(Key-Pair)等多种方式进行 Snowflake 数据库的安全认证。
  • 易于集成: 可与 Claude Desktop、Cursor、Continue 等任何兼容 MCP 协议的客户端工具轻松连接和使用。

安装步骤

在您的开发或部署环境中,按照以下步骤安装和构建服务器:

  1. 克隆仓库:
    git clone https://github.com/patrickfreyer/mcp-server-snowflake.git
    cd mcp-server-snowflake
  2. 安装依赖:
    npm install
  3. 构建服务器:
    npm run build

服务器配置

要让您的 MCP 客户端(如 Claude Desktop 或 Cursor)能够连接并使用此 Snowflake MCP 服务器,您需要在客户端的配置中添加服务器信息。以下是一个配置示例,您需要根据实际情况修改路径和 Snowflake 凭据:

{
  "mcpServers": {
    "snowflake": {
      "command": "node",
      "args": ["/您的/服务器/项目/路径/mcp-server-snowflake/dist/index.js"],
      "env": {
        "SNOWFLAKE_ACCOUNT": "您的Snowflake账户名 (例如: your-account.region.provider)",
        "SNOWFLAKE_USER": "您的Snowflake用户名",
        "SNOWFLAKE_PASSWORD": "您的Snowflake密码",
        "SNOWFLAKE_WAREHOUSE": "可选:Snowflake数据仓库名称,如 YOUR_WAREHOUSE",
        "SNOWFLAKE_DATABASE": "可选:默认数据库名称,如 YOUR_DATABASE",
        "SNOWFLAKE_SCHEMA": "可选:默认模式名称,如 YOUR_SCHEMA",
        "SNOWFLAKE_ROLE": "可选:Snowflake角色,如 YOUR_ROLE"
      }
    }
  }
}

请务必将 '"/您的/服务器/项目/路径/mcp-server-snowflake/dist/index.js"' 替换为您的 'mcp-server-snowflake' 项目实际编译后的 'index.js' 文件的绝对路径。同时,填入您的 Snowflake 账户凭据和其他可选配置。

基本使用方法

当服务器配置并运行成功后,您的 MCP 客户端集成的 LLM 就可以通过调用以下工具与 Snowflake 数据库进行交互:

  • 'read_query': 执行 SELECT 查询,例如:'call_tool("read_query", {"query": "SELECT * FROM customers LIMIT 10"})'
  • 'list_databases': 列出所有可用的数据库。
  • 'list_schemas': 列出指定数据库中的所有模式,例如:'call_tool("list_schemas", {"database": "MY_DATABASE"})'
  • 'list_tables': 列出指定模式中的所有表格,例如:'call_tool("list_tables", {"database": "MY_DATABASE", "schema": "MY_SCHEMA"})'
  • 'describe_table': 获取指定表格的详细结构信息,例如:'call_tool("describe_table", {"table_name": "MY_DATABASE.MY_SCHEMA.MY_TABLE"})'

LLM 将能够根据需要选择合适的工具,向其传递参数,并接收 Snowflake 数据库返回的结果。

信息

分类

数据库与文件