{"id":23285259,"url":"https://github.com/isaacwasserman/mcp-snowflake-server","last_synced_at":"2025-12-30T00:19:24.876Z","repository":{"id":268021107,"uuid":"903050511","full_name":"isaacwasserman/mcp-snowflake-server","owner":"isaacwasserman","description":null,"archived":false,"fork":false,"pushed_at":"2024-12-13T20:48:11.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-13T21:23:14.376Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/isaacwasserman.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-12-13T20:30:59.000Z","updated_at":"2024-12-13T20:47:17.000Z","dependencies_parsed_at":"2024-12-13T21:33:19.377Z","dependency_job_id":null,"html_url":"https://github.com/isaacwasserman/mcp-snowflake-server","commit_stats":null,"previous_names":["isaacwasserman/mcp-snowflake-server"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaacwasserman%2Fmcp-snowflake-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaacwasserman%2Fmcp-snowflake-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaacwasserman%2Fmcp-snowflake-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/isaacwasserman%2Fmcp-snowflake-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/isaacwasserman","download_url":"https://codeload.github.com/isaacwasserman/mcp-snowflake-server/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230523744,"owners_count":18239441,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-12-20T02:00:27.754Z","updated_at":"2025-12-30T00:19:24.808Z","avatar_url":"https://github.com/isaacwasserman.png","language":"Python","funding_links":[],"categories":["👥 Community Contributions","Databases","Database \u0026 Messaging MCP Servers","Cloud Services","📚 Projects (1974 total)","Community Servers","MCP 服务器精选列表","پیاده‌سازی‌های سرور","🗄️ Database","🗄️ \u003ca name=\"databases\"\u003e\u003c/a\u003eDatabases","Legend","MCP Servers","Uncategorized","🗄️ Databases","Table of Contents","🗂️ Extensions by Category","Data \u0026 Analytics"],"sub_categories":["Database Integrations","Analytics \u0026 Warehouses","MCP Servers","🗄️ 数据库交互","🗄️ \u003ca name=\"databases\"\u003e\u003c/a\u003eپایگاه‌های داده","🗄️ \u003ca name=\"databases\"\u003e\u003c/a\u003eDatabases","🗄️ Databases","How to Submit","Uncategorized","Databases"],"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 \u003c=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","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaacwasserman%2Fmcp-snowflake-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fisaacwasserman%2Fmcp-snowflake-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fisaacwasserman%2Fmcp-snowflake-server/lists"}