{"id":"bde24f55-ebae-459f-a131-9fd266ef3fe9","slug":"isaacwasserman-mcp-snowflake-server","kind":"mcp","name":"mcp-snowflake-server","summary":"","owner":"isaacwasserman","repoUrl":"https://github.com/isaacwasserman/mcp-snowflake-server","license":"GPL-3.0","licenseTier":"strong-copyleft","trust":"community","stars":184,"match":null,"fewStars":false,"format":"mcp","createdAt":"2024-12-13T20:30:59.000Z","addedAt":"2026-10-14T05:18:14.406Z","logoUrl":"https://avatars.githubusercontent.com/u/1498116?v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["databases","cloud-infra"],"tags":[],"runtime":"python","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-17T23:12:48.760Z","sample":false,"url":"https://conduits.dev/tools/isaacwasserman-mcp-snowflake-server","language":"Python","transports":["stdio"],"install":{"pypi":"mcp_snowflake_server"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/isaacwasserman-mcp-snowflake-server-badge.png)](https://mseep.ai/app/isaacwasserman-mcp-snowflake-server)\n\n# Snowflake MCP Server\n---\n\n## Overview\n\nA Model Context Protocol (MCP) server implementation that provides database interaction with Snowflake. This server enables running SQL queries via tools and exposes data insights and schema context as resources.\n\n---\n\n## Components\n\n### Resources\n\n- **`memo://insights`**  \n  A continuously updated memo aggregating discovered data insights.  \n  Updated automatically when new insights are appended via the `append_insight` tool.\n\n- **`context://table/{table_name}`**  \n  (If prefetch enabled) Per-table schema summaries, including columns and comments, exposed as individual resources.\n\n---\n\n### Tools\n\nThe server exposes the following tools:\n\n#### Query Tools\n\n- **`read_query`**  \n  Execute `SELECT` queries to read data from the database.  \n  **Input:**\n\n  - `query` (string): The `SELECT` SQL query to execute  \n    **Returns:** Query results as array of objects\n\n- **`write_query`** (enabled only with `--allow-write`)  \n  Execute `INSERT`, `UPDATE`, or `DELETE` queries.  \n  **Input:**\n\n  - `query` (string): The SQL modification query  \n    **Returns:** Number of affected rows or confirmation\n\n- **`create_table`** (enabled only with `--allow-write`)  \n  Create new tables in the database.  \n  **Input:**\n  - `query` (string): `CREATE TABLE` SQL statement  \n    **Returns:** Confirmation of table creation\n\n#### Schema Tools\n\n- **`list_databases`**  \n  List all databases in the Snowflake instance.  \n  **Returns:** Array of database names\n\n- **`list_schemas`**  \n  List all schemas within a specific database.  \n  **Input:**\n\n  - `database` (string): Name of the database  \n    **Returns:** Array of schema names\n\n- **`list_tables`**  \n  List all tables within a specific database and schema.  \n  **Input:**\n\n  - `database` (string): Name of the database\n  - `schema` (string): Name of the schema  \n    **Returns:** Array of table metadata\n\n- **`describe_table`**  \n  View column information for a specific table.  \n  **Input:**\n  - `table_name` (string): Fully qualified table name (`database.schema.table`)  \n    **Returns:** Array of column definitions with names, types, nullability, defaults, and comments\n\n#### Analysis Tools\n\n- **`append_insight`**  \n  Add new data insights to the memo resource.  \n  **Input:**\n  - `insight` (string): Data insight discovered from analysis  \n    **Returns:** Confirmation of insight addition  \n    **Effect:** Triggers update of `memo://insights` resource\n\n---\n\n## Usage with Claude Desktop\n\n### Installing via Smithery\n\nTo install Snowflake Server for Claude Desktop automatically via [Smithery](https://smithery.ai/server/mcp_snowflake_server):\n\n```bash\nnpx -y @smithery/cli install mcp_snowflake_server --client claude\n```\n\n---\n\n### Installing via UVX\n\n#### Traditional Configuration (Individual Parameters)\n\n```json\n\"mcpServers\": {\n  \"snowflake_pip\": {\n    \"command\": \"uvx\",\n    \"args\": [\n      \"--python=3.12\",  // Optional: specify Python version <=3.12\n      \"mcp_snowflake_server\",\n      \"--account\", \"your_account\",\n      \"--warehouse\", \"your_warehouse\",\n      \"--user\", \"your_user\",\n      \"--password\", \"your_password\",\n      \"--role\", \"your_role\",\n      \"--database\", \"your_database\",\n      \"--schema\", \"your_schema\"\n      // Optionally: \"--private_key_path\", \"your_private_key_absolute_path\"\n      // Optionally: \"--allow_write\"\n      // Optionally: \"--log_dir\", \"/absolute/path/to/logs\"\n      // Optionally: \"--log_level\", \"DEBUG\"/\"INFO\"/\"WARNING\"/\"ERROR\"/\"CRITICAL\"\n      // Optionally: \"--exclude_tools\", \"{tool_name}\", [\"{other_tool_name}\"]\n    ]\n  }\n}\n```\n\n#### TOML Configuration (Recommended)\n\n```json\n\"mcpServers\": {\n  \"snowflake_production\": {\n    \"command\": \"uvx\",\n    \"args\": [\n      \"--python=3.12\",\n      \"mcp_snowflake_server\",\n      \"--connections-file\", \"/path/to/snowflake_connections.toml\",\n      \"--connection-name\", \"production\"\n      // Optionally: \"--allow_write\"\n      // Optionally: \"--log_dir\", \"/absolute/path/to/logs\"\n      // Optionally: \"--log_level\", \"DEBUG\"/\"INFO\"/\"WARNING\"/\"ERROR\"/\"CRITICAL\"\n      // Optionally: \"--exclude_tools\", \"{tool_name}\", [\"{other_tool_name}\"]\n    ]\n  },\n  \"snowflake_staging\": {\n    \"command\": \"uvx\",\n    \"args\": [\n      \"--python=3.12\",\n      \"mcp_snowflake_server\",\n      \"--connections-file\", \"/path/to/snowflake_connections.toml\",\n      \"--connection-name\", \"staging\"\n    ]\n  }\n}\n```\n\n---\n\n### Installing Locally\n\n1. Install [Claude AI Desktop App](https://claude.ai/download)\n\n2. Install `uv`:\n\n```bash\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n```\n\n3. Create a `.env` file with your Snowflake credentials:\n\n```bash\nSNOWFLAKE_USER=\"xxx@your_email.com\"\nSNOWFLAKE_ACCOUNT=\"xxx\"\nSNOWFLAKE_ROLE=\"xxx\"\nSNOWFLAKE_DATABASE=\"xxx\"\nSNOWFLAKE_SCHEMA=\"xxx\"\nSNOWFLAKE_WAREHOUSE=\"xxx\"\nSNOWFLAKE_PASSWORD=\"xxx\"\nSNOWFLAKE_PASSWORD=\"xxx\"\nSNOWFLAKE_PRIVATE_KEY_PATH=/absolute/path/key.p8\n# Alternatively, use external browser authentication:\n# SNOWFLAKE_AUTHENTICATOR=\"externalbrowser\"\n```\n\n4. [Optional] Modify `runtime_config.json` to set exclusion patterns for databases, schemas, or tables.\n\n5. Test locally:\n\n```bash\nuv --directory /absolute/path/to/mcp_snowflake_server run mcp_snowflake_server\n```\n\n6. Add the server to your `claude_desktop_config.json`:\n\n#### Traditional Configuration (Using Environment Variables)\n\n```json\n\"mcpServers\": {\n  \"snowflake_local\": {\n    \"command\": \"/absolute/path/to/uv\",\n    \"args\": [\n      \"--python=3.12\",  // Optional\n      \"--directory\", \"/absolute/path/to/mcp_snowflake_server\",\n      \"run\", \"mcp_snowflake_server\"\n      // Optionally: \"--allow_write\"\n      // Optionally: \"--log_dir\", \"/absolute/path/to/logs\"\n      // Optionally: \"--log_level\", \"DEBUG\"/\"INFO\"/\"WARNING\"/\"ERROR\"/\"CRITICAL\"\n      // Optionally: \"--exclude_tools\", \"{tool_name}\", [\"{other_tool_name}\"]\n    ]\n  }\n}\n```\n\n#### TOML Configuration (Recommended)\n\n```json\n\"mcpServers\": {\n  \"snowflake_local\": {\n    \"command\": \"/absolute/path/to/uv\",\n    \"args\": [\n      \"--python=3.12\",\n      \"--directory\", \"/absolute/path/to/mcp_snowflake_server\",\n      \"run\", \"mcp_snowflake_server\",\n      \"--connections-file\", \"/absolute/path/to/snowflake_connections.toml\",\n      \"--connection-name\", \"development\"\n      // Optionally: \"--allow_write\"\n      // Optionally: \"--log_dir\", \"/absolute/path/to/logs\"\n      // Optionally: \"--log_level\", \"DEBUG\"/\"INFO\"/\"WARNING\"/\"ERROR\"/\"CRITICAL\"\n      // Optionally: \"--exclude_tools\", \"{tool_name}\", [\"{other_tool_name}\"]\n    ]\n  }\n}\n```\n\n---\n\n## Notes\n\n- By default, **write operations are disabled**. Enable them explicitly with `--allow-write`.\n- The server supports filtering out specific databases, schemas, or tables via exclusion patterns.\n- The server exposes additional per-table context resources if prefetching is enabled.\n- The `append_insight` tool updates the `memo://insights` resource dynamically.\n\n---\n\n## License\n\nMIT\n"}