ClawSkills logoClawSkills

Snowflake MCP Connection

使用 Clawdbot 或其他 MCP 客户端连接到 Snowflake 托管 MCP 服务器。在连接 Snowflake MCP 端点、验证连接性或配...

介绍

# Snowflake MCP Connection

使用此技能将 Snowflake 托管 MCP 服务器与 Clawdbot 集成。它涵盖端点创建、身份验证和工具验证,以便通过 MCP 访问 Snowflake 数据。

## 快速开始

### 先决条件

- 具有 ACCOUNTADMIN 角色的 Snowflake 账户 - 来自 Snowflake 的程序化访问令牌 (PAT) - Clawdbot 或任何兼容 MCP 的客户端

### 步骤 1:创建程序化访问令牌 (PAT)

1. 在 Snowsight 中,转到您的用户菜单 → **我的个人资料 (My Profile)** 2. 选择 **程序化访问令牌 (Programmatic Access Tokens)** 3. 为您的角色点击 **创建令牌 (Create Token)** 4. 复制并安全保存该令牌

### 步骤 2:在 Snowflake 中创建 MCP 服务器

在 Snowsight 工作表中运行此 SQL 以创建您的 MCP 服务器:

```sql CREATE OR REPLACE MCP SERVER my_mcp_server FROM SPECIFICATION $ tools: - name: "SQL Execution Tool" type: "SYSTEM_EXECUTE_SQL" description: "Execute SQL queries against the Snowflake database." title: "SQL Execution Tool" $; ```

### 步骤 3:测试连接

使用 curl 进行验证(替换占位符):

```bash curl -X POST "https://YOUR-ORG-YOUR-ACCOUNT.snowflakecomputing.com/api/v2/databases/YOUR_DB/schemas/YOUR_SCHEMA/mcp-servers/my_mcp_server" \ --header 'Content-Type: application/json' \ --header 'Accept: application/json' \ --header "Authorization: Bearer YOUR-PAT-TOKEN" \ --data '{ "jsonrpc": "2.0", "id": 12345, "method": "tools/list", "params": {} }' ```

### 步骤 4:配置 Clawdbot

在项目根目录下创建 `mcp.json`(这是 Clawdbot 可以为会话加载的 MCP 配置):

```json { "mcpServers": { "Snowflake MCP Server": { "url": "https://YOUR-ORG-YOUR-ACCOUNT.snowflakecomputing.com/api/v2/databases/YOUR_DB/schemas/YOUR_SCHEMA/mcp-servers/my_mcp_server", "headers": { "Authorization": "Bearer YOUR-PAT-TOKEN" } } } } ```

启动一个新的 Clawdbot 会话并加载 `mcp.json` 以激活 MCP 连接。Snowflake 工具应该会出现在您的会话中。

### 步骤 5:在 Clawdbot 中验证

1. 启动一个新的 Clawdbot 会话 2. 为该会话加载 `mcp.json` 3. 提出一个触发 Snowflake 工具的问题(例如,SQL 查询)

## MCP 服务器示例

### 仅基础 SQL 执行

```sql CREATE OR REPLACE MCP SERVER sql_mcp_server FROM SPECIFICATION $ tools: - name: "SQL Execution Tool" type: "SYSTEM_EXECUTE_SQL" description: "Execute SQL queries against Snowflake." title: "SQL Execution" $; ```

### 包含 Cortex Search (RAG)

首先在 Snowsight 中创建 Cortex Search 服务(AI & ML → Cortex Search),然后:

```sql CREATE OR REPLACE MCP SERVER search_mcp_server FROM SPECIFICATION $ tools: - name: "Document Search" identifier: "MY_DB.MY_SCHEMA.MY_SEARCH_SERVICE" type: "CORTEX_SEARCH_SERVICE_QUERY" description: "Search and retrieve information from documents using vector search." title: "Document Search" - name: "SQL Execution Tool" type: "SYSTEM_EXECUTE_SQL" description: "Execute SQL queries." title: "SQL Execution" $; ```

### 包含 Cortex Analyst(语义视图)

首先上传语义 YAML 文件或创建语义视图,然后:

