这是一个用于执行只读操作的Model Context Protocol (MCP)服务器,针对Snowflake数据库。此工具使Claude能够安全地查询Snowflake数据而不修改任何信息。
该服务器提供了以下工具用于查询Snowflake:
克隆此仓库:
git clone https://github.com/yourusername/snowflake-mcp-server.git
cd snowflake-mcp-server
安装包:
uv pip install -e .
创建包含您的Snowflake凭证的.env文件:
根据您首选的身份验证方法选择提供的示例文件之一:
对于私钥身份验证:
cp .env.private_key.example .env
然后编辑.env文件以设置您的Snowflake账户详情和私钥路径。
对于外部浏览器身份验证:
cp .env.browser.example .env
然后编辑.env文件以设置您的Snowflake账户详情。
安装包后,您可以直接运行服务器:
uv run snowflake-mcp
# 或者明确使用stdio传输
uv run snowflake-mcp-stdio
这将启动基于stdio的MCP服务器,可以连接到Claude Desktop或其他支持stdio通信的MCP客户端。
当使用外部浏览器认证时,会自动打开浏览器窗口提示您登录到Snowflake账户。
在Claude Desktop中,转到设置 → MCP服务器
添加一个新的服务器,使用您的uv可执行文件的完整路径:
"snowflake-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/<代码路径>/snowflake-mcp-server",
"run",
"snowflake-mcp"
]
}
或者明确指定stdio传输:
"snowflake-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/<代码路径>/snowflake-mcp-server",
"run",
"snowflake-mcp-stdio"
]
}
您可以通过在终端中运行which uv找到您的uv路径
保存服务器配置
与Claude一起使用时,您可以提出如下问题:
连接池行为可通过环境变量进行配置:
SNOWFLAKE_CONN_REFRESH_HOURS:连接刷新之间的间隔时间(小时,默认值:8)示例.env配置:
# 设置连接每4小时刷新一次
SNOWFLAKE_CONN_REFRESH_HOURS=4
此方法使用服务账户和私钥进行非交互式认证,适用于自动化流程。
.env文件中设置SNOWFLAKE_AUTH_TYPE=private_keySNOWFLAKE_PRIVATE_KEY_PATH中提供您的私钥路径此方法打开浏览器窗口进行交互式认证。
.env文件中设置SNOWFLAKE_AUTH_TYPE=external_browser此服务器:
⚠️ 重要:确保您的.env文件安全,并且不要将其提交到版本控制。.gitignore文件已配置排除它。
mypy mcp_server_snowflake/
ruff check .
ruff format .
pytest
欢迎贡献!请随时提交Pull Request。
本项目使用了: