Snowflake账户分析服务器

一个提供全面Snowflake账户分析的MCP服务器,通过灵活查询工具和智能洞察执行自定义查询、监控安全、优化成本和分析性能。

  • by alvinlee00
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 alvinlee00/mcp-snowflake-server

使用说明

MCP雪花账户智能服务器

模型上下文协议(MCP)服务器,通过灵活的查询工具和智能洞察提供全面的Snowflake帐户分析。通过自然语言交互执行自定义查询、监控安全性、优化成本和分析性能。

特性

🔍 通用查询功能(新增)

  • 执行自定义查询:使用AI解释对ACCOUNT_UAGE运行任何SELECT查询
  • 架构资源管理器:在ACCOUNT_UAGE中查找可用的表和列
  • 查询生成器助手:获取从自然语言构建查询的帮助
  • 智能结果解读:AI分析结果并建议下一步行动

🔐 安全和访问监控(新)

  • 身份验证分析:跟踪RSA与用户密码使用情况
  • 权限审核:监控角色授予和权限更改
  • 异常检测:识别异常访问模式和潜在威胁
  • 合规报告:以安全为重点的审计分析

🚀 性能分析

  • 慢速查询检测:查找并分析最慢的查询
  • 查询模式分析:识别频繁重复的昂贵查询
  • 执行时间分布:了解您的查询性能模式
  • 查询加速机会:查找符合加速条件的查询

💰 成本优化

  • 仓库成本分析:按仓库跟踪信用消费
  • 每次查询成本分析:计算效率指标
  • 昂贵的查询标识:查找成本最高的业务
  • 用户成本分析:按用户监控资源消耗

📊 监控和利用

  • 仓库利用率:分析使用模式和规模
  • 优化报告:综合分析并提出建议
  • 实时监控:跟踪使用趋势和异常情况

快速开始

1.安装

# Clone the repository
git clone <repository-url>
cd mcp-snowflake-server

# Create virtual environment
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

2.配置

复制 .env.example 向 .env 并配置身份验证:

cp .env.example .env

选项A:密码验证(简单)

编辑 .env:

SNOWFLAKE_ACCOUNT=your-account.snowflakecomputing.com
SNOWFLAKE_USER=your-username
SNOWFLAKE_PASSWORD=your-password
SNOWFLAKE_WAREHOUSE=your-warehouse
SNOWFLAKE_ROLE=ACCOUNTADMIN
SNOWFLAKE_CREDIT_PRICE=4.00

选项B:RSA密钥身份验证(推荐)

  1. 生成RSA密钥对 (如果你没有):
# Generate private key
openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -out rsa_key.p8 -nocrypt

# Generate public key
openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
  1. 向Snowflake用户添加公钥:
-- In Snowflake, run this with your public key content
ALTER USER your_username SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0B...';
  1. 配置.env:
SNOWFLAKE_ACCOUNT=your-account.snowflakecomputing.com
SNOWFLAKE_USER=your-username
SNOWFLAKE_WAREHOUSE=your-warehouse
SNOWFLAKE_ROLE=ACCOUNTADMIN
SNOWFLAKE_PRIVATE_KEY_PATH=/path/to/your/rsa_key.p8
SNOWFLAKE_PRIVATE_KEY_PASSPHRASE=your-passphrase-if-any
SNOWFLAKE_CREDIT_PRICE=4.00

3.测试服务器

# Test the server locally
cd src
python server.py

4.配置克劳德桌面

将服务器添加到Claude Desktop配置中(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "snowflake-optimizer": {
      "command": "python",
      "args": ["/absolute/path/to/mcp-snowflake-server/src/server.py"],
      "env": {
        "SNOWFLAKE_ACCOUNT": "your-account.snowflakecomputing.com",
        "SNOWFLAKE_USER": "your-username",
        "SNOWFLAKE_PASSWORD": "your-password",
        "SNOWFLAKE_WAREHOUSE": "your-warehouse",
        "SNOWFLAKE_ROLE": "ACCOUNTADMIN",
        "SNOWFLAKE_CREDIT_PRICE": "4.00"
      }
    }
  }
}

重新启动Claude Desktop以加载服务器。

可用工具