```sql CREATE OR REPLACE MCP SERVER analyst_mcp_server FROM SPECIFICATION $ tools: - name: "Sales Analytics" identifier: "MY_DB.MY_SCHEMA.SALES_SEMANTIC_VIEW" type: "CORTEX_ANALYST_MESSAGE" description: "Query sales metrics and KPIs using natural language." title: "Sales Analytics" - name: "SQL Execution Tool" type: "SYSTEM_EXECUTE_SQL" description: "Execute SQL queries." title: "SQL Execution" $; ```

### 包含 Cortex Agent

```sql CREATE OR REPLACE MCP SERVER agent_mcp_server FROM SPECIFICATION $ tools: - name: "Documentation Agent" identifier: "MY_DB.MY_SCHEMA.MY_AGENT" type: "CORTEX_AGENT_RUN" description: "An agent that answers questions using documentation." title: "Documentation Agent" $; ```

### 全功能服务器

```sql CREATE OR REPLACE MCP SERVER full_mcp_server FROM SPECIFICATION $ tools: - name: "Analytics Semantic View" identifier: "ANALYTICS_DB.DATA.FINANCIAL_ANALYTICS" type: "CORTEX_ANALYST_MESSAGE" description: "Query financial metrics, customer data, and business KPIs." title: "Financial Analytics" - name: "Support Tickets Search" identifier: "SUPPORT_DB.DATA.TICKETS_SEARCH" type: "CORTEX_SEARCH_SERVICE_QUERY" description: "Search support tickets and customer interactions." title: "Support Search" - name: "SQL Execution Tool" type: "SYSTEM_EXECUTE_SQL" description: "Execute SQL queries against Snowflake." title: "SQL Execution" - name: "Send_Email" identifier: "MY_DB.DATA.SEND_EMAIL" type: "GENERIC" description: "Send emails to verified addresses." title: "Send Email" config: type: "procedure" warehouse: "COMPUTE_WH" input_schema: type: "object" properties: body: description: "Email body in HTML format." type: "string" recipient_email: description: "Recipient email address." type: "string" subject: description: "Email subject line." type: "string" $; ```

## 工具类型参考

| 类型 | 用途 | |------|---------| | `SYSTEM_EXECUTE_SQL` | 执行任意 SQL 查询 | | `CORTEX_SEARCH_SERVICE_QUERY` | 对非结构化数据进行 RAG 检索 | | `CORTEX_ANALYST_MESSAGE` | 对语义模型进行自然语言查询 | | `CORTEX_AGENT_RUN` | 调用 Cortex Agents | | `GENERIC` | 自定义工具(过程/函数) |

## 优势

- **由设计治理 (Governed by Design)**:应用与您的数据相同的 RBAC 策略 - **无基础设施 (No Infrastructure)**:无需部署本地服务器 - **简化集成 (Reduced Integration)**:连接任何兼容 MCP 的客户端 - **可扩展 (Extensible)**:通过过程/函数添加自定义工具

## 故障排除

### 连接问题

- **SSL 错误**:在账户名中使用连字符 代替下划线 - **401 未授权**:验证 PAT 令牌是否有效且未过期 - **404 未找到**:检查数据库、架构和 MCP 服务器名称

### 测试工具

列出可用工具:

```bash curl -X POST "https://YOUR-ACCOUNT.snowflakecomputing.com/api/v2/databases/DB/schemas/SCHEMA/mcp-servers/SERVER" \ -H "Authorization: Bearer PAT" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' ```

### PAT 令牌说明

- PAT 不评估次要角色 - 创建时选择一个具有所有所需权限的单个角色 - 创建新的 PAT 以更改角色

## 备选方案:本地 MCP 服务器

有关使用 `snowflake-labs-mcp` 包进行本地部署的信息,请参阅 [mcp-client-setup.md](mcp-client-setup.md)。

## 资源

- [Snowflake MCP 服务器指南](https://www.snowflake.com/en/developers/guides/getting-started-with-snowflake-mcp-server/) - [Snowflake MCP 文档](https://docs.snowflake.com/en/user-guide/snowflake-cortex/cortex-agents-mcp) - [GitHub: sfguide-getting-started-with-snowflake-mcp-server](https://github.com/Snowflake-Labs/sfguide-getting-started-with-snowflake-mcp-server) - [MCP 协议](https://modelcontextprotocol.io)

更多产品