使用说明
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密钥身份验证(推荐)
- 生成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
- 向Snowflake用户添加公钥:
-- In Snowflake, run this with your public key content
ALTER USER your_username SET RSA_PUBLIC_KEY='MIIBIjANBgkqhkiG9w0B...';
- 配置.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
贡献
- 分叉存储库
- 创建要素分支
- 进行更改和测试
- 提交拉取请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和疑问:
- 查看GitHub问题
- 查看Snowflake文档中的ACCOUNT_SAGE模式
- 请参阅modelcontextprotocol.io上的MCP文档