通用查询工具(新)

  • execute_query(query, limit=1000, interpret=True) -使用AI解释执行任何SELECT查询
  • explore_schema(table_pattern=None, show_columns=False) -探索ACCOUNT_USAGE表和列
  • help_build_query(description) -获取从自然语言构建查询的帮助

安全工具(新)

  • check_user_authentication(users=None, days_back=30) -分析RSA与密码身份验证
  • audit_privileges(days_back=7, role_filter=None) -跟踪权限和角色更改
  • detect_anomalies(days_back=7, sensitivity="medium") -检测异常访问模式

性能工具

  • find_slow_queries(hours_back=24, limit=50) -查找最慢的查询
  • analyze_repeated_queries(hours_back=168, limit=50) -识别重复的昂贵模式
  • query_execution_distribution(days_back=7) -分析执行时间分布
  • query_acceleration_candidates(days_back=7, limit=50) -寻找加速机会

成本工具

  • warehouse_cost_analysis(days_back=7) -分析仓库成本
  • cost_per_query_analysis(days_back=30) -计算每次查询的成本
  • find_most_expensive_queries(days_back=7, limit=25) -查找昂贵的查询
  • user_cost_analysis(days_back=7) -按用户分析成本

监视工具

  • warehouse_utilization_analysis(days_back=7) -分析仓库利用率
  • optimization_report(days_back=7) -生成综合报告

可用提示

在Claude Desktop中使用以下提示进行指导工作流程:

  • “优化雪花成本” -完整的成本优化工作流程
  • “查找性能_瓶颈” -性能分析工作流程
  • “每周优化_查看” -生成每周优化报告
  • “安全审计” -综合安全分析(新增)
  • “自定义分析” -交互式查询构建辅助(新)

示例用法

通用查询执行(新):

Execute this query: SELECT COUNT(*) FROM LOGIN_HISTORY WHERE FIRST_AUTHENTICATION_FACTOR = 'PASSWORD'
Show me all tables in ACCOUNT_USAGE that contain user activity data
Help me build a query to find users who haven't logged in for 30 days

安全分析(新增):

Check if these users are using both RSA and password: ['USER1', 'USER2', 'USER3']
Audit privilege changes for the ACCOUNTADMIN role in the last week
Detect any unusual access patterns with high sensitivity

成本与性能:

Can you help me optimize my Snowflake costs?
Use the find_slow_queries tool to show me queries from the last 48 hours
Generate an optimization report for the last 14 days

需求

  • Python 3.10+
  • 具有ACCOUNTADMIN角色的雪花帐户(用于account_SAGE架构访问)
  • Claude Desktop(用于MCP集成)

重要提示

  • 数据延迟:ACCOUNT_USAGE视图存在延迟:
    • 查询历史:45分钟
    • 仓库_仓库_仓库:3小时
    • 仓库_装载_历史:3小时
    • 查询_取消_义务:3小时
  • 数据保留:365天的历史数据可用
  • 权限:访问ACCOUNT_SAGE架构需要ACCOUNTADMIN角色
  • 演出:ACCOUNT_USAGE查询在大型数据集上可能很慢;考虑添加日期过滤器
  • 列选择:始终选择特定列,而不是使用select*以获得更好的性能

安全说明

  • 将凭据安全地存储在环境变量中
  • 尽可能使用最低权限访问
  • 访问ACCOUNT_SAGE架构需要ACCOUNTADMIN角色
  • 考虑在生产部署中使用密钥对身份验证

项目结构

mcp-snowflake-server/
├── src/
│   ├── server.py              # Main MCP server
│   ├── tools/                 # MCP tool implementations
│   │   ├── performance.py     # Performance analysis tools
│   │   ├── costs.py          # Cost optimization tools
│   │   └── monitoring.py     # Monitoring tools
│   ├── queries/              # SQL query templates
│   │   └── optimization_queries.py
│   └── utils/               # Utilities
│       └── snowflake_connection.py
├── requirements.txt
├── .env.example
└── README.md

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改和测试
  4. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

支持

对于问题和疑问:

  1. 查看GitHub问题
  2. 查看Snowflake文档中的ACCOUNT_SAGE模式
  3. 请参阅modelcontextprotocol.io上的MCP文